小编Har*_*dev的帖子

为什么这个并行计算代码只使用1个CPU?

我正在使用foreachparallel库来执行并行计算,但由于某种原因,在运行时,它一次仅使用 1 个 CPU(我使用“top”(Linux 终端上的 Bash)进行查找。

服务器有48核,我尝试过:

  • 使用 24、12 或 5 核
  • 示例代码(如下)
  • 在 Windows 中,出现此类任务,但它们不使用任何 CPU
list.of.packages <- c("foreach", "doParallel")
new.packages <- list.of.packages[!(list.of.packages %in% installed.packages()[,"Package"])]
if (length(new.packages)) install.packages(new.packages)

library(foreach)
library(doParallel)

no_cores <- detectCores() / 2 # 24 cores
cl<-makeCluster(no_cores)
registerDoParallel(cl)

df.a = data.frame(str = cbind(paste('name',seq(1:60000))), int = rnorm(60000))
df.b = data.frame(str = sample(df.a[, 1]))
df.b$int = NA

foreach(row.a = 1:length(df.a$str),
        .combine = rbind,
        .verbose = T)  %dopar% {
          row.b = grep(pattern = df.a$str[row.a], x = …
Run Code Online (Sandbox Code Playgroud)

r parallel-foreach doparallel

5
推荐指数
1
解决办法
1146
查看次数

标签 统计

doparallel ×1

parallel-foreach ×1

r ×1