Multithreading MATLAB
Le multithreading dans le calcul scientifique consiste à exécuter plusieurs threads simultanément au sein d’un même processus afin d’améliorer l’efficacité des calculs et l’utilisation des ressources. Avec le multithreading, les tâches peuvent être divisées et exécutées en parallèle sur plusieurs cœurs CPU, ce qui améliore les performances des applications exigeantes en ressources de calcul. Cette approche peut conduire à des temps d’exécution plus rapides, en particulier pour les opérations pouvant être parallélisées, comme les calculs matriciels, les transformées de Fourier et le traitement d’images. Cependant, elle nécessite également une gestion rigoureuse des ressources partagées pour éviter les conditions de concurrence, les deadlocks et autres problèmes.
L’utilisation du multithreading dans MATLAB est simple. MATLAB® et Simulink® vous permettent d'exploiter des ordinateurs multicœurs et multiprocesseurs de deux manières : le multithreading embarqué dans MATLAB et le parallélisme explicite via les fonctions de Parallel Computing Toolbox™. Vous pouvez ainsi exécuter vos applications MATLAB et vos modèles Simulink plus rapidement et plus efficacement en exploitant toute la puissance de calcul de votre machine.
Comparaison du multithreading implicite et explicite de MATLAB et du traitement en série.
Multithreading MATLAB intégré
La fonctionnalité de multithreading intégrée de MATLAB parallélise automatiquement les calculs en utilisant des bibliothèques sous-jacentes lors de l’exécution, ce qui entraîne des améliorations de performance significatives pour de nombreuses fonctions, notamment les fonctions d’algèbre linéaire et les fonctions numériques telles que fft, eig, mldivide, svd et sort. Comme MATLAB gère cela de manière implicite, vous n’avez pas besoin de l’activer manuellement. Si vous souhaitez contrôler le nombre de threads de calcul, vous pouvez utiliser la fonction maxNumCompThreads.
De manière similaire, Simulink propose des fonctionnalités prédéfinies pour le multithreading au niveau des sous-systèmes, de la cosimulation et du flux de données. Lorsque cela est approprié, Simulink prépare tous les modèles et blocs éligibles pour une exécution sur plusieurs threads. Lorsque Simulink détecte que les performances peuvent être améliorées, il exécute automatiquement les modèles éligibles en utilisant plusieurs threads, ce qui se traduit par des temps d’exécution plus rapides.
Parallélisme explicite utilisant les workers MATLAB
Parallel Computing Toolbox propose des fonctions pour créer et utiliser des pools parallèles, vous permettant d’exploiter des ressources matérielles supplémentaires via des threads et des processus afin d’améliorer les performances de votre application et de réduire le temps nécessaire pour obtenir des résultats. Vous pouvez exploiter des pools parallèles dans MATLAB et Simulink en recourant aux boucles for parallèles (parfor), aux files d’attente parallèles (parfeval), à l’exécution parallèle d’un même programme avec plusieurs jeux de données (spmd), aux simulations parallèles Simulink (parsim), ainsi qu’à d’autres fonctionnalités de programmation parallèle.
Un nombre croissant de fonctions et de fonctionnalités pour MATLAB et Simulink vous permettent d'exploiter des ressources de calcul parallèle sans nécessiter de code supplémentaire. Par exemple, dans Simulink, vous pouvez facilement activer la prise en charge du parallélisme dans certaines interfaces en définissant simplement des marqueurs ou des préférences.
Pool parallèle basé sur les threads
Les pools parallèles basés sur les threads permettent d'exécuter des calculs en parallèle et de les répartir entre plusieurs threads au sein d’un même processus MATLAB. Ces pools présentent un faible délai de communication et offrent un accès partagé à la mémoire, mais leur utilisation est limitée aux calculs effectués sur une seule machine. Avec MATLAB, vous pouvez activer un seul worker basé sur des threads supplémentaire via backgroundPool, tandis que Parallel Computing Toolbox vous permet d’utiliser plusieurs workers basés sur des threads grâce à parpool("Threads").
Pool parallèle basé sur les processus
Parallel Computing Toolbox vous permet également d’exécuter des applications MATLAB en parallèle en utilisant plusieurs processus de worker (moteurs de calcul) sur une machine locale ou sur un cluster distant. Par défaut, ces workers basés sur des processus sont monothread pour le calcul.
Contrairement au multithreading, le parallélisme explicite fourni par un pool parallèle basé sur des processus vous permet de faire évoluer vos applications parallèles utilisant des workers MATLAB au-delà d’une seule machine, en exploitant des clusters de calcul compatibles avec MATLAB Parallel Server™.
Exemples et démonstrations
Références logicielles
Voir aussi: calcul parallèle, calcul sur GPU