【发布时间】:2014-09-01 13:14:58
【问题描述】:
我正在使用 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);
}
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机器?
-
我只有本地 Windows 机器。没有服务器
标签: r parallel-processing rcpp