sbatch
스크립트에서 SLURM이 작업을 시작하는 방식에 대해 고민 중입니다. SLURM이 --ntasks
인수를 무시하고 즉시 내 배치 파일에있는 모든 srun
작업을 시작한 것 같습니다. 여기에 예제에 유래에 this answer의 코드에 약간의 수정을 사용한다 : 나는 그것이 srun sleep 10
명령이 완료된 후 실행하도록 기대하는 반면 slurm이 요청한 것보다 많은 작업을 시작한 것 같습니다
$ salloc --ntasks=1 --ntasks-per-core=1
salloc: Granted job allocation 1172
$ srun -n 1 sleep 10 & time srun -n 1 echo ok
[1] 5023
srun: cluster configuration lacks support for cpu binding
srun: cluster configuration lacks support for cpu binding
ok
real 0m0.052s
user 0m0.004s
sys 0m0.012s
그래서 내 설치에
srun echo
명령이 즉시 실행되고있다.
SLURM 2.6.5를 사용하여 개인 워크 스테이션에서 8 개의 코어를 사용하여 작업을 예약 및 제출하고 직접 설치 했으므로 구성이 완벽하게 가능합니다. 여기에 slurm.conf 파일에서 일부 관련 부분은 다음과 같습니다
다음# SCHEDULING
SchedulerType=sched/backfill
SelectType=select/cons_res
SelectTypeParameters=CR_CPU
# COMPUTE NODES
NodeName=Tom NodeAddr=localhost CPUs=7 RealMemory=28100 State=UNKNOWN
PartitionName=Tom Nodes=Tom Default=YES MaxTime=INFINITE State=UP
이 printenv | grep SLURM
의 출력입니다 salloc --ntasks=1
SLURM_NODELIST=Tom
SLURM_NODE_ALIASES=(null)
SLURM_MEM_PER_CPU=4100
SLURM_NNODES=1
SLURM_JOBID=1185
SLURM_NTASKS=1
SLURM_TASKS_PER_NODE=1
SLURM_JOB_ID=1185
SLURM_SUBMIT_DIR=/home/tom/
SLURM_NPROCS=1
SLURM_JOB_NODELIST=Tom
SLURM_JOB_CPUS_PER_NODE=1
SLURM_SUBMIT_HOST=Tom
SLURM_JOB_NUM_NODES=1
내가 어떤 의견이나 제안을 감사하겠습니다 실행 한 후. 더 많은 정보가 필요한지 알려주십시오. 읽기
감사합니다,
톰
업데이트
좀 더 주위에 재생 후 나는 약간의 진전을하지만, 난 여전히 아주 내가 원하는 동작을받지 못했습니다. 내가 --exclusive
를 사용하는 경우
은 내가 echo
단계는 sleep
단계를 기다려야 얻을 수 있습니다 :
salloc --ntasks=1
salloc: Granted job allocation 2387
srun -n 1 --exclusive sleep 10 & time srun -n 1 --exclusive echo ok
[1] 16602
ok
[1]+ Done srun -n 1 --exclusive sleep 10
real 0m10.094s
user 0m0.017s
sys 0m0.037s
및
salloc --ntasks=2
salloc: Granted job allocation 2388
srun -n 1 --exclusive sleep 10 & time srun -n 1 --exclusive echo ok
[1] 16683
ok
real 0m0.067s
user 0m0.005s
sys 0m0.020s
하지만 난 아직도 내가 경우 제대로이를 수행하는 방법을 모른다 각 단계마다 여러 프로세서가 필요한 다중 단계 작업 실행
salloc --ntasks=6
salloc: Granted job allocation 2389
srun -n 2 --exclusive stress -c 2 &
srun -n 2 --exclusive stress -c 2 &
srun -n 2 --exclusive stress -c 2 &
는 뜻으로, 나에게 12 개 stress
프로세스를 줄 것이다
salloc --ntasks=6
salloc: Granted job allocation 2390
srun -n 1 --exclusive stress -c 2 &
srun -n 1 --exclusive stress -c 2 &
srun -n 1 --exclusive stress -c 2 &
srun -n 1 --exclusive stress -c 2 &
srun -n 1 --exclusive stress -c 2 &
srun -n 1 --exclusive stress -c 2 &
그래서 난 내 sbatch
스크립트가 6 프로세서를 타고 2 개 프로세서와 함께 한 번에 세 단계 각각을 시작하려면 어떻게해야합니까 ? srun --exclusive -n 1 -c 2 stress -c 2
을 사용하는 것이 맞습니까?
하이퍼 스레딩을 사용하도록 설정 했습니까? '--ntasks-per-core = 1' 부분을 제거해보십시오. 또한''salloc''을 실행 한 후에''printenv | grep SLURM''의 출력을 공유 할 수 있습니까? – damienfrancois
@damienfrancois, 답장을 보내 주셔서 감사합니다. 프로세서는 하이퍼 스레딩 기능이없는 E5-2609입니다. '--ntasks-per-core = 1'을 제거해도 도움이되지는 않았지만,'printenv | grep SLURM'. –
'--ntasks-per-core = 1'을 삭제해도 클러스터 구성이 CPU 바인딩에 대한 지원이 부족합니다. –