0

OpenACC 計算領域内で GSL 関数を使用できるかどうかをテストしています。Main.c で、GSL 関数を使用する次の (ばかげた) for ループを試します。

#pragma acc kernels
for(int i=0; i<100; i++){
    gsl_matrix *C = gsl_matrix_calloc(10, 10);
    gsl_matrix_free(C);
}

これは、ゼロの 10x10 行列にメモリを割り当ててから、メモリを 100 回解放します。ただし、コンパイルすると、

pgcc -pg -fast -acc -Minfo=all,intensity -lgsl -lgslcblas -lm -o Main Main.c

次のメッセージが表示されます。

PGC-S-0155-Procedures called in a compute region must have acc routine information: gsl_matrix_calloc (Main.c: 60)
PGC-S-0155-Accelerator region ignored; see -Minfo messages  (Main.c: 57)
main:
57, Accelerator region ignored
58, Intensity = 1.00    
Loop not vectorized/parallelized: contains call
60, Accelerator restriction: call to 'gsl_matrix_calloc' with no acc routine information

特に、「acc ルーチン情報」に関する最初と最後のメッセージは、acc 計算領域内で GSL 関数を使用できないことを意味しますか?

4

1 に答える 1