Combinando gnu paralelo y mpirun: ¿cómo cuidar el número máximo de núcleos?

Combinando gnu paralelo y mpirun: ¿cómo cuidar el número máximo de núcleos?

Tengo una máquina con 32 núcleos donde quiero ejecutar algunos trabajos mpi con un número variable de núcleos (esto se debe a que el problema lo requiere). ¿Hay alguna manera de hacer que gnu paralelo sea consciente de la cantidad de trabajos mpi para administrar cuándo iniciar cada trabajo?

Ejemplo: digamos que tengo que iniciar muchos (200) trabajos con la siguiente cantidad de trabajos mpi:

NMPI=(2 2 2 4 4 4 4 6 7 10 12 24 32)

Por lo tanto, inicialmente solo quiero ejecutar los primeros 8 elementos de la matriz (ya que su suma total es menor que el número total de núcleos, 32), y luego ejecutar secuencialmente cada uno de los trabajos gradualmente tan pronto como cada uno de los primeros esté terminado. sin superar el límite de 32 trabajos mpi simultáneos totales. Por ejemplo, supongamos que los primeros 8 procesos se estaban ejecutando y el primero acaba de finalizar (para el primer NMPI[0] == 2). Entonces, en paralelo no debería ejecutar nada nuevo hasta que haya suficientes procesadores libres, ya que el siguiente trabajo tiene NMPI[8]==7 y, por lo tanto, superará el límite máximo de 32 núcleos. ¿O hay alguna manera de que el paralelo mejore el lanzamiento del trabajo, como lanzar primero el último trabajo mpi (32 núcleos), luego el último menos uno más los tres primeros y así sucesivamente?

Gracias de antemano por su orientación

Respuesta1

Invierta el orden de la matriz, comenzando primero con el trabajo más grande.

¿Quizás pueda usarlo --load 100%y --delay 10sentonces esté seguro de que el trabajo usa todos los núcleos antes de comenzar el siguiente?

información relacionada