Sun Grid Engine 작업 파일의 코어 수에 대한 구문

Sun Grid Engine 작업 파일의 코어 수에 대한 구문

qsub우리 대학의 HPC를 사용하여 다음 어레이 작업을 수행하고 싶습니다.일.

각 작업은 여러 요소를 활용하는 솔버(MOSEK)를 사용하는 Matlab 코드를 실행합니다.최적화 문제를 해결하기 위해. 매개변수는 솔버가 사용할 스레드 수를 제어합니다. 허용되는 최대 스레드 수는 코어 수를 초과할 수 없습니다.

솔버가 사용하기를 원한다고 가정해 보겠습니다.스레드 4개. 따라서 최소 4개의 여유 코어가 있는 시스템에 각 작업을 할당해야 합니다. Bash 파일에서 어떻게 요청하나요? 메모리 사용량을 어떻게 계산해야 합니까?(예: 코어당 메모리를 선언해야 합니까, 아니면 총 메모리를 선언해야 합니까?)

현재 이것은 내 bash 파일입니다.

#$ -S /bin/bash
#$ -l h_vmem=18G
#$ -l tmem=18G
#$ -l h_rt=480:0:0
#$ -cwd
#$ -j y

#Run 3 tasks
#$ -t 1-3

#$ -N try
date
hostname


#Output the Task ID
echo "Task ID is $SGE_TASK_ID"

matlab -nodisplay -nodesktop -nojvm -nosplash -r "main_1; ID = $SGE_TASK_ID; f_1; exit"

답변1

mpstat 명령은 CPU(예: 코어) 수를 표시합니다. 숫자를 얻으려면 출력을 분리해야 할 수도 있지만 데이터가 표시됩니다.

리눅스에는 lscpu 명령도 있습니다. 다음과 같은 코드가 도움이 될 수 있습니다.

CORES=`lscpu | grep -w "CPU(s):" | grep -v NUMA | awk '{print $2}'`
if [ $CORES -lt 2 ]
then
        echo "Cores 2 or less!"
        exit
fi

답변2

원하는 스위치 병렬 환경을 선택하십시오 -pe. 스크립트 내 옵션을 사용하여 머신에서 4개의 스레드를 얻으려면 다음을 작성하십시오 #$ -pe smp 4. 메모리 요구 사항은 작업별로 다릅니다. 즉, 작업에서 요청한 코어 수에 따라 달라지지 않습니다.

관련 정보