Myriad Blog 1.3.0 Wednesday, Jun 20th, 2018 at 07:44pm 

Wednesday, Nov 21st, 2012 at 04:59pm
Multiprocesseur et multicoeur

 
 
Tous les ordinateurs "modernes" sont équipés de processeurs multi-coeur, c'est-à-dire capables d'effectuer plusieurs opérations distinctes en même temps, en parallèle.
 
Dans le cadre de la programmation séquentielle (non parallèle) que nous utilisons, lorsqu'une tâche lourde est demandée à un programme, par exemple une boucle de calcul, un seul coeur est mobilisé pour cette opération. C'est ainsi qu' une telle tâche, occupera un ancien processeur (monocoeur) à 100%, mais cette tâche n'occupera pas plus de 10 à 15% d'un processeur à 8 coeurs.
 
Nous avons donc cherché un moyen d'utiliser plus de puissance de calcul, et donc mobiliser plusieurs coeurs pour écourter les temps d'attente de l'utilisateur.
Cela pourrait être utile par exemple dans PDFtoMusic, où le traitement de gros fichiers peut s'avérer assez long.
 
En cherchant un peu, nous avons découvert que notre compilateur C pour Windows (Visual C++) supportait OpenMP, qui permet de spécifier les portions de code pouvant être exécutées en parallèle sur plusieurs coeurs.
 
Nos premiers essais ont montré que ça fonctionnait. Il nous faut maintenant trouver les boucles pouvant être "parallélisées". En effet, plusieurs itérations de la boucle étant réalisées en même temps, on ne peut plus compter sur le résultat de l'itération précédente pour compléter la suivante. Seuls certains calculs très particuliers peuvent donc être modifiés en ce sens.
 
OpenMP existant également sur Linux (gcc), nous avons bon espoir de pouvoir l'utiliser sur Macintosh (XCode).
by Olivier Guillion
Comments

Comment from Sylvain Thursday, Nov 22nd, 2012 at 07:18pm
threads
Le fait de créer simplement 2 threads différents pour 2 calculs (ça doit bien exister sur C "naturellement"!) ne va pas utiliser 2 processeurs différents ?


Most recent first
Oldest first

Top of page
Legal information Last update:  (c) Myriad