2016-10-12 24 views
0

Я тестирую, могу ли я даже использовать функции GSL в областях вычисления OpenACC. В main.c я попробовать следующее (глупое) для цикла, который использует функцию GSL,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); 
} 

который выделяет память для 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 

В частности, сделать первые и последние сообщения относительно «согласно обычной информации», означает, что это не представляется возможным использовать функции GSL в пределах соответствующих вычислительных регионов?

ответ

0

Я не видел прямой поддержки библиотек GSL.

Вам необходимо будет получить исходный код для процедур GSL, которые вы используете, и вставить прайсы «! $ Acc», где определены подпрограммы или функции.

Это даст указание компилятору генерировать ядра для графического процессора. После этих прагматических вставок вы должны скомпилировать библиотеки GSL с помощью флага -acc во время компиляции.

 Смежные вопросы

  • Нет связанных вопросов^_^