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它。 –