Eu tenho um programa que é paralelizado usando o MPI. Ele acha que é capaz de executar vários nós em nossa grade HPC (CentOS 6.6), quando, na verdade, ele só é executado com êxito em vários núcleos do mesmo nó de computação .
por exemplo. Se eu qsub
um trabalho para a grade pedindo 20 núcleos e o Grid Engine decidir dividi-lo em dois nós diferentes, o programa falhará. No entanto, se houver um nó com 20 núcleos disponíveis e o Grid Engine enviar tudo para esse, o programa será executado com êxito. O script qsub contém o comando #$ -pe mpi 20
para selecionar o número de núcleos.
Então, no momento, eu faço um qstat -f -u "*"
para identificar manualmente um nó de cálculo com 20 núcleos disponíveis e enviar para esse nó com qsub -q general.q@node-X-X
O que eu estou procurando é uma maneira de dizer ao Grid Engine que espere e só enviar o trabalho para um único nó de computação que tenha o número necessário de núcleos disponíveis. Isso permitirá que eu automatize a submissão do meu trabalho.
Estou pensando em escrever um script bash para analisar o comando qstat -f -u "*"
, mas deve haver uma solução mais elegante. Examinei o manual do qsub, mas não consegui encontrar um sinalizador adequado ou argumento de linha de comando.
Não posso modificar o programa em si e não sou administrador do sistema.
Aqui estão algumas informações sobre as diferentes versões de software disponíveis:
Informações sobre MPI / gridengine:
> ompi_info | grep gridengine
MCA ras: gridengine (MCA v2.0, API v2.0, Component v1.6.2)
A versão do mecanismo de grade é: OGS / GE 2011.11p1