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은 각 작업에 대해 모든 노드를 사용하려고합니다.
'scontrol show config'는 "Shared"라는 매개 변수를 나열하지 않았지만,'sinfo -l'은 모든 파티션에 대해 "Share"가 "Force"로 나열되었음을 보여 줬습니다. 하이퍼 스레딩에 대한 귀하의 의견에 대해 궁금합니다. 우리의 클러스터는'SelectType = select/cons_res; SelectTypeParameters = CR_CORE_MEMORY'입니다. 이것은 개별 스레드를 요청할 필요가 없다는 것을 의미합니다. 노드에는 20 개의 코어가 있으며 각 코어에는 2 개의 스레드가 있습니다. 올바른 자원 요청은'-N 1; -c 20'? – Evan
올바르게 이해했다면 예,하지만 열 CPUS의 'sinfo -Nl'의 출력이 실제로 20인지 확인하십시오. (Slurm은 실제 코어 인 것처럼 하드웨어 스레드를 처리하도록 구성 될 수 있습니다.) – damienfrancois
아, 그래서 SelectTypeParameters = CR_CORE_MEMORY'에 대한 정보를 제공합니다.이 경우 _ 하이퍼 스레드가있는 노드에서 각 스레드는 작업의 리소스 요구 사항을 충족시키는 CPU로 계산됩니다 ._ 'sinfo -l -N'은 각 노드가 실제로 40 cpus를 가지고 있음을 확인합니다. '-c 40'을 설정하면 문제가 해결 된 것 같습니다. 나는 지금 내가 기대하는 것처럼 자신에게 마디를 얻는 것처럼 보입니다. 고마워요 - 당신의 대답에, "슬럼 (Slurm)은 노드 당 20 cpus가 있다고 생각합니다."를 40으로 바꾸시겠습니까? 그게 니가 의미 한 것 같아. – Evan