#!/bin/bash
#SBATCH --gres=gpu:4 # number of gpu
#SBATCH -p A100-40GB # set partition to use
#SBATCH -J pivot_en # name of job
#SBATCH -o pivot_en.%j.out # Name of stdout output file (%j: %jobId)
#SBATCH -t 3-00:00:00 # time limit
#SBTACH --ntasks=4
#SBATCH --tasks-per-node=4
#SBATCH --cpus-per-task=1
#SBATCH --nodes=1 # node 갯수
#SBATCH --nodelist=n28 # 특정 node 지정하고 싶을 때
python example.py \
...
사용할 gpu 갯수에 따라 #SBTACH --ntasks=4 와 #SBATCH --tasks-per-node=4 를 같게 맞춰준다.
-J: 작업 이름
-p: partition 이름
-N : 사용할 노드 수
-n : 실행할 task 수
-o : output file 이름
-t : 실행 시간
--nodelist: 특정 노드 지정하고 싶을 때 지정
salloc --partition=A5000 --nodes=1 --gres=gpu:4 --time=5:59:00
srun --pty bash
ssh [NODELIST] nvidia-smi
watch -d -n 0.5 ssh [NODELIST] nvidia-smi
srun 은 바로 node 에 들어가서 작업 가능하지만 salloc 은 srun 으로 또 들어가야 한다.
srun 은 멀티 노드 작업을 할 수가 없다. 들어가는 노드는 단 하나다. 하지만 salloc 은 여러 노드들에 한꺼번에 명령을 내린다.
클러스터가 멀티 노드에 작업 효율은 떨어지기 때문에 사실 큰 의미는 없다.