You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何让doFuture在LSF调度的HPC上利用多节点核心?

问题

我正在用R包doFuture计算大计算量的样本量,本地代码如下:

library(MAMS)
plan(multisession, workers = 12)
mams(K=4, J=3, alpha=0.05, power=0.9, r=1:3, r0=1:3, p=0.65, p0=0.55, 
     ushape="triangular", lshape="triangular", nstart=30)

我想在采用LSF调度器的HPC上运行代码并测试多参数场景,编写了如下批处理文件:

#!/bin/bash
#BSUB -J mams
#BSUB -P acc_user
#BSUB -q premium
#BSUB -n 24
#BSUB -W 120:00
#BSUB -oo %J.stdout
#BSUB -eo %J.stderr
 
#BSUB -L /bin/bash

module load openmpi
module load R

R CMD BATCH --no-save --no-restore '--args nc=2' sample_size.R output.Rout

根据doFuture文档,我把R代码中plan的参数从multisession改为cluster:

library(MAMS)
plan(cluster, workers = 12)
mams(K=4, J=3, alpha=0.05, power=0.9, r=1:3, r0=1:3, p=0.65, p0=0.55, 
     ushape="triangular", lshape="triangular", nstart=30)

但HPC管理员指出我的作业无法利用多节点核心,资源使用效率低,要求我在批处理文件中添加#BSUB -R span[hosts=1],我已照做。现在想知道:如何让doFuture在LSF调度的HPC上使用多节点核心?

解决方案

要让doFuture在LSF HPC上利用多节点核心,需从批处理脚本和R代码两方面调整:

1. 修改LSF批处理脚本

删除之前添加的#BSUB -R span[hosts=1]参数——这个参数会强制作业仅使用单个节点,是多节点利用的核心限制。修改后的脚本如下:

#!/bin/bash
#BSUB -J mams
#BSUB -P acc_user
#BSUB -q premium
#BSUB -n 24  # 总核心数,可根据需求调整
#BSUB -W 120:00
#BSUB -oo %J.stdout
#BSUB -eo %J.stderr
 
#BSUB -L /bin/bash

module load openmpi
module load R

R CMD BATCH --no-save --no-restore sample_size.R output.Rout

2. 调整R代码以适配多节点集群

不要硬指定workers数量,而是通过LSF环境变量自动获取分配的节点信息,创建跨节点的PSOCK集群:

library(MAMS)
library(future)
library(parallel)
library(parallelly)

# 自动识别LSF分配的所有节点与核心
workers <- availableWorkers()

# 创建跨节点的PSOCK集群
cl <- makeClusterPSOCK(workers)

# 设置future执行计划为集群模式
plan(cluster, workers = cl)

# 执行样本量计算
mams(K=4, J=3, alpha=0.05, power=0.9, r=1:3, r0=1:3, p=0.65, p0=0.55, 
     ushape="triangular", lshape="triangular", nstart=30)

# 计算完成后关闭集群,释放资源
stopCluster(cl)

关键说明

  • availableWorkers()函数(来自parallelly包)会自动读取LSF的LSB_HOSTS环境变量,返回所有分配节点的地址列表,无需手动指定节点。
  • makeClusterPSOCK()创建的PSOCK集群支持跨节点通信,HPC环境一般已配置好节点间的无密码SSH访问,无需额外设置。
  • 避免硬编码workers数量,确保作业能充分利用LSF分配的所有核心。

内容的提问来源于stack exchange,提问作者Márcio Augusto Diniz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 05:23:18