![Combinando gnu paralelo e mpirun: como cuidar do número máximo de núcleos?](https://rvso.com/image/164740/Combinando%20gnu%20paralelo%20e%20mpirun%3A%20como%20cuidar%20do%20n%C3%BAmero%20m%C3%A1ximo%20de%20n%C3%BAcleos%3F.png)
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 10s
ter certeza de que o trabalho usa todos os núcleos antes de iniciar o próximo?