☆☆slurm必读☆☆

集群信息(逐步增加)

节点CPU内存显卡
iyun10572 核心256 GBNVIDIA Tesla P100 PCIe 16 GB
iyun10372 核心256 GBNVIDIA Tesla P40 24 GB

通知邮箱为: rainsc@yeah.net

示例调用 sbatch gpu_test103.slurm

#!/bin/bash
# 以上行指定了脚本使用的解释器为 /bin/bash

#SBATCH --job-name=gpu_test # 设置作业名称为 "gpu_test",这个名字会在作业调度系统中显示
#SBATCH --partition=gpu # 指定作业提交到哪个分区(或队列)。这里设置为 "gpu" 分区,意味着该作业需要使用 GPU 资源
#SBATCH --ntasks=1 # 设置并行任务的数量。这里是 1,表示这是一个单任务作业
#SBATCH --cpus-per-task=1 # 为每个任务分配的 CPU 核心数。这里是 1,表示每个任务只需要一个 CPU 核心
#SBATCH --gres=gpu:1 # 通用资源 (Generic Resource, GRES) 请求。这里是请求 1 个 GPU 设备
#SBATCH --output=/media/desk16/SlurmResult/gpu_test_%j.out # 设置标准输出文件的路径和名称。%j 会被替换为作业 ID,确保每个作业的输出文件是唯一的
#SBATCH --error=/media/desk16/SlurmResult/gpu_test_%j.err # 设置标准错误输出文件的路径和名称。同样地,%j 会被替换为作业 ID
#SBATCH --mail-user=接收通知的邮箱号 # 设置接收作业状态邮件通知的邮箱地址。当作业开始、结束或出错时,会向这个邮箱发送通知
#SBATCH --mail-type=ALL #需要发送的邮件类型
#SBATCH --nodelist=iyun103  # 指定作业运行的节点iyun103  或 iyun105

# 需要执行的代码部分
module load python/3.8  # 根据你的环境选择Python版本

source activate pytorch_test  # 激活你的Python虚拟环境

python gpu_test.py  # 执行你的Python脚本
# 文件 gpu_test.py

import torch
import time

# 确保使用 GPU
device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")

# 打印使用的设备
print(f"Using device: {device}")

# 创建两个随机矩阵
a = torch.rand((10000, 10000), device=device)
b = torch.rand((10000, 10000), device=device)

# 测试运行时间
print("Starting matrix multiplication...")
start = time.time()

for i in range(1000):
    if i % 100 == 0:  # 每100次输出一次日志
        print(f"Iteration {i}...")
    c = torch.matmul(a, b)

torch.cuda.synchronize()  # 确保同步
end = time.time()

# 输出运行时间
print(f"Completed 1000 matrix multiplications.")
print(f"Time taken for 1000 matmul: {end - start} seconds")

提交示例

# 首先激活软件环境
rainsc@iyun105:~$ conda activate pytorch_test
(pytorch_test) rainsc@iyun105:~$ sbatch gpu_test103.slurm
Submitted batch job 234
(pytorch_test) rainsc@iyun105:~$ sbatch gpu_test105.slurm
Submitted batch job 235

节点空闲会有任务开始的提示

查看队列

(pytorch_test) rainsc@iyun105:~$ squeue
             JOBID PARTITION     NAME     USER ST       TIME  NODES NODELIST(REASON)
               234       gpu gpu_test   rainsc  R       0:13      1 iyun103
               235       gpu gpu_test   rainsc  R       0:02      1 iyun105

查看任务

(pytorch_test) rainsc@iyun105:~$ sacct
JobID           JobName  Partition    Account  AllocCPUS      State ExitCode
------------ ---------- ---------- ---------- ---------- ---------- --------
235            gpu_test        gpu                     2    RUNNING      0:0
235.batch         batch                                2    RUNNING      0:0

conda安装

1. 安装 Miniforge

按照顺序 依次执行

 # 下载并安装 Miniforge
 wget http://iyun70.com:8011/softs/Miniforge3-Linux-x86_64.sh &&
 chmod +x Miniforge3-Linux-x86_64.sh &&
 ./Miniforge3-Linux-x86_64.sh -b -f -p ~/.miniconda &&
 ~/.miniconda/bin/mamba init
 # 重新加载 Bash
 bash
 # 关闭自动激活基础环境
 conda config --set auto_activate_base false
 # 移除 Mamba 启动横幅
 mamba activate base
 mamba env config vars set MAMBA_NO_BANNER=1
 mamba deactivate
 mamba activate base
 # 删除安装脚本
 rm -rf Miniforge3-Linux-x86_64.sh

2. 配置 Conda 源

 # 设置 Conda 源
 echo "channels:
   - defaults
 show_channel_urls: true
 default_channels:
   - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main
   - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/r
   - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/msys2
 custom_channels:
  conda-forge: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  msys2: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  bioconda: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  menpo: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  pytorch: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  pytorch-lts: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  simpleitk: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud
  deepmodeling: https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud" > ~/.condarc

3. 配置 Pip 源

 # 设置 Pip 源
 pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
 # 更新到最新 防止兼容性问题或缺库缺包的问题
 conda update conda -y
 mamba update mamba -y