gpt4 book ai didi

linux - 与 Linux 中的 Foreach 和 doMC 包并行 - mclapply 出错

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:20:52 29 4
gpt4 key购买 nike

我想在 Linux 中运行并行计算。在我设法在 Windows 中这样做之后,我需要在 Linux 中运行下面的函数。我将包 doSnow 更改为应该在 Linux 中工作的 doMC,但我收到与 mclapply 相关的错误。

代码:

foreachFunc = function(Data) {

RowFunction<-function(d)
{
(chisq.test(d)$p.value)}

P<-as.matrix(apply(Data,1,RowFunction))

return(P)}

library(doMC)
library(foreach)

number_of_cpus=4
cl<-makeCluster(number_of_cpus)
registerDoMC(cl)


Chunks<-c(1:NROW(Data_new))%%4

P<-foreach(i=0:3, .combine=rbind, mc.cores=4) %dopar% {
foreachFunc(Data_new[Chunks==i, ])}
stopCluster(cl)

错误:

Error in mclapply(argsList, FUN, mc.preschedule = preschedule, mc.set.seed = set.seed,  : 
(list) object cannot be coerced to type 'integer'

最佳答案

阅读 vignette("gettingstartedMC")。我可以像这样重现你的错误:

number_of_cpus=4
cl<-makeCluster(number_of_cpus)
registerDoMC(cl)
P<-foreach(i=0:3) %dopar% i
#Error in mclapply(argsList, FUN, mc.preschedule = preschedule, mc.set.seed = set.seed, :
# (list) object cannot be coerced to type 'integer'
stopCluster(cl)

这按预期工作:

registerDoMC(cores=4)
P<-foreach(i=0:3) %dopar% i

说明:registerDoMC 的第一个参数需要一个整数值。你给了它一个列表,即 makeCluster 的返回对象。

关于linux - 与 Linux 中的 Foreach 和 doMC 包并行 - mclapply 出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21966638/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com