2014-09-03 7 views
1

Matlab이 컴퓨팅 클러스터에서 자원을 활용하는 방법의 한계 때문에 주어진 노드의 모든 코어를 사용하는 여러 작업을 만들고 싶습니다. 다른 매개 변수와 함께 --array 옵션을 사용하여 별도의 노드에서 각 작업을 가져올 수 있습니다.sbatch에서 --array 및 --nodelist 사용

#SBATCH --array=1-2 
#SBATCH -t 24:00:00 
#SBATCH -n 1 
#SBATCH -c 20 
#SBATCH -N 1 
#SBATCH --exclusive 
#SBATCH --mem-per-cpu 4000 

module add ~/matlab/2014a 

srun matlab -nodisplay -r "myfun($SLURM_ARRAY_TASK_ID);quit" 
그러나, 어떤 이유로 우리의 클러스터에서 slurm 일정은 -c 옵션을 사용하여 주어진 노드에 내가 코어에서 최대로 시도하고있다하더라도, 이미 사용중인 노드에서 내 작업을두고있다

--exclusive 옵션을 사용하면 아무 것도 변경되지 않습니다. 나는 하나의 작업에 대해서도 동일한 문제를 겪어 왔고, 해결 방법은 어떤 노드가 사용 중이 아닌지 확인하고 특별히 --nodelist 옵션을 사용하여 노드를 요청하는 것이 었습니다. 목록의 각 작업과 노드가 일대일 대응으로 일치하도록 --array를 --nodelist와 함께 사용하는 방법이 있습니까? 현재 SLURM은 각 작업에 대해 모든 노드를 사용하려고합니다.

답변

1

세 가지 가능성 :

  1. 어느 노드 때문에, 또는 때문에 다른 사용자가 불공정 클러스터 사용의 잘못 종료 이전 작업 중 하나 Slurm의 제어 외부에서 실행 유령 작업을해야합니다. Slurm은 노드를 할당하기 전에 노드로드를 확인하지 않으므로 설명하는 상황에 직면 할 수 있습니다.

  2. 또는 slurm.confShared 매개 변수가 설정 될 수 --exclusive` 및 하이퍼 스레딩 Force' to deny you the use of에 노드 당 40 개 CPU가 고려 Slurm을 선도 가능하게 할 수있는

  3. 또는 slurm.confShared 매개 변수가 될 수있다 노드가 두 개의 별개 파티션에있는 동안 Exclusive 이외의 것으로 설정하면 노드 초과 가입이 발생합니다.

구성에 대한 자세한 정보는 scontrol show config 명령을 사용하십시오.

+0

'scontrol show config'는 "Shared"라는 매개 변수를 나열하지 않았지만,'sinfo -l'은 모든 파티션에 대해 "Share"가 "Force"로 나열되었음을 보여 줬습니다. 하이퍼 스레딩에 대한 귀하의 의견에 대해 궁금합니다. 우리의 클러스터는'SelectType = select/cons_res; SelectTypeParameters = CR_CORE_MEMORY'입니다. 이것은 개별 스레드를 요청할 필요가 없다는 것을 의미합니다. 노드에는 20 개의 코어가 있으며 각 코어에는 2 개의 스레드가 있습니다. 올바른 자원 요청은'-N 1; -c 20'? – Evan

+0

올바르게 이해했다면 예,하지만 열 CPUS의 'sinfo -Nl'의 출력이 실제로 20인지 확인하십시오. (Slurm은 실제 코어 인 것처럼 하드웨어 스레드를 처리하도록 구성 될 수 있습니다.) – damienfrancois

+0

아, 그래서 SelectTypeParameters = CR_CORE_MEMORY'에 대한 정보를 제공합니다.이 경우 _ 하이퍼 스레드가있는 노드에서 각 스레드는 작업의 리소스 요구 사항을 충족시키는 CPU로 계산됩니다 ._ 'sinfo -l -N'은 각 노드가 실제로 40 cpus를 가지고 있음을 확인합니다. '-c 40'을 설정하면 문제가 해결 된 것 같습니다. 나는 지금 내가 기대하는 것처럼 자신에게 마디를 얻는 것처럼 보입니다. 고마워요 - 당신의 대답에, "슬럼 (Slurm)은 노드 당 20 cpus가 있다고 생각합니다."를 40으로 바꾸시겠습니까? 그게 니가 의미 한 것 같아. – Evan