es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

`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.

Tags:  , ,

Answer

  1. Avatar for 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 comando mpirun.

    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:

    node1 slots=2
    node2 slots=2
    node3 slots=4
    

    En este ejemplo, node1 y node2 tienen cada uno 2 ranuras disponibles, mientras que node3 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:

    mpirun --hostfile mi_archivo_host -np <número total="" de="" procesos=""> <nombre del="" ejecutable="">
    

    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 comando mpi.spawn.Rslaves.

    Por ejemplo, si deseas crear 4 esclavos y tu script está ubicado en /ruta/hacia/mpi_script.R, deberías ejecutar:

    mpirun --hostfile mi_archivo_host -np 4 Rscript /ruta/hacia/mpi_script.R
    

    Esto debería configurar openmpi para que haya suficientes ranuras disponibles para que tus esclavos se ejecuten.</número></número>

Comments are closed.