2013-08-26 2 views
1

나는 slurm과 함께 병렬 실행을위한 작업을 시작하고있다. 이 작업은 각 노드에 특정 디렉토리 구조가 필요하지만 작업 스크립트에서 mkdir을 사용하면 디렉토리는 첫 번째 노드에만 작성됩니다. 작업에서 사용되는 모든 노드에서 디렉토리가 생성되도록하려면 어떻게해야합니까?Slurm : 모든 노드에 디렉토리 생성

답변

1

나는 내 자신에게 대답해야 할 것 같아. 이것은 완벽한 해결책은 아니지만 제 경우에는 충분했습니다.

for node in $(scontrol show hostnames $SLURM_NODELIST) ; do 
    srun -N 1-1 -n 1 -w $node mkdir -p /directory/to/be/created 
done 
sleep 60 

$SLURM_NODELIST의 노드 목록이 단축되고, 나는 전체 이름을 얻을 scontrol 문 : 실제 작업이 시작되기 전에 작업 스크립트에서 나는 이것을 사용했다. sleep 명령이 없으면 일부 디렉토리가 존재하지 않아서 가끔씩 문제가 발생하기 때문에 안전을 위해 추가되었습니다.

문제점은 어떤 디렉토리가 사전 작성되어야하는지, 필자의 경우 가능한지 알아야하지만, 다른 상황에서는 더 어려울 수 있다는 점입니다.

0

당신은 단순히 스크립트에서

srun mkdir -p /directory/to/be/created

를 추가 할 수 있습니다. 클러스터 구성에 따라 동일한 디렉토리를 여러 번 시도해 볼 수도 있지만 여하튼 작동합니다.