在 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/