我正在Windows上使用Rcpp和并行计算进行R代码优化。我在调用parLapply中的Rcpp函数时遇到了麻烦。这个例子是继在Windows的parLapply中使用Rcpp函数
RCPP代码(TEST.CPP)
#include <Rcpp.h>
using namespace Rcpp;
// [[Rcpp::export]]
NumericVector payoff(double strike, NumericVector data) {
return pmax(data - strike, 0);
}
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)
错误的水货版本
Error in checkForRemoteErrors(val) :
8 nodes produced errors; first error: NULL value passed as symbol address
我知道,这是一个Windows的问题,因为mclapply在Linux上运行良好,但我没有像Windows那样强大的Linux机器。
任何想法如何解决它?
请澄清一下:您在win机器上运行代码,服务器也是win机器? – Roland 2014-09-01 13:21:12
我只有本地Windows机器。没有服务器 – kismsu 2014-09-01 13:26:30