相关疑难解决方法(0)

Windows 7上的内联函数的doParallel问题(适用于Linux)

我在Windows 7和Linux(SUSE Server 11(x86_64))上都使用R 3.0.1.以下示例代码在Windows上产生错误,但在Linux上不产生错误.列出的所有工具箱在两台机器中都是最新的.Windows错误是:

Error in { : task 1 failed - "NULL value passed as symbol address"
Run Code Online (Sandbox Code Playgroud)

如果我更改%dopar% to %do%,Windows代码运行没有任何错误.我最初的猜测是,这与Windows中的一些配置问题有关,我尝试重新安装Rcpp和R,但这没有帮助.该错误似乎与作用域有关 - 如果我在f1中定义并编译函数cFunc,那么%dopar%可以正常工作,但是因为我们为每个任务调用一次编译器,所以它非常慢.

有没有人对错误发生的原因或如何解决它的建议有一些见解?

library(inline)
sigFunc <- signature(x="numeric", size_x="numeric")
code <- ' double tot =0;
for(int k = 0; k < INTEGER(size_x)[0]; k++){
tot += REAL(x)[k];
};
return ScalarReal(tot);
' 
cFunc <- cxxfunction(sigFunc, code)

f1 <- function(){
x <- rnorm(100)
a <- cFunc(x=x, size_x=as.integer(length(x)))
return(a)
}

library(foreach)
library(doParallel)
registerDoParallel()
# this produces an error in …
Run Code Online (Sandbox Code Playgroud)

r inline

5
推荐指数
1
解决办法
1930
查看次数

标签 统计

inline ×1

r ×1