2016-10-12 15 views
0

OpenACC計算領域内でGSL関数を使用できるかどうかを調べるためにテストしています。 MAIN.CでIはGSLの関数を使用するforループ下記(愚か)、ゼロの10×10マトリックスのためのメモリを割り当て、そして次にメモリ、100回を解放OpenACCはGNU科学ライブラリ(GSL)と互換性がありますか?

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

を試みます。しかし、私は、コンパイル時に、私はGSLの関数を使用することはできないという意味で、次のメッセージ、特に

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ルーチン情報」に関する最初と最後のメッセージの操作を行い得る

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

acc計算領域内で?

答えて

0

私はGSLライブラリを直接サポートしていません。

使用しているGSLルーチンのソースコードを入手し、サブルーチンまたは関数が定義されている場所に "!$ acc routine"プラグマを挿入する必要があります。

これは、GPU用のカーネルを生成するようにコンパイラに指示します。これらのプラグマの挿入に続いて、コンパイル時に -accフラグを使用してGSLライブラリをコンパイルする必要があります。

関連する問題