在R中,我使用包" doParallel"和" foreach"并行计算。最近,我在HPC运行该程序。它有四个节点,每个节点有16个处理器。我的R程序只需要4个处理器。但HPC总是将程序分配给占用所有16个处理器的一个节点。所以我不能在那个节点中运行任何其他程序。 如何在一个节点中选择自定义数量的处理器?如何在一个节点中选择未运行程序的处理器? 我用
library(foreach)
library(doParallel)
library(MASS)
registerDoParallel(makeCluster(4))
我只需要使用4个处理器。但是hpc总是将一个程序分配给一个节点中的所有处理器(实际上程序在4个处理器中运行)。 例如,一个节点有16个处理器。我有四个程序,每个程序需要四个核心。如何将四个程序放在一个节点中?
答案 0 :(得分:0)
parallel::detectCores()
应该为您提供核心数量。
我通常使用的习语是parallel::detectCores()
和
library(parallel)
library(doParallel)
num_cores <- detectCores()
cl <- makeCluster(num_cores)
registerDoParallel(cl)
# parallel code here
# stop cores/cluster
stopCluster(cl)
registerDoSEQ()