mpirun -np N, что если N больше моего номера ядра?

Скажем, у меня есть 4-ядерная рабочая станция, что будет делать linux (Ubuntu), если я выполню

mpirun -np 9 XXX

Q1. Будут ли 9 работать сразу вместе или 4 после 4?

Q2. Я полагаю, что использование 9 не годится, потому что оставшаяся часть 1 может запутать компьютер (я не знаю, будет ли он вообще сбит с толку, или «голова» компьютера решит, какое ядро ​​среди Будет использовано 4 ядра?) Или оно будет выбрано случайным образом. Кто решает, какое ядро ​​назвать?

В3. Если я чувствую, что мой процессор не плохой, и мой баран в порядке и достаточно большой, и мой случай не очень большой. Это хорошая идея, чтобы полностью использовать мой процессор и оперативную память, что я делаю mpirun -np 8 XXX или даже mpirun -np 12 XXX.

В4. Кто решает все эти оптимизации эффективности, Ubuntu, или Linux, или материнская плата, или процессор?

Ваше просвещение будет действительно оценено.

5
задан 31 May 2012 в 01:42

3 ответа

Да, вам необходимо значительно изменить код, чтобы превратить его из приложения MPI в приложение OpenMP или TBB. Если ваше приложение уже разработано, попробуйте его и выполните измерения производительности, прежде чем делать что-либо радикальное.

0
ответ дан 31 May 2012 в 01:42

9 немедленно.

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

Если память вашего экземпляра слишком велика, вы можете вручную остановить остальные 5 процессов, пока остальные 4 не завершат работу.

Однако, если вы используете MPI таким образом (только для локального компьютера), позвольте мне порекомендовать вам OpenMP / tbb. MPI действительно предназначен для распространения приложения на несколько сетевых компьютеров или узлов кластера.

0
ответ дан 31 May 2012 в 01:42
  1. 9 будет работать одновременно.
  2. Там нет путаницы для оставшегося 1 процесса; mpirun планирует в порядке круговой очереди по умолчанию, поэтому 1-й ядро ​​/ узел будет назначен этому процессу.
  3. Вы, безусловно, можете увеличить np за пределы количества доступных физических ядер / узлов. Компромисс состоит в том, что издержки увеличиваются с большим числом процессов, чем ядра / узлы. Если ваш код не сильно привязан к процессору (например, требует значительного времени ожидания ввода-вывода), вы должны сделать это. В конечном счете, вы не знаете, будет ли это быстрее, пока вы не попробуете.
  4. MPI выполняет начальное планирование, но для более чем одного процесса на узел или просто в целом (так как в фоновом режиме выполняется также ряд других процессов), планировщик ядра Linux вступает во владение.

См. эту справочную страницу для более подробной информации.

0
ответ дан 31 May 2012 в 01:42

Другие вопросы по тегам:

Похожие вопросы: