bonjour
je dois faire tourner une application assez lourde en temps calcul,
je souhaiterais la parallèliser, mais je n'ai pas le temps pour l'instant,
pour l'instant je me demandais comment tirer partie du fait que je dispose d'une machine biprocesseur, lorsque je lance l'application un seul CPU est utilisé, je voulais introduire plusieurs threads dans cette application pour qu'elle utilise les 2 processeurs en même temps
j'ai fait un programme test assez simple , un programme qui crée des thread et leur fait faire un nombre "n" d'opérations, si je dis que "t" est le nombre de thread, je répartis les "n" opérations sur les t threads, chaque thread a n/t opérations à faire,
je me disais que le temps calcul devait être plus faible lorsque l'on utilise plus d'1 thread,
et bien c'est tout le contraire ! si je fais tourner cette application test avec un thread s'occupant des "n" opérations, le temps calcul est plus court que si je fais tourner cette application avec t thread s'occupant de n/t opérations !!!
tout thread confondu le programme doit pourtant faire le même nombre d'opérations
la seule chose encourageante est que avec 1 thread j'occupe 99% du processeur, et avec plusieurs thread j'occupe 199% du processeur (bi-proc)
est-ce que vous y comprenez qqch ?
est-ce que les thread sont automatiquement répartis sur les différents processeurs pour les bi-proc ?
PS : mon système est linux, Debian, noyau SMP ...
Partager