Qsub para qualquer nó com mais de n núcleos disponíveis

1

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

    
por feedMe 15.05.2017 / 11:15

2 respostas

1

Se você usar -pe smp 20 em vez de -pe mpi 20 , estará usando o ambiente SMP ("Paralelismo de memória compartilhada") em vez de MPI.

O SMP é uma abordagem mais simples para o paralelismo e é executado em um único computador , compartilhando a memória do sistema local através de threads. Portanto, ele coloca todos os slots solicitados em um nó individual (se disponível), em vez de dividi-los em vários nós de computação.

Para mim, isso parece ter resolvido o problema.

    
por 22.10.2018 / 11:52
1

Para fazer com que o Gridengine agende seu trabalho do 20 Core em um único nó, você teria que criar um novo ambiente paralelo ou ajustar o que está usando. A configuração que você precisa é

allocation_rule    $pe_slots

De man sge_pe :

If the special denominator $pe_slots is used, the full range of processes as specified with the qsub(1) -pe switch has to be allocated on a single host.

Não se esqueça de anexar o novo PE à sua fila.

Para solucionar seu problema de origem, executando o trabalho MPI em mais de um nó, você pode abrir uma segunda pergunta com mais detalhes sobre isso.

    
por 05.08.2017 / 13:45

Tags