Nouveau dans

Rendre Stata plus rapide

Stata valorise la précision et la rapidité. Il y a souvent un compromis entre les deux, mais Stata s’efforce de donner aux utilisateurs le meilleur des deux mondes. Nous optimisons et améliorons continuellement nos routines pour tirer parti de la puissance de calcul et des algorithmes modernes afin que Stata fonctionne encore plus rapidement..
Dans Stata 17, nous avons mis à jour les algorithmes derrière le tri et la réduction pour rendre ces commandes plus rapides. Beaucoup plus rapide. Comme la commande sort est utilisée par de nombreuses autres commandes Stata, ces commandes sont également plus rapides. sort est quelque part entre 1,5 et 6 fois plus rapide, comme le montre le tableau 1 ci-dessous. Par exemple, avec 10 millions d’observations et 20 variables, le temps est passé de presque 20 secondes dans Stata/SE 16 à presque 3 secondes dans Stata/SE 17 !

Garder le score

    • le tri est beaucoup plus rapide.
    • l’effondrement est beaucoup plus rapide.
    • Les fonctions et opérateurs Mata supportés par MKL sont plus rapides.
    • Les modèles mixtes sont plus rapides.

import delimited est maintenant parallélisé dans Stata/M.

Table 1: Stata 17 versus Stata 16 timings in seconds for 20 variables and different observation numbers and edition combinations
  Mean timings in seconds
Observations and edition Stata 17 Stata 16 Speedup
10,000  
SE 0.08 0.35 4.42
MP4 0.07 0.14 2.02
MP8 0.06 0.10 1.79
100,000  
SE 0.14 0.54 3.75
MP4 0.10 0.23 2.36
MP8 0.08 0.16 1.97
1,000,000  
SE 0.25 0.77 3.14
MP4 0.16 0.44 2.83
MP8 0.14 0.32 2.54
10,000,000  
SE 3.34 19.76 5.92
MP4 2.06 6.90 3.35
MP8 1.89 5.50 2.91
Timings run in Windows 10 on a computer with an i9-9900KS processor at 4.00GHz and 64GB RAM

La commande collapse crée un ensemble de données de statistiques récapitulatives et est l’une des commandes de gestion des données les plus utilisées. Plus la taille des données augmente, plus le temps d’exécution augmente nécessairement. Dans Stata 17, en fonction de la taille de l’ensemble de données, la commande collapse permet des accélérations de 6 à 13 fois pour le calcul d’une moyenne simple et de 40 à 70 fois pour le calcul de statistiques telles que les médianes et les écarts types. Le tableau 2 montre les résultats de la réduction d’un ensemble de données avec 10 000 000 d’observations et différents nombres de variables réduites pour le cas où nous calculons les médianes et les écarts types..

Table 2: Stata 17 versus Stata 16 timings in seconds for 10,000,000 observations for different variable number and edition combinations
Variables and edition Stata 17 Stata 16 Speedup
10  
SE .3412143 13.96871 40.96581
MP4 .23 16.39493 71.29675
MP8 .2091429 13.41664 64.17162
100  
SE .3068571 13.86514 45.1849d
MP4 .2205714 16.06886 72.86166
MP8 .196 13.41314 68.43816
1,000  
SE .3437143 13.994 40.73298
MP4 .2277143 16.34614 71.79339
MP8 .2117143 13.39286 63.26852
10,000  
SE .3392857 13.92886 41.09007
MP4 .2287143 16.149 70.61243
MP8 .207 13.36543 64.58582
100,000  
SE .3177143 13.97943 44.03442
MP4 .224 16.22057 72.43024
MP8 .1944286 13.38586 68.85059
Timings run in Windows 10 on a computer with an i9-9900KS processor at 4.00GHz and 64GB RAM

Pour Stata 17, nous avons également obtenu des améliorations de vitesse pour l’estimation. Le paquet d’algèbre linéaire (LAPACK) qui sous-tend de nombreuses fonctions et opérateurs de Mata est désormais optimisé par la bibliothèque Intel Math Kernel Library (MKL). La nouvelle MKL est-elle beaucoup plus rapide ? La multiplication d’une matrice réelle de 5 000 par 5 000 dans Stata/SE avec une matrice réelle de même dimension prend environ 13 secondes avec MKL dans Stata 17, contre 70 secondes dans Stata 16.
Temps de multiplication de deux matrices réelles en secondes :

Edition Size MKL non-MKL
MP8 5,000 by 5,000 2.55 10.26
MP8 10,000 by 10,000 17.28 85.60
   
MP4 5,000 by 5,000 3.62 15.95
MP4 10,000 by 10,000 28.22 127.24
   
SE 5,000 by 5,000 13.64 70.61
SE 10,000 by 10,000 108.33 566.99
Timings run in Windows 10 on a computer with an i9-9900KS processor at 4.00GHz and 64GB RAM

Timing of cholesky() in seconds:

Edition Size MKL non-MKL
MP8 5,000 by 5,000 0.42 16.69
MP8 10,000 by 10,000 2.91 133.60
   
MP4 5,000 by 5,000 0.69 16.69
MP4 10,000 by 10,000 5.03 133.70
   
SE 5,000 by 5,000 2.41 18.62
SE 10,000 by 10,000 16.66 133.63
Timings run in Windows 10 on a computer with an i9-9900KS processor at 4.00GHz and 64GB RAM

LAPACK est utilisé dans les calculs de nombreuses commandes d’estimation, ce qui les rend automatiquement plus rapides..
La commande import delimited pour importer des données à partir de CSV et d’autres fichiers texte délimités est maintenant parallélisée dans Stata/MP. Elle importe les grands ensembles de données jusqu’à quatre fois plus vite dans Stata 17.
Enfin, la commande mixed pour l’ajustement des modèles à effets mixtes multiniveaux est plus rapide. Selon nos calculs, les modèles avec 10 000 panels, 10 périodes de temps et 5 paramètres de pente aléatoires s’exécutent 2 à 3 fois plus vite dans Stata 17 que dans Stata 16. Des améliorations de vitesse similaires ont été constatées pour différents nombres de panels, de périodes et de coefficients de pente.
Nous recherchons continuellement des moyens de rendre Stata plus rapide. Nous étudions, codons et testons activement de nouveaux algorithmes dans la gestion des données et les routines d’estimation, et nous vous tiendrons informés des derniers développements.

Références

Hunter, J. D. 2007. Matplotlib: A 2D Graphics Environment. Computing in Science & Engineering 9: 90–95.
McDowell, A., A. Engel, J. T. Massey, and K. Maurer. 1981. Plan and operation of the Second National Health and Nutrition Examination Survey, 1976–1980. Vital and Health Statistics 1(15): 1–144.
Mckinney, W. 2010. Data Structures for Statistical Computing in Python. Proceedings of the 9th Python in Science Conference, 56–61. (publisher link).
Oliphant, T. E. 2006. A Guide to NumPy, 2nd ed. Austin, TX: Continuum Press.
Péz, F., and B. E. Granger. 2007. IPython: A System for Interactive Scientific Computing, Computing in Science and Engineering 9: 21–29. DOI:10.1109/MCSE.2007.53 (publisher link)