我正在测试是否可以在 OpenACC 计算区域中使用 GSL 函数。在 Main.c 我尝试使用 GSL 函数的以下(愚蠢的)循环,
#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 函数?