Я выполняю оптимизацию кода R с помощью Rcpp и параллельных вычислений в Windows. У меня есть проблема с вызовом функции Rcpp в parLapply. Пример следующиеИспользование функции Rcpp в parLapply в Windows
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, но у меня нет такой мощной машины Linux, как у Windows.
Любые идеи, как исправить это?
Просьба уточнить: вы запускаете код на выигрышной машине, а сервер также является выигрышной машиной? – Roland
У меня есть только локальная машина Windows. Нет сервера – kismsu