2016-07-07 4 views
0

컴퓨팅 클러스터에서 실행중인 embarassingly parallel (bash) 스크립트가 있습니다. 이 스크립트는 쉘 스크립트이며 이 아니며이 MPI 라이브러리에 링크되어 있습니다. 즉, MPI 등급을 보낼 수있는 유일한 방법은 명령 줄 매개 변수를 사용하는 것입니다. xargs 병렬 및 mpirun 결합

지금까지 나는 단 하나의 노드 내에서 실행하고, 해결책은 간단했다 :
#!/bin/bash 
#SBATCH --nodes=1 
N=16 
seq $N | xargs -P $N -I% my_script.bash % $N 

가 어떻게 두 개의 노드로 확장 할 수 있습니까? '--nodes = 2'와 N=32을 사용하면 xargs은 같은 노드에있는 모든 스레드를 생성하려고합니다. 다른 한편으로는 mpiexec만을 사용할 수 없습니다. 스크립트가 MPI 라이브러리에 연결되어 있지 않아 스크립트에 어떤 스레드가 있는지 알 수 없으므로.

+1

솔루션에서 MPI를 사용해야합니까? GNU Parallel을 사용하면 매우 쉽습니다 : seq $ N | parallel -S server1, server2, my_script.bash {} $ N –

답변

0

당신은 그렇게 제출 스크립트 내에서 srun을 사용할 수 있습니다 : 이것은 당신의 bash는 스크립트를 실행 srun를 사용하여 할당 된 CPU를로 배포합니다

seq $N | xargs -P $N -I% srun --exclusive -N1 my_script.bash % $N 

.