如何解决C 如何干扰并行 R 并且可以解决它吗?
我正在尝试在 R 中使用 %dopar% 运行 foreach 循环。
但是,我注意到 .C()
,一个由我循环中的另一个函数调用的函数,给出了以下错误消息:
Error in { : task 1 Failed - "C symbol name "C_SOM" not in load table"
不并行运行似乎工作正常,只需将 %dopar%
更改为 %do%
即可“修复”问题,因为它不会导致错误消息,但是我需要它运行稍后在 HPC 上并行。
我正在尝试分析在某个管道中更改 5 个不同参数的效果。我已经制作了包含我想尝试的不同值的列表:
list_1 <- c(1,2,3)
list_2 <- c(10,20,30)
等等。
我的 foreach 设置如下:
ncores <- detectCores()
cl <- makeCluster(ncores)
registerDoParallel()
foreach(a = list_1,.combine = "rbind") %:%
foreach(b = list_2,.combine = "rbind") %:%
...
foreach(e = list_5,.combine = "rbind",.verbose = T) %dopar% {
test(a,b,c,d,e) } -> output
stopCluster(cl)
我不确定,但它似乎只在某个时候给出错误。使用 496 种参数选项组合,控制台将显示:
.C() 有/没有并行处理有区别吗?有没有办法让它也与 %dopar%
一起工作?
尝试回答 r2evans 的问题: 我获取了包含在我循环遍历的 test() 函数中使用的函数的文件。这些函数调用之一使用 .C() 函数。我猜 foreach 创建的会话都使用 .C() 函数,因为它是循环内调用的函数的一部分。如果我误解了您的问题,我很抱歉,我对此很陌生。
如果我能提供更多信息以更轻松地解决此问题,请告诉我。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。