https://www.acsysteme.com/wp-content/uploads/2021/08/saga2021-SSu-6-scope2.png

S01E07 : La parallélisation sous Simulink par Sébastien SALIOU

La vidéo What’s New in MATLAB and Simulink R2021a de la conférence Matlab Expo 2021 évoquait des nouveautés au niveau des capacités de parallélisation de Simulink. Cette annonce était l’occasion pour Acsystème de vous faire un rappel des principales possibilités de parallélisation dans Simulink afin d’accélérer vos simulations. Une 1ère approche consiste à paralléliser les différentes simulations d’un ensemble de simulations réalisées dans le cadre d’une étude de sensibilité par exemple. La 2nde approche (celle évoquée à la Matlab Expo) consiste à paralléliser les calculs au sein d’un modèle Simulink. Quelle sera la vôtre ?

Approche 1 : paralléliser les simulations

Sous condition de disposer de la Parallel Computing Toolbox, il est relativement simple de paralléliser une série de simulations tant que le résultat d’une simulation n’impacte pas les suivantes. C’est notamment le cas lors d’une étude de sensibilité qui consisterait à simuler un même modèle pour plusieurs valeurs différentes d’un ou plusieurs paramètres. Pour se faire on va s’appuyer sur l’instruction parfor ou sur la fonction parsim.

La vidéo ci-dessous illustre la transformation d’une boucle for par une boucle parfor et le gain obtenu au niveau du temps de simulation (de 16,79s à 10,32s)

Plus d’infos sur la parallélisation par l’instruction parfor ici.

 

La vidéo ci-dessous illustre la transformation d’une boucle for par l’utilisation de la fonction parsim. La syntaxe est assez différente mais cette méthode est celle préconisée par Mathworks pour paralléliser un grand nombre de simulations. À noter que l’utilisation de la fonction parsim donne accès à une interface graphique, le Simulation Manager, pour visualiser les détails de chaque simulation. Le Simulation Manager permet également de faire appel au Simulation Data Inspector pour comparer les résultats des différentes simulations. Ronan Blanchard évoque ce dernier outil dans l’épisode 6 de notre saga.

Dans l’exemple utilisé pour créer cette vidéo, on observe très peu de gain au niveau du temps de simulation (de 26,12s à 25,44s). Cela s’explique par le peu d’itérations et la simplicité du modèle utilisé pour cette démonstration.

Plus d’infos sur la parallélisation par la fonction parsim ici.

La figure suivante illustre une comparaison des temps de calcul pour les 3 méthodes (for / parfor / parsim) pour un nombre d’itérations supérieur.

https://www.acsysteme.com/wp-content/uploads/2021/08/Loops_1000simu-750×580.png

Consultez la saga complète

Approche n°2 : paralléliser les calculs au sein d’un modèle

Lors des conférences Matlab Expo 2021, Mathworks annonce la possibilité de paralléliser les calculs au sein d’un modèle Simulink si celui-ci contient des s-functions ou des modèles référencés et que ceux-ci sont parallélisables. La figure ci-dessous illustre les deux types d’exécution pour un modèle de ce type.

https://www.acsysteme.com/wp-content/uploads/2021/08/saga2021-SSu-4-exemple_modele-750×699.png

Mathworks précise bien que cette fonctionnalité est automatique mais elle est limitée à trois types de blocs :

  • Model reference en mode accelerator,
  • S-function,
  • Co-Simulation FMU.

La documentation de Matlab/Simulink présente un exemple qui illustre très bien cette fonctionnalité dans le cas d’un exemple avec des s-functions.

Pour valider cette fonctionnalité dans le cas des modèles référencés, nous avons créé chez Acsystème un exemple similaire à celui cité ci-dessus. Les deux figures ci-dessous illustrent cet exemple.

https://www.acsysteme.com/wp-content/uploads/2021/08/saga2021-SSu-5-scope1.png
https://www.acsysteme.com/wp-content/uploads/2021/08/saga2021-SSu-6-scope2.png

La mise en œuvre de cette fonctionnalité nécessite la prise en compte de plusieurs limitations : modèles référencés utilisés en mode accelerator, pas d’états continus, utilisation d’un solver à pas fixe… Malgré ces limitations (dont certaines seront certainement supprimées dans les prochaines versions de Matlab), cette fonctionnalité reste certainement une bonne approche pour réduire les temps de simulation. Cela nécessite la création de modèles référencés qui est également une bonne technique pour réduire les temps de simulation comme le décrit très bien l’article « réduisez vos temps de simulation Simulink avec le Reference Model » de Marouane BENAZIZ.

Conclusion

Cet article présente deux approches basées sur la parallélisation pour accélérer vos simulations dans Simulink dont la 2ème approche qui est une nouveauté de la release R2021a. Pour information Mathworks propose une série de vidéos intitulées Five Practical Tips to Speed Up Your Simulink Simulations qui évoque d’autres approches à savoir l’utilisation du Performance Advisor, le mode Fast Restart, l’exploitation des différents modes de simulation (Normal, Accelerator et Rapid Accelerator) et l’utilisation des modèles référencés

Consultez la saga complète

Partager cet article :