0
R
パッケージにOpenMP
コードを呼び出そうとしています。 src
ディレクトリの下fun.c
ファイル内のOpenMP地域は次のようである:OpenMPを使用してRを囲む並列エラーを解決する
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;
private
句にR_NaN
とR_NegInf
を含めることはできないと思いますので、どうすればいいですか?それとも?すべての操作部分を関数にラップし、この関数をOpenMP領域で呼び出す必要がありますか?
OpenMPをC言語で使用する前に、まずOpenMPを使用する方法を学ぶ必要があります。完全なコード例(例:イテレータiを定義する場所)も提供する必要があります。 Rからこの関数をどのように呼び出すかを示すべきであることを示すべきだと思います。また、静的にしたので、Rが 'mp_func'について知る方法は見当たりません。あなたの質問を改善し、私はそれをupvoteします。 –