You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

SLURM技术咨询:如何从控制节点node1在从节点node2运行程序

嘿,既然你已经搞定了SLURM集群的安装,那在node2上跑程序其实挺直接的,我给你一步步捋清楚操作方法,顺便说说需要确认的关键配置点:

直接在指定节点运行程序的方法

1. 交互式运行(用srun

如果你想实时在node2上操作程序,直接在node1的终端里敲这条命令:

srun --nodes=1 --nodelist=node2 --pty /bin/bash

执行后你会直接进入node2的交互式终端,接下来就像在本地机器上一样运行你的程序就行。要是你不想进入终端,想直接执行某个命令或脚本,也可以这么写:

srun --nodes=1 --nodelist=node2 /path/to/your/program_or_script

2. 批量提交任务(用sbatch

如果是不需要实时交互的批量任务,先写一个SLURM作业脚本,比如命名为run_on_node2.sh,内容示例如下:

#!/bin/bash
#SBATCH --nodes=1
#SBATCH --nodelist=node2
#SBATCH --job-name=node2_test_job
# 可选:指定任务运行的CPU/内存资源,比如 --cpus-per-task=4 --mem=8G

# 这里写上你的程序运行命令
/path/to/your/program

然后在node1上提交这个脚本:

sbatch run_on_node2.sh

提交后可以用squeue命令查看任务状态,等任务完成后,输出结果会默认保存在当前目录的slurm-<任务ID>.out文件里。

需要确认的特殊配置

虽然SLURM默认配置大多能满足基础需求,但有几个点最好提前检查:

  • 节点在线状态:在node1上执行sinfo命令,查看node2的状态是否为idle(空闲)或alloc(已分配任务),如果是downdrain状态,说明node2的slurmd服务可能没启动,去node2上执行systemctl status slurmd检查服务状态,必要时重启服务。
  • 共享存储与权限:确保你的用户账号能在node2上正常访问程序和数据——SLURM默认会用你在node1的用户身份登录node2,所以最好把程序、数据放在NFS这类共享存储目录里,或者提前同步到node2本地。
  • SLURM配置正确性:检查控制节点的slurm.conf文件,确认里面有NodeName=node2的正确配置(比如指定了节点的CPU、内存等资源),并且node2被包含在某个分区(Partition)里。如果node2不在任何分区,提交任务时可能需要额外加--partition=<分区名>参数,或者修改slurm.conf把node2加入对应分区。
  • 网络与防火墙:保证node1和node2之间的网络连通性,SLURM通信需要的端口(默认6817、6818等)没有被防火墙拦截,否则控制节点没法调度任务到node2上。

内容的提问来源于stack exchange,提问作者ajthealchemist

火山引擎 最新活动