在 Linux 计算机上,执行以下操作并行的小插图, I use doParallel::registerDoParallel()
然后我用options(cores = N)
where 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 上运行吗?
Edit:我知道如何以不同的方式注册并行后端。目标是使用doParallel::registerDoParallel()
注册一次(在加载我的包时),然后使用一个选项来更改所使用的核心数量。这就是为什么我希望它也能在 Windows 上运行。
包维护者的回答并行,里奇·卡拉威:
Windows 不支持分叉,而这正是并行(和 doParallel)包使用“cores”参数的目的。因此,在 Windows 上,所有“核心”参数都设置为 1。要在 Windows 上通过 doParallel 使用多核,请使用 makeCluster 创建多工作集群 cl,然后注册DoParallel(cl)。
所以这不是一个bug,而是一个非Windows功能,这是一个遗憾。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)