集群Slurm使用教程

批量提交任务示例:

job_cpu.sh

#!/bin/bash

### 设置该作业的作业名
#SBATCH --job-name=ikdmmt

### 指定该作业需要2个节点数
#SBATCH --nodes=2

### 该作业需要8个CPU
#SBATCH --ntasks=8

### 作业脚本中的输出文件
#SBATCH --output=job_cpu.%j.out

### 程序的执行命令
#nvidia-smi 
cd /home/pengru/inverseKD-mmt/
python demo.py

job_gpu.sh

#!/bin/bash

### 该作业的作业名
#SBATCH --job-name=ikdmmt

### 该作业需要1个节点
#SBATCH --nodes=1

### 该作业需要1个CPU
#SBATCH --ntasks=1

### 申请1块GPU卡
#SBATCH --gres=gpu:4

### 作业脚本中的输出文件
#SBATCH --output=job_gpu.%j.out

### 将作业提交到对应分区;
#SBATCH --partition=gpu    

### 程序的执行命令
nvidia-smi 
cd /home/pengru/inverseKD-mmt/
python demo.py

交互式提交任务:(可规避一次只能提交3个任务限制)

  1. Tmux 打开新的后台窗口  demo1 ;  (tmux new -s demo1)
  2. 指定一个节点:salloc --nodelist gpu1 --gres=gpu:xxx --ntasks xxx(取决于在gpu1下跑几份代码*4)
  3. ssh gpu1;
  4. 若需要切换虚拟环境,则先conda activate $envs_name;
  5. 查看显卡占用情况 watch -n 1 nvidia-smi;   
  6. cd 代码1目录,修改CUDA_VISIBLE_DEVICES=xx,运行代码1 code1.sh;
  7. Tmux Ctrl+b d 分离出该会话;

     --------------------------------------------------------------------------------------------

  1.     用Tmux接着 打开新的后台窗口 demo2;(tmux new -s demo2)
  2. 指定一个节点:salloc --nodelist gpu2 --gres=gpu:xxx --ntasks xxx(取决于在gpu2下跑几份代码*4)
  3.   ssh gpu2;
  4. 若需要切换虚拟环境,则先conda activate $envs_name;
  5. 查看显卡占用情况 watch -n 1 nvidia-smi;   
  6. cd 代码2目录,修改CUDA_VISIBLE_DEVICES=xx,运行代码2 code2.sh;
  7. Tmux Ctrl+b d 分离出该会话;

   ----------------------------------------------------------------

  1.  Tmux关闭后台窗口;(tmux kill-sesssion -t demo2,销毁所有会话并停止:tmux tmux kill-server)
  2.   exit两次退出节点,释放所申请资源;
  3.    Scancel jobID;

你可能感兴趣的:(系统工具,slurm,集群,1024程序员节)