Combinando gnu paralelo e mpirun: como cuidar do número máximo de núcleos?

Combinando gnu paralelo e mpirun: como cuidar do número máximo de núcleos?

Tenho uma máquina com 32 núcleos onde quero executar alguns trabalhos mpi com um número variável de núcleos (isso ocorre porque o problema exige isso). Existe uma maneira de informar o gnu paralelo sobre o número de trabalhos mpi para gerenciar quando iniciar cada trabalho?

Exemplo: digamos que eu tenha que lançar muitos (200) trabalhos com o seguinte número de trabalhos mpi:

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

Portanto, inicialmente eu quero executar apenas os primeiros 8 elementos do array (já que sua soma total é menor que o número total de núcleos, 32) e, em seguida, executar sequencialmente cada um dos outros trabalhos gradualmente assim que cada um dos primeiros for concluído, sem ultrapassar o limite de 32 trabalhos MPI simultâneos no total. Por exemplo, vamos supor que os primeiros 8 processos estavam em execução e o primeiro acabou de terminar (para o primeiro NMPI[0] == 2). Então o paralelo não deve executar nada novo até que processadores suficientes estejam livres, já que o próximo trabalho tem NMPI[8]==7 e, portanto, ultrapassará o limite máximo de 32 núcleos. Ou existe uma maneira paralela de melhorar o lançamento do trabalho, como lançar primeiro o último trabalho mpi (32 núcleos), depois o último menos um, mais os três primeiros e assim por diante?

Desde já agradeço pela sua orientação

Responder1

Inverta a ordem da matriz, começando primeiro com o trabalho maior.

Talvez você possa usar --load 100%e --delay 10ster certeza de que o trabalho usa todos os núcleos antes de iniciar o próximo?

informação relacionada