Executando o GNU paralelo --sem trava no SGE Cluster

2

Estou tentando executar três comandos em paralelo em um cluster SGE, por exemplo,

cmds=("prog 1 2 3" "prog 4 5 6" "prog 7 8 9")
for cmd in "${cmds[@]}"
do
    sem -j 3 $cmd
done
sem --wait

Assim, meus comandos são executados e concluídos com sucesso, o que eu inferi dos logs de saída gerados e o fato de que eu posso ver que eles não estão mais sendo executados no nó. Mas então - sem esperar por um período indefinido de tempo quando eu enviar com qsub. Alternativamente, eu corri em modo interativo e um. digitou manualmente os comandos e b. originou o script de shell; ambos os métodos foram concluídos com sucesso. Existe algo que eu estou sentindo falta de correr sem?

Obrigado por qualquer ajuda.

    
por brcopeland 09.10.2015 / 23:13

1 resposta

0

Você está executando cada comando sequencialmente. No momento em que o script chegar a sem --wait , todos os três comandos foram executados e finalizados.

Tente adicionar um & à linha sem -j 3 $cmd . Isso executará cada comando em segundo plano, em paralelo.

cmds=("prog 1 2 3" "prog 4 5 6" "prog 7 8 9")
for cmd in "${cmds[@]}"
do
    sem -j 3 $cmd &
done
sem --wait
    
por 10.10.2015 / 00:05