r - 来自软件包 doParallel 的选项 "cores"在 Windows 上没用?

标签 r doparallel parallel-foreach

在 Linux 计算机上,关注 doParallel's vignette , 我用 doParallel::registerDoParallel()然后我使用 options(cores = N)哪里N是我想与 foreach 一起使用的内核数.

我可以用 foreach::getDoParWorkers() 验证当我更改选项时 cores ,它会自动更改 foreach 使用的内核数.

然而,在 Windows 10(最新版本的 R 和软件包)上,此选项似乎没有任何影响,因为更改其值不会更改 foreach::getDoParWorkers() 的值。 (在调用 3 时在 doParallel::registerDoParallel() 处初始化)。

可重现的例子:

doParallel::registerDoParallel()
options(cores = 1)
foreach::getDoParWorkers()
options(cores = 2)
foreach::getDoParWorkers()
options(cores = 4)
foreach::getDoParWorkers()

这是一个错误吗?它不能在 Windows 上工作吗?

编辑:我知道如何以不同的方式注册并行后端。目标是使用 doParallel::registerDoParallel()注册一次(在我的包加载时),然后使用一个选项来更改使用的核心数。这就是为什么我希望它也能在 Windows 上运行。

最佳答案

包维护者的回答 doParallel ,富卡拉威:

Windows does not support forking, which is what the parallel (and doParallel) packages use the “cores” argument for. So, on Windows, all “cores” arguments are set to 1. To use multiple cores on Windows with doParallel, use makeCluster to create a multiple worker cluster cl, then registerDoParallel(cl).



所以这不是一个错误,而是一个非 Windows 功能,这是一个遗憾。

关于r - 来自软件包 doParallel 的选项 "cores"在 Windows 上没用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45819337/

相关文章:

r - 如何在ggplot2中添加纹理以填充颜色

r - 在并行 foreach 计算中使用标准 R Shiny 进度条

r - doParallel(包)foreach 不适用于 R 中的大迭代

r - 如何在R中的并行任务中删除临时文件

r - ggplot2:基于颜色以外的变量进行位置躲避

r - xtable 和标题对齐

r - 在 R 中使用 Rmpfr 进行精确舍入

java - 使用 parLapply 将数据帧写入 Oracle 数据库时出现 JVM 错误

r - 当应用于 df[i,] 中的数据帧时, foreach %dopar% 实际在做什么

R并行共享内存对象(Windows)