2016-07-06 4 views
0

В Linux я вижу два подхода для запуска многоядерных приложений. Предположим, что программа использует 2 ядра. При первом подходе, с помощью top, я вижу два процесса, и каждый каждый сердечник 100% используютсяИспользование нескольких ядер в многоядерном/многопоточном приложении

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 

При втором подходе, я вижу один процесс, но использование составляет 200%.

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

В чем разница между этими двумя подходами? Можно ли изменить второй подход, который будет рассматриваться аналогично первому подходу?

ответ

1

Второй подход, как вы его называете, использует несколько потоков. В этом же процессе потоки отображаются сверху, поэтому процесс рассматривается как потребляющий 200% времени процессора.

Нажатие кнопки «H» вверху покажет вам потоки, в отличие от процессов. Это должно позволить вам увидеть отображаемый экран.

+0

OK спасибо большое. Проблема в том, что во втором подходе крутящий момент (менеджер заданий PBS) понимает, что как одно задание с одним ядром! Однако он должен понимать, что на самом деле заняты два ядра. В настоящее время он будет ошибочно думать о свободных ядрах. – mahmood

+0

Тогда у вашего менеджера заданий есть ошибка. Несколько потоков - это очень распространенный способ использования нескольких ядер. –