doParallel 包中的选项 "cores" 在 Windows 上没用?
Option "cores" from package doParallel useless on Windows?
在 Linux 计算机上,在 doParallel's vignette 之后,我使用 doParallel::registerDoParallel()
,然后我使用 options(cores = N)
,其中 N
是我想要的内核数与 foreach
一起使用。
我可以用 foreach::getDoParWorkers()
验证,当我更改选项 cores
时,它会自动更改 foreach
使用的内核数。
然而,在 Windows 10(最新版本的 R 和软件包)上,此选项似乎没有任何效果,因为更改其值不会更改 foreach::getDoParWorkers()
的值(在调用 doParallel::registerDoParallel()
).
时在 3
初始化
可重现的例子:
doParallel::registerDoParallel()
options(cores = 1)
foreach::getDoParWorkers()
options(cores = 2)
foreach::getDoParWorkers()
options(cores = 4)
foreach::getDoParWorkers()
这是一个错误吗?它不适用于 Windows 吗?
编辑: 我知道如何以不同方式注册并行后端。目标是使用 doParallel::registerDoParallel()
注册一次(在加载我的包时),然后使用一个选项来更改使用的内核数。这就是为什么我希望它也适用于 Windows.
您必须同时使用 parallel
和 doParallel
软件包进行配置。
- 首先创建集群
注册与
并行
library(parallel)
library(doParallel)
cluster <- makeCluster(3)
registerDoParallel(cluster)
foreach::getDoParWorkers()
[1] 3
停止集群并创建新进程如何?
例如:
stops<-function(cl,n){
stopCluster(cl)
cl<-makeCluster(n)
doParallel::registerDoParallel(cl)
}
doParallel包维护者的回答,Rich Calaway:
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的功能,很遗憾。
在 Linux 计算机上,在 doParallel's vignette 之后,我使用 doParallel::registerDoParallel()
,然后我使用 options(cores = N)
,其中 N
是我想要的内核数与 foreach
一起使用。
我可以用 foreach::getDoParWorkers()
验证,当我更改选项 cores
时,它会自动更改 foreach
使用的内核数。
然而,在 Windows 10(最新版本的 R 和软件包)上,此选项似乎没有任何效果,因为更改其值不会更改 foreach::getDoParWorkers()
的值(在调用 doParallel::registerDoParallel()
).
3
初始化
可重现的例子:
doParallel::registerDoParallel()
options(cores = 1)
foreach::getDoParWorkers()
options(cores = 2)
foreach::getDoParWorkers()
options(cores = 4)
foreach::getDoParWorkers()
这是一个错误吗?它不适用于 Windows 吗?
编辑: 我知道如何以不同方式注册并行后端。目标是使用 doParallel::registerDoParallel()
注册一次(在加载我的包时),然后使用一个选项来更改使用的内核数。这就是为什么我希望它也适用于 Windows.
您必须同时使用 parallel
和 doParallel
软件包进行配置。
- 首先创建集群
注册与
并行library(parallel) library(doParallel) cluster <- makeCluster(3) registerDoParallel(cluster) foreach::getDoParWorkers() [1] 3
停止集群并创建新进程如何?
例如:
stops<-function(cl,n){
stopCluster(cl)
cl<-makeCluster(n)
doParallel::registerDoParallel(cl)
}
doParallel包维护者的回答,Rich Calaway:
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的功能,很遗憾。