Performance MATLAB
Optimiser les performances de votre code MATLAB
Optimiser les performances de votre code MATLAB
Le moteur d'exécution de MATLAB®, introduit dans la version R2015a, utilise la compilation JIT pour accélérer le code MATLAB dans son ensemble. La compilation JIT génère du code natif au niveau de la machine qui est optimisé pour votre code MATLAB et pour du hardware spécifique. L'architecture du moteur d'exécution permet d'effectuer davantage d'optimisations à chaque version, notamment des appels plus rapides aux fonctions prédéfinies ainsi que des opérations d'indexation plus rapides. En outre, un grand nombre de fonctions principales de MATLAB sont implicitement multithreadées pour de meilleures performances.
Les performances de MATLAB sont mesurées à l'aide d'une série de références qui couvrent à la fois les opérations unitaires et les applications complètes représentant les workflows réels des utilisateurs. Ces références sont utilisées plusieurs fois pendant le cycle de développement d'une nouvelle version de MATLAB sur du hardware et des systèmes d'exploitation différents, pour valider les nouvelles optimisations, détecter et résoudre les baisses de performances et identifier les problèmes spécifiques à un système d'exploitation.
Vous pouvez en apprendre davantage sur les améliorations de performances spécifiques dans les notes de version de MATLAB. Depuis la version R2019b, les notes de version sur les performances de MATLAB incluent les améliorations mesurées en temps d'exécution et comparées avec les versions précédentes de MATLAB.
La première étape de l'amélioration de votre code MATLAB est l'identification des goulots d'étranglement. Par exemple, vous pouvez :
tic
, toc
et timeit
Utiliser MATLAB Profiler pour voir quelles parties de votre programme prennent le plus de temps à s'exécuter.Une fois que vous avez identifié les goulots d'étranglement dans votre code, des pratiques connues de programmation peuvent souvent vous permettre de rendre votre code plus rapide. Deux des techniques les plus communément utilisées sont la pré-allocation des tableaux et la vectorisation. La pré-allocation peut améliorer les performances en évitant l'allocation dynamique de la mémoire. La vectorisation vous permet d'éviter les boucles en effectuant un traitement sur tous les éléments d'un vecteur en une seule commande. Ensemble, ces techniques peuvent grandement accélérer votre code.
Si nécessaire, vous pouvez augmenter les performances en écrivant des parties de votre application demandant une grande puissance de calcul dans un langage compilé. Dans MATLAB, les fonctions MEX vous permettent d'appeler du code haute performance en C, C++ ou Fortran comme pour les fonctions MATLAB prédéfinies. Avec MATLAB Coder™, vous pouvez convertir automatiquement votre code MATLAB en fichiers MEX, qui peuvent être exécutés plus vite.
Vous pouvez résoudre des problèmes qui nécessitent beaucoup de calculs ou de données en utilisant le calcul parallèle afin de tirer parti de toutes vos ressources hardware. Vous pouvez exploiter la fonctionnalité d'évoluer vers de multiples processus, de multiples threads et GPU, le tout avec la familiarité et la facilité d'utilisation de MATLAB. Vous pouvez développer et exécuter le code sur une seule machine, ou faire évoluer votre exécution vers un cluster de calcul ou dans le cloud sans avoir besoin de coder à nouveau.