2015-01-08 2 views
-1

Предполагая, что у нас есть четыре 16-ядерных узла (node1, node2, node3, node4). Как я могу запустить большую параллельную программу на узле1,2,3 одновременно? Или даже используя 16 ядер во всех, однако выделяемых как 7cores в node1 + 8cores в node2 + 1core в node3 (другая часть занята)?
MPI общий способ? Нужно ли openmp? Я не изучил MPI, но использовал openmp в одном узле.Может ли OpenMP распараллелить код для работы на нескольких узлах?

+2

Это, конечно, не единственный способ. Например, Erlang, Oz и многие другие языки имеют свой собственный способ распределения заданий, а PVM - это еще одна библиотека, которая обычно сравнивается с MPI. Но если вы находитесь на C или Fortran, MPI - довольно хороший выбор. – Amadan

+0

Возможный дубликат программы OpenMP на разных хостах (http://stackoverflow.com/questions/13475838/openmp-program-on-different-hosts) –

ответ

1

При необходимости вы можете использовать комбинацию OpenMP и MPI. Хотя MPI использует каждое ядро ​​на каждом узле и оптимизирован для использования локальности ссылки, когда выясняется, что его другие задачи находятся на одной машине, база кода должна сильно измениться, если она уже была разработана. Пошаговое параллелирование кода рекомендуется с помощью OpenMP, поэтому вы можете захотеть организовать гибрид, где каждая задача MPI использует ядра с использованием OpenMP. Количество узлов = количество задач MPI количество ядер на машины = количество задач OpenMP на машину

Смежные вопросы