介绍
nslurm 是一个用于管理 Slurm 集群任务与节点的 npm 包。Slurm 是一种较为常用的高性能计算应用程序,用于管理大规模、复杂的任务和节点的分布式系统。nslurm 可以方便地与 Slurm 集群进行交互,通过它,我们可以轻松地创建、删除、查询任务以及监控节点状态等操作。
安装
在安装 nslurm 之前,需要确保本地已经安装了 Node.js 和 npm,安装方法可参考官方文档。之后,在终端中运行以下命令便可以安装 nslurm。
npm install nslurm
使用
1. 连接 Slurm 集群
要使用 nslurm,必须先建立与 Slurm 集群的连接。这需要指定集群的 IP 地址和端口,以及一个认证令牌(如果 Slurm 集群不需要认证,可以简单地将令牌设置为空字符串)。以下是连接集群的示例代码:
const nslurm = require('nslurm'); const cluster = nslurm.connect({ host: '192.168.1.100', port: 8080, token: 'secret-token' });
连接成功后,可以通过 cluster
对象来管理 Slurm 集群。
2. 创建任务
使用 cluster
对象的 createJob
方法可以创建一个新的任务。需要指定任务的名称、提交脚本(位于本地系统中的文件路径)、分配的节点数量及每个节点的 CPU 核数等参数。以下是一个创建任务的示例代码:
const job = await cluster.createJob({ name: 'example-simulation', script: '/home/myuser/simulation.sh', nodes: 4, tasksPerNode: 1, cpusPerTask: 4 }); console.log(job.id);
上述代码将创建一个名为 example-simulation
的任务,该任务需要 4 个节点,每个节点上有 1 个进程,每个进程占用 4 个 CPU 核。任务提交后,会返回该任务的 ID(job.id
)。
3. 查询任务
可以使用 cluster
对象的 listJobs
方法来查看当前集群中的所有任务。数据可以按照某个字段排序,也可以进行筛选等操作。以下是一个查询任务的示例代码:
const jobs = await cluster.listJobs({ sortBy: 'name', limit: 10, filter: { state: 'RUNNING' } }); console.log(jobs.length);
上述代码查询当前运行状态的任务,按照任务名称进行排序,最多返回 10 个任务。
4. 删除任务
要删除一个任务,需要知道它的任务 ID。可以使用 cluster
对象的 deleteJob
方法来删除任务。以下是一个删除任务的示例代码:
await cluster.deleteJob(123);
上述代码将删除任务 ID 为 123 的任务。如果任务正在运行,它将被终止并从 Slurm 集群中移除。
5. 监控节点
可以使用 cluster
对象的 listNodes
方法来获取当前集群中的节点状态。以下是一个查询节点状态的示例代码:
const nodes = await cluster.listNodes(); console.log(nodes[0].state);
上述代码将输出集群中首个节点的状态。
结语
nslurm 提供了一种方便的方式来管理 Slurm 集群,尤其是对于需要频繁与 Slurm 集群交互的开发者而言,它将大幅度提高工作效率。通过学习本文,读者可以学会如何连接 Slurm 集群、创建、查询和删除任务,以及获取节点状态等操作。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60066f923d1de16d83a66b2b