`Rmpi` не удается получить доступ ко всем ядрам

#r #mpi #openmpi

#r #mpi #openmpi

Вопрос:

При попытке запустить подчиненные Rmpi устройства я получаю сообщение об ошибке

 --------------------------------------------------------------------------
There are not enough slots available in the system to satisfy the 2
slots that were requested by the application:

  /opt/usern/R/4.0.4/lib/R/library/Rmpi/Rslaves.sh

Either request fewer slots for your application, or make more slots
available for use.
 

Я знаю, что у меня есть оборудование для нескольких подчиненных устройств:

 > parallel::detectCores()
[1] 4
 

Но как мне настроить openmpi достаточное количество слотов для нескольких подчиненных устройств?

Минимальный reprex:

mpi.spawn.Rslaves(nslaves = workers)

Я использую CentOS 8, Rmpi 0.6-9.1 с openmpi 4.1.1.

Комментарии:

1. Как политически некорректно. Был ли R написан в 18 веке?

2. @VictorEijkhout Rmpi — это внесенный пакет, за него отвечает его сопровождающий, а не R. И главный вопрос, похоже, звучит так: «Но как мне настроить openmpi так, чтобы в нем было достаточно слотов для нескольких подчиненных устройств?»

3. @VictorEijkhout Это терминология MPI. И что касается истории информатики, MPI действительно был написан примерно в 18 веке. Возможно, терминология будет изменена в какой-то момент.

4. @KonradRudolph MPI уже давно вычищает такую терминологию. Возможно, R, наконец, тоже войдет в 20-й век. Кроме того, MPI не основан на модели master / worker, поэтому я сомневаюсь, что этот стандарт MPI часто использовал этот термин, если вообще использовал.

5. parallel::detectCores() обнаруживает ли ядра или гиперпотоки? В Open MPI по умолчанию slot == core . Вы можете иметь slot == hyperthread mpirun --use-hwthread-cpus ... или иметь неограниченные слоты (вам решать, чтобы не создавать слишком много задач для оптимизации ресурсов) с mpirun --oversubscribe ...