Usando o SLURM sem um recurso

3

Suponha que meu super computador tenha o seguinte NODELIST com os recursos incluídos:

NODELIST      FEATURES
NodeA         (none)  
NodeB         specialfeature

e estou tentando avaliar o desempenho usando ou não o recurso specialfeature . Medir o desempenho de uma execução usando specialfeature é fácil. Eu simplesmente chamo

sbatch --constraint="specialfeature" mybenchmarktest.exe

O acima assegura que minha execução ocorra em um nó que contém o recurso specialfeature (isto é, o nó B). No entanto, se eu quiser executar o benchmark SEM specialfeature , corro para um problema. Chamando

sbatch mybenchmarktest.exe

significa que o SLURM pode executar minha tarefa no NodeA ou no NodeB. Significando que meu benchmarking pode não estar medindo o que eu quero.

Existe uma maneira de garantir que um processo seja executado sem um recurso? Estou imaginando uma chamada como:

sbatch --contraint="!specialfeature" mybenchmarktest.exe

OBSERVAÇÃO: Neste caso trivial, sei que poderia solicitá-lo para ser executado no NodeA (o nó sem o recurso), mas estou procurando uma maneira mais geral de dizer ao SLURM "não use tal e tal ".

    
por chessofnerd 05.01.2015 / 19:58

1 resposta

2

Existe atualmente (a partir da versão 15.8) nenhuma maneira de negar um recurso dessa maneira. A única maneira é definir um recurso complementar da seguinte maneira:

NODELIST      FEATURES
NodeA         nospecialfeature  
NodeB         specialfeature

e, em seguida, envie um trabalho com --constraint=specialfeatures e outro com --constraint=nospecialfeature .

Se você não puder alterar a configuração, outra opção é criar manualmente a lista de hosts admissíveis com uma construção como a seguinte:

sinfo -h --format "%N %f" | grep specialfeature  |\
   awk '{print $1}' | paste -d, -s | xargs scontrol show hostlist

e use o resultado com a opção --nodelist . Sinta-se à vontade para combinar grep para criar sua lista.

    
por 27.01.2016 / 22:46