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
. 메모리 요구 사항은 작업별로 다릅니다. 즉, 작업에서 요청한 코어 수에 따라 달라지지 않습니다.