集群信息(逐步增加)
节点 | CPU | 内存 | 显卡 |
---|---|---|---|
iyun105 | 72 核心 | 256 GB | NVIDIA Tesla P100 PCIe 16 GB(维护中)–已下架 |
iyun103 | 72 核心 | 256 GB | NVIDIA Tesla P40 24 GB(维护中)–已下架 |
iyun110 | 56 核心 | 128 GB | NVIDIA Tesla P100 PCIe 16 GB * 4(四张卡) |
上述配置为显卡集群节点信息, 服务器独享用户也可以单独部署, 独享slurm(显卡需额外选租)
通知邮箱为: rainsc@yeah.net
环境问题使用conda解决 故需要提前激活环境后运行下面脚本 脚本名称最好slurm结尾 便于区分 sh也能运行
示例调用 sbatch gpu_test103.slurm
#!/bin/bash
# 以上行指定了脚本使用的解释器为 /bin/bash
#SBATCH --job-name=gpu_test # 设置作业名称为 "gpu_test"
#SBATCH --partition=gpu # 指定作业提交到哪个分区(或队列)
#SBATCH --ntasks=1 # 设置并行任务的数量。这里是 1,表示这是一个单任务作业
#SBATCH --cpus-per-task=1 # 为每个任务分配的 CPU 核心数。这里是 1,表示每个任务只需要一个 CPU 核心
#SBATCH --gres=gpu:1 # 这里是请求 1 个 GPU 设备
#SBATCH --output=gpu_test_%j.out # 设置标准输出文件的路径和名称。%j 会被替换为作业 ID,确保每个作业的输出文件是唯一的
#SBATCH --error=gpu_test_%j.err # 设置标准错误输出文件的路径和名称。
#SBATCH --mail-user=接收通知的邮箱号 # 设置接收作业状态邮件通知的邮箱地址。当作业开始、结束或出错时,会向这个邮箱发送通知
#SBATCH --mail-type=ALL #需要发送的邮件类型
#SBATCH --nodelist=iyun110 # 指定作业运行的节点iyun103 或 iyun105
# 需要执行的代码部分
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 源
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