0
我嘗試在我的R
程序包中調用OpenMP
代碼。在src
目錄下的fun.c
文件的OpenMP的區域是這樣的:解決在R中使用OpenMP時出現的封閉並行錯誤
static void mp_func(double *x, double *a, double *b,
double *den, int *P) {
#pragma omp parallel for num_threads(P[0]) default(none) \
firstprivate(length, q, a, b, isLog, lowTail, cdf, R_NaN) private(i) \
reduction(||:naflag)
for (i = 0; i < length; i++){
...
if(some condition) den[i] = R_NaN;
...
if(some condition) den[i] = R_NegInf;
}
}
然而,當我運行R CMD CHECK
,`它給錯誤消息:
enclosing parallel;
和
R_NaN not specified in enclosing parallel;
我不認爲包括R_NaN
和R_NegInf
在private
條款是可能的,所以我怎麼能好嗎?我是否應該將所有操作部分包裝到一個函數中並在OpenMP區域中調用此函數?
您應該先學習如何在C語言中使用OpenMP,然後再嘗試使用它。您還應該提供完整的代碼示例(例如,您在何處定義迭代器「i」)。我認爲你也應該展示你想如何從R中調用這個函數。另外,我沒有看到R因爲你將它設爲靜態而知道'mp_func'。改善你的問題,我會upvote它。 –