2016-07-06 21 views
0

Sous Linux, je vois deux approches pour exécuter des applications multicœurs. Supposons qu'un programme utilise 2 cœurs. Avec la première approche, en utilisant top, je vois deux processus et chaque chaque noyau est de 100% ont reçu desUtilisation de plusieurs cœurs dans une application multicœur/multithread

22213 mahmood 20 0 1951m 180m 21m R 101.4 0.3 575:58.46 fluent_mpi.17.0 
22214 mahmood 20 0 660m 167m 22m R 101.2 0.3 365:54.85 fluent_mpi.17.0 

avec la seconde approche, je vois une procédure, mais l'utilisation est de 200%.

23286 mahmood 20 0 17.3g 13g 6776 R 203.2 21.5 17200:56 l1002.exe 

Quelle est la différence entre ces deux approches? Est-il possible de changer la deuxième approche pour qu'elle soit similaire à la première approche?

Répondre

1

La deuxième approche, comme vous l'appelez, utilise plusieurs threads. Les threads sont affichés en haut dans le même processus, de sorte que le processus est considéré comme consommant 200% du temps CPU.

En appuyant sur "H" en haut vous verrez les threads, par opposition aux processus. Cela devrait vous permettre de voir l'affichage que vous recherchez.

+0

OK, merci beaucoup. Le problème est que dans la deuxième approche, le couple (gestionnaire de travaux PBS) comprendre que comme un travail avec un noyau! Cependant, il faut comprendre que deux noyaux sont occupés. Actuellement, il pensera à tort aux cœurs libres. – mahmood

+0

Ensuite, votre gestionnaire de travaux a un bug. Les threads multiples sont une manière très commune d'utiliser plus d'un noyau. –