kis*_*msu 4 parallel-processing r rcpp
我正在使用Rcpp和Windows上的并行计算进行R代码优化.我在parLapply中调用Rcpp函数时遇到问题.这个例子如下
Rcpp代码(test.cpp)
#include <Rcpp.h>
using namespace Rcpp;
// [[Rcpp::export]]
NumericVector payoff( double strike, NumericVector data) {
return pmax(data - strike, 0);
}
Run Code Online (Sandbox Code Playgroud)
R代码
library(parallel)
library(Rcpp)
sourceCpp("test.cpp")
strike_list <- as.list(seq(10, 100, by = 5))
data <- runif(10000) * 50
# One core version
strike_payoff <- lapply(strike_list, payoff, data)
# Multiple cores version
numWorkers <- detectCores()
cl <- makeCluster(numWorkers, type = "PSOCK")
clusterExport(cl = cl,varlist = "payoff")
strike_payoff <- parLapply(cl, strike_list, payoff, data)
Run Code Online (Sandbox Code Playgroud)
并行版本出错
Error in checkForRemoteErrors(val) :
8 nodes produced errors; first error: NULL value passed as symbol address
Run Code Online (Sandbox Code Playgroud)
我知道这是一个Windows问题,因为mclapply在Linux上运行良好,但我没有像Windows那样强大的Linux机器.
任何想法如何解决它?