DoMPI и узлы, процессоры и ядра - PullRequest
0 голосов
/ 29 сентября 2018

Я хочу выполнить распределенное параллельное вычисление с кластером, к которому у меня есть доступ: 5 узлов («компьютеров»);каждый узел имеет два процессора («CPU»), а каждый процессор имеет 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) </p>

что означают эти 2?Количество узлов в кластере, которые будут использоваться?Количество ядер, которые будут использоваться?

Если 2 представляет количество используемых узлов, сможет ли doMPI использовать 2 процессора и 2 * 18 ядер, которые находятся в каждом узле?Или я должен сказать doMPI что-то еще, например, чтобы я мог использовать эти 36 ядер?

Если 2 представляет количество ядер, то все кажется проще.Но этот выбор был бы странным, потому что, если кластер на самом деле больше 5 узлов (и мне было выделено 5 узлов на пропорциональную квоту), нет четкого рецепта, если doMPI должен использовать как можно меньше узлов (ивсе ядра в этом узле) или использовать как можно больше узлов (и как можно меньше ядер в этом узле).

Итак, мой вопрос:

Если я хочу сделатьцикл из 180 смущающе параллельных задач (или 360, или 1800), я должен использовать cl <- startMPIcluster (count = 5) или cl <- startMPIcluster (count = 180) или что-то еще, такое, что используются 180 доступных ядер?</p>

Спасибо за помощь.

1 Ответ

0 голосов
/ 29 сентября 2018

Параметр count - это «количество рабочих, которые должны появиться».Если вы хотите использовать все 180 ядер в вашем кластере, у вас есть два основных варианта:

  1. Использовать startMPIcluster(count=180).Это приведет к 180 процессам.
  2. Использование mpirun -np 180 R myscript.r.Это запустит 180 экземпляров R с MPI, настроенным с самого начала, а именно, «размер» MPI будет равен 180, а «ранг» процессов будет от 0 до 179.

Любой из нихварианты в порядке.Вы также можете смешивать их, например, mpirun -np 10, затем вызывать каждую работу с count=15 или чем-то еще.Но, учитывая то, что вы сказали нам до сих пор, я бы сказал, что вам следует придерживаться более простых подходов, описанных выше.

Как общее примечание, всякий раз, когда MPI говорит о количестве процессов, рабочих или рабочих мест, один из нихвыполнен на одном ядре.Обычно количество узлов или сокетов на узел - это не первое, о чем вам нужно беспокоиться (о них стоит подумать позже при оптимизации).

...