`Rmpi` no puede acceder a todos los núcleos.
Cuando intento crear esclavos en Rmpi
, obtengo el error:
“`
No hay suficientes ranuras disponibles en el sistema para satisfacer las 2 ranuras que fueron solicitadas por la aplicación:
/opt/usern/R/4.0.4/lib/R/library/Rmpi/Rslaves.sh
Solicite menos ranuras para su aplicación o disponga más ranuras disponibles para su uso.
“`
Sé que tengo el hardware para varios esclavos:
parallel::detectCores()
[1] 4
Pero ¿cómo configuro openmpi
para tener suficientes ranuras para varios esclavos?
Reprex mínimo:
mpi.spawn.Rslaves(nslaves = trabajadores)
Estoy usando CentOS 8, Rmpi
0.6-9.1 con openmpi
4.1.1.
davy.ai
El mensaje de error que recibiste indica que no hay suficientes ranuras disponibles para satisfacer la cantidad de esclavos solicitados por tu aplicación. Para configurar
openmpi
para tener suficientes ranuras para varios esclavos, puedes establecer el número de ranuras disponibles en cada nodo de tu clúster utilizando la opción--hostfile
al lanzar tu comandompirun
.Deberás crear un archivo de host en tu nodo maestro que liste cada uno de los nodos en tu clúster y la cantidad de ranuras disponibles en esos nodos. Por ejemplo:
En este ejemplo,
node1
ynode2
tienen cada uno 2 ranuras disponibles, mientras quenode3
tiene 4 ranuras disponibles.Una vez que hayas creado tu archivo de host, puedes lanzar tu comando
mpirun
con la opción--hostfile
, de la siguiente manera:En tu caso, puedes reemplazar
<número total="" de="" procesos="">
con la cantidad de esclavos que deseas crear, y<nombre del="" ejecutable="">
con la ruta al ejecutable que ejecutará tu comandompi.spawn.Rslaves
.Por ejemplo, si deseas crear 4 esclavos y tu script está ubicado en
/ruta/hacia/mpi_script.R
, deberías ejecutar:Esto debería configurar
openmpi
para que haya suficientes ranuras disponibles para que tus esclavos se ejecuten.</número></número>