小白使用超算slurm作业调度系统提交作业(看完这篇就够了)

举个例子

用超级计算机(超算)跑模型代码指南_超算平台如何激活虚拟环境-CSDN博客

先看上面的链接,但是安装mobaxtern比较好用,登录你自己的账号,这些教程比较简单。

然后装好anaconda和配置虚拟环境,上面的链接里也讲了。然后是账号里面文件夹要整齐整洁,文件命名不要中文,服务器无法识别中文。之后就是如何用sbatch提交作业或者saloc直接进入GPU运行作业。我相信,你的所有疑问都能在这篇文章找到答案。

常见的几个linux指令要熟悉:

1.sinfo: 这个命令用于显示当前计算集群中的系统信息和节点状态。它将显示节点的状态、可用资源和负载情况等信息。
2.mkdir: 该命令用于创建一个新的目录。例如,mkdir myfolder 将在当前目录下创建一个名为 "myfolder" 的新目录。
3.mv: 该命令用于移动文件或目录,也可以用于重命名文件或目录。例如,mv file.txt folder/ 将文件 "file.txt" 移动到 "folder" 目录中。

touch: 这个命令用于在指定路径下创建一个空文件。例如,touch /path/to/file.txt 将在 /path/to/ 目录下创建一个名为 "file.txt" 的空文件

echo: 这个命令可以将文本内容输出到文件中,从而创建文件并写入内容。例如,echo "Hello, World!" > /path/to/file.txt 将创建一个名为 "file.txt" 的文件,并将字符串 "Hello, World!" 写入该文件。

mkdir -p /path/to/directory 命令来创建多级目录,并使用 touch /path/to/directory/file.txt 命令来创建文件

4.rm: 该命令用于删除文件。例如,rm file.txt 将删除名为 "file.txt" 的文件。rm-r 是删除文件
5.vi: 这是一个文本编辑器,在终端中使用。您可以使用该命令打开文件并进行编辑。例如,vi myfile.txt 将使用 vi 编辑器打开名为 "myfile.txt" 的文件。
6.ls: 该命令用于列出目录中的文件和子目录。例如,ls 将显示当前目录中的文件和目录列表。
7.ls -a: 这个命令与 ls 类似,但它会显示所有文件,包括隐藏文件。例如,ls -a 将显示当前目录中的所有文件和目录,包括以点 "." 开头的隐藏文件。
8.ls -al: 这个命令与前面的 ls -a 类似,但它以长格式显示文件和目录的详细信息。例如,ls -al 将显示当前目录中的所有文件和目录,并显示它们的权限、所有者、大小等详细信息。
9.:wq: 这是在 vi 编辑器中保存并退出的命令。当您完成对文件的编辑后,可以按 Esc 键,然后输入 :wq 并按 Enter 键,以保存文件并退出 vi 编辑器。编辑时先按i进入编辑。
10.:q: 这是在 vi 编辑器中退出而不保存的命令。如果您对文件的修改不想保存,可以输入 :q 并按 Enter 键,以退出 vi 编辑器。
11.cd: 该命令用于更改当前工作目录。例如,cd myfolder 将切换到名为 "myfolder" 的目录。
12.sbatch: 这个命令用于提交一个批处理作业到集群调度系统。它将根据作业的需求和资源可用性,在集群上启动一个作业。
13.squeue: 这个命令用于显示当前正在运行和等待运行的作业队列。它将列出作业的 ID、状态、运行时间等信息。
14.sacct: 这个命令用于查看作业的账户信息。它可以显示有关作业资源使用情况、运行时间、内存消耗等详细信息。
15.conda list: 这个命令用于显示当前环境中安装的所有 Conda 软件包的列表。
16.conda info -e: 这个命令用于列出当前系统上所有可用的 Conda 环境。它将显示环境的名称、路径和安装日期等信息。
17.conda activate skin: 这个命令用于激活名为 "skin" 的 Conda 环境。一旦激活,该环境中的软件包将优先使用。
18.sed -i 's/\r//' zjfcpu.sh: 这个命令使用 sed 工具来从文件 "zjfcpu.sh" 中删除 Windows 换行符(\r)。这个命令可以处理文件在不同操作系统上的换行符格式问题。
19.pwd: 这个命令用于显示当前工作目录的绝对路径。
20.dos2unix: 这个命令用于将文本文件从 Windows/DOS 格式转换为 Unix/Linux 格式,以解决换行符问题。
21.logout: 这个命令用于退出当前用户的会话。
22.scontrol: 这个命令用于管理 Slurm 调度系统,它提供了对作业、节点和其他资源的控制和查询功能。
23.salloc -p gpu_128G -N 1 -w gpu4: 这个命令用于在 GPU_128G 分区请求一个 GPU 资源,并在 GPU4 节点上启动一个作业。该命令将为作业分配一个节点,并分配相应的资源供作业使用。

24.squeue -u lxtai  //产看你正在运行和排队的项目

scontrol show node gpu5
查看节点详情

25.要查看 Linux 系统中 GPU 是否被使用,你可以使用以下命令:

1.nvidia-smi: 这是一个用于 NVIDIA GPU 的命令行实用程序。运行 nvidia-smi 命令会显示当前所有 NVIDIA GPU 的状态和使用情况,包括 GPU 型号、驱动版本、显存使用情况以及运行在 GPU 上的进程等信息。
2.lspci: 这个命令用于列出系统中所有 PCI 设备的信息,包括 GPU。你可以运行 lspci | grep -i nvidia 命令来过滤出 NVIDIA GPU 相关的信息。
3.glxinfo: 这个命令用于获取有关 OpenGL 系统和 GPU 的信息。你可以运行 glxinfo | grep "OpenGL renderer" 命令来查看当前使用的 OpenGL 渲染器。
4.top 或 htop: 这些命令用于监视系统资源使用情况。通过运行 top 或 htop 命令,你可以查看 CPU 使用情况、内存使用情况,并找到占用 GPU 资源的进程。

这些命令将提供有关 GPU 状态和使用情况的信息。请注意,这些命令的可用性和输出可能会根据你的系统配置和所使用的 GPU 型号而有所不同。如果你使用的是非 NVIDIA GPU,可能需要相应的命令或工具来查看 GPU 的使用情况。

请注意,这些命令的具体用法可能会因操作系统、软件版本和环境的不同而有所变化。建议在使用这些命令时参考相关文档或使用命令的帮助选项来获取更详细的信息。

然后登录账号只是进入了服务器,只有CPU,没有GPU,GPU的资源需要自己申请。所以得用sbatch提交作业后,排队等待资源。具体怎么提交作业下面讲。

然后我必须将我的项目文件夹(目录)放在我的虚拟环境的目录下(当然)才能执行项目。

项目文件是"/home/lxtai/anaconda3/envs/skin/Learn_NewSkinClass20240312/try.py"我的虚拟环境的项目文件夹里的trian.py。salloc -p gpu_128G -N 1 -w gpu4然后我请求GPU资源。

这是命令的输出结果,表示分配的作业号为 67438。然后我创建一个zjfcpu.sh的文件,代码如下

#!/bin/bash
CONDA_ENV=skin

#source activate ${CONDA_ENV}


# Training
#sbatch  --partition=gpu_128G \
#sbatch  --job-name='Train.py' \
#sbatch  --error=/home/lxtai/anaconda3/envs/skin/Learn_NewSkinClass20240312/logs/TRY.log \
#sbatch  --nodes 1  \


cd /home/lxtai/anaconda3/envs/skin/Learn_NewSkinClass20240312/

python trian.py

然后我切换目录到虚拟环境下的项目文件并且激活了虚拟环境后(必须切换),提交作业:sbtach zjfcpu.sh后,得到bacth job是37439。

然后,我查看作业状态,用sacct。显示我的作业号66438在运行,66439失败了。

我用vi slurm-67439.out打开67419作业的输出文件。发现是我的文件名弄错了。然后我按下i,然后:q就直接退出文本。

修改保存后。我再次提交作业。显示在运行。但在之后看报错说我没有cuda。

然后我运行一个不需要cuda的try.py文件。而且我按下i后,esc,然后:q显示报错,然后:wq就退出了。行一个不需要cuda的try.py文件没有报错。但是我的.sh脚本就只改了try.py。仔细观察发现刚才的任务都没有用上GPU。都是用的cpu。

所以怎么才能使用上GPU?然后输入ssh gpu4, nvidia-smi发现cuda=11.6.我的环境是11.8,所以

但是我觉得不是这个问题。我没有用上GPU。这是最主要的。于是我安装cuda,驱动和cudatoolkit

linux系统安装cuda

在Linux系统中安装CUDA通常涉及以下步骤:

  1. 确认你的NVIDIA显卡支持CUDA。

  2. 前往NVIDIA官网下载对应你显卡和Linux版本的CUDA Toolkit。

  3. 安装CUDA Toolkit前,请确保已经安装了NVIDIA驱动。

  4. 运行CUDA安装脚本,并遵循提示进行安装。

以下是一个基本的安装示例:

# 1. 下载CUDA Toolkit(以CUDA 11.2为例)

wget https://developer.download.nvidia.com/compute/cuda/11.2.0/local_installers/cuda_11.2.0_460.27.04_linux.run

# 2. 给安装文件赋予执行权限

chmod +x cuda_11.2.0_460.27.04_linux.run

# 3. 运行安装程序

sudo ./cuda_11.2.0_460.27.04_linux.run

# 4. 按照提示进行安装,可能需要接受许可协议,选择安装组件等。

安装完成后,你可能需要配置环境变量,以便在任何位置使用CUDA相关工具。你可以通过在你的.bashrc.zshrc文件中添加以下行来配置环境变量:

export PATH=/usr/local/cuda-11.2/bin${PATH:+:${PATH}}

export LD_LIBRARY_PATH=/usr/local/cuda-11.2/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}

然后,你可以通过运行nvcc --version来验证CUDA是否安装成功。

但是运行nvcc --version,不安装也行呀。所以我改了脚本

#!/bin/bash
#SBATCH -o job.%j.out
#SBATCH --partition=gpu_128G
#SBATCH -J myFirstGPUJob
#SBATCH --nodes=1             
#SBATCH --ntasks-per-node=6 

export=gpu4            

CONDA_ENV=skin

#source activate ${CONDA_ENV}
#sbatch  --job-name='TRY' 
#sbatch  --error=/home/lxtai/anaconda3/envs/skin/Learn_NewSkinClass20240312/logs/TRY.log 
#sbatch  --nodes 1  

cd /home/lxtai/anaconda3/envs/skin/Learn_NewSkinClass20240312/

python train.py

用上GPU了。

但是我的gpu4不是自己在用么,为什么我自己用不了,还要排队。

#!/bin/bash
#SBATCH -o job.%j.out
#SBATCH --partition=gpu_128G
#SBATCH -J myFirstGPUJob
#SBATCH --nodes=1             
#SBATCH --ntasks-per-node=1 

#SBATCH --nodelist=gpu4        

CONDA_ENV=skin

#source activate ${CONDA_ENV}
#sbatch  --error=/home/lxtai/anaconda3/envs/skin/Learn_NewSkinClass20240312/logs/TRY.log  

cd /home/lxtai/anaconda3/envs/skin/Learn_NewSkinClass20240312/

python train.py

然后我改了,作业ID是67459.根据

【4.1】sbatch提交作业 · Doc (pku.edu.cn)

  • 13
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
### 回答1: Slurm作业调度系统是一个用于分配和管理计算任务的开源软件。它允许用户在一个大规模的计算集群上提交、管理和监视作业。 首先,用户需要了解Slurm的基本概念。在Slurm中,一个作业是用户指定的一项计算任务,可以包括一个或多个任务。任务是作业的一个单元,可能会在不同的计算节点上执行。作业可以使用不同的资源进行调度,如CPU、内存和 GPU。用户需要清楚地定义作业的资源需求,以便Slurm可以正确地分配资源。 使用Slurm提交作业非常简单。用户只需要编写一个作业提交脚本,该脚本包含了作业的配置信息,如资源需求、输入文件、输出文件等。然后使用`sbatch`命令提交这个脚本即可。Slurm会按照其配置进行作业调度,将作业分配给相应的计算节点进行执行。 一旦作业提交后,用户可以使用`squeue`命令来跟踪作业的状态。该命令显示了作业的ID、状态、开始时间和节点信息等。用户可以根据需要使用`scancel`命令来取消作业Slurm还提供了一些高级功能,用于更精细地控制作业的调度和资源分配。用户可以使用`srun`命令在计算节点上启动特定的任务,并通过在作业提交脚本中设置一些参数来控制任务的执行方式。 总之,Slurm作业调度系统是一个强大且灵活的工具,可以帮助用户有效地管理和调度计算任务。通过了解基本概念和使用指南,用户可以更好地使用Slurm来利用集群资源进行高性能计算。 ### 回答2: Slurm作业调度系统是一个开源的、高效的集群管理和作业调度工具。它被广泛用于大规模计算集群和超级计算机系统。以下是使用Slurm的一些指南: 1. 提交作业:通过使用sbatch命令,可以向Slurm系统提交作业作业通常是一个可执行的程序或脚本。可以使用sbatch命令指定作业的名称、资源需求、作业优先级等。 2. 查看作业状态:可以使用squeue命令查看当前正在运行的作业以及等待运行的作业和队列中的作业。squeue命令可以提供作业的ID、状态、用户等信息。 3. 取消作业:如果需要取消一个已经提交作业,可以使用scancel命令。需要提供作业的ID来取消作业。 4. 调整作业优先级:使用sprio命令可以调整作业的优先级。较高优先级的作业将更早地得到处理。可以根据需求调整作业的优先级。 5. 资源管理:Slurm可以有效地分配集群的资源给不同的作业。可以使用scontrol命令设置和管理资源分配策略。可以向Slurm系统添加、删除或修改节点。 6. 队列管理:使用squeue和scontrol命令可以管理队列。可以创建、暂停、恢复、删除队列。可以根据不同的作业需求和优先级配置不同的队列。 7. 使用预定义脚本Slurm提供了一些预定义的脚本,可以用于常见的作业操作,比如提交作业、取消作业等。可以根据需要进行修改和使用这些脚本。 8. 集群监控:Slurm提供一些工具来监控集群的状态和性能。可以使用sinfo命令查看集群中的节点状态和资源使用情况。可以使用sacct命令查看作业的执行情况和资源使用情况。 总之,Slurm作业调度系统是一个功能强大的集群管理工具,可以帮助用户高效地管理和调度作业。通过使用上述指南,用户可以更好地了解和使用Slurm系统

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值