Я хочу выполнить распределенные параллельные вычисления с кластером, к которому у меня есть доступ: 5 узлов («компьютеров»); каждый узел имеет два процессора («ЦП»), и каждый процессор имеет 18 ядер.
Итак, количество потоков, которое я мог бы использовать при досадно параллельном вычислении, равно 180 (5 * 2 * 18).
Я обнаружил, что не могу использовать стандартные параллельные функции R для кластера. Вместо этого мне нужно использовать MPI. doMPI кажется идеальным для этой задачи, поскольку он реализует foreach для MPI, как описано в виньетке:
https://cran.r-project.org/web/packages/doMPI/vignettes/doMPI.pdf
У меня вопрос по MPI: когда пишут, например:
cl ‹- startMPIcluster (count = 2)
что это 2 означает? Количество используемых узлов в кластере? Количество используемых ядер?
Если 2 представляет количество используемых узлов, сможет ли doMPI использовать 2 процессора и 2 * 18 ядер, которые находятся в каждом узле? Или мне нужно сказать doMPI что-то еще, например, что я могу использовать эти 36 ядер?
Если 2 представляет количество ядер, то все кажется проще. Но этот выбор был бы странным, потому что, если кластер на самом деле больше 5 узлов (а мне было выделено 5 узлов пропорционально квоте), нет четкого рецепта, следует ли doMPI использовать как можно меньше узлов (и все ядра в этом узле) или используйте как можно больше узлов (и как можно меньше ядер в этом узле).
Итак, мой вопрос:
Если я хочу выполнить цикл из 180 невероятно параллельных задач (или 360, или 1800), следует ли мне использовать cl ‹- startMPIcluster (count = 5) или cl‹ - startMPIcluster (count = 180) или что-то еще, например, 180 имеющиеся ядра используются?
Спасибо за помощь.