Мне нужно реализовать функцию, которая у меня уже есть в CUDA-C, используя директивы OpenACC (мне нужно сделать сравнение). В исходном коде есть вызов cubasSgemv, есть ли способ использовать библиотеку cublas под openacc?
Можно ли использовать CUBLAS с OpenACC?
Ответы (1)
Да, для этого вы можете использовать конструкцию host_data
. Вот пример вызова cublasSaxpy из OpenACC:
#pragma acc data create(x[0:n]) copyout(y[0:n])
{
#pragma acc kernels
{
for( i = 0; i < n; i++)
{
x[i] = 1.0f;
y[i] = 0.0f;
}
}
#pragma acc host_data use_device(x,y)
{
cublasSaxpy(n, 2.0, x, 1, y, 1);
}
}
У меня есть другие примеры в статье, которую я написал о совместимости OpenACC несколько месяцев назад. Вы можете найти его по адресу http://www.pgroup.com/lit/articles/insider/v5n2a2.htm .
person
jefflarkin
schedule
04.02.2014
Большое спасибо! Пишу код так, а компилятор говорит: вызов cuEventSynchronize вернул ошибку 700: Ошибка запуска. Итак, я попытался запустить программу с помощью cuda-memcheck и обнаружил, что для двух потоков в каждом блоке возникает ошибка Invalid global read of size 4 (...) address xxx is out of bounds. Может ли это зависеть от первого аргумента cublasSgemv, который имеет тип cublasHandle_t? Я использую статус cublasStatus_t; дескриптор cublasHandle_t; статус=cublasCreate(&handle); чтобы он работал, но я не знаю, как это взаимодействует с OpenACC... пожалуйста, помогите
- person Angantyr; 05.02.2014
конечно! здесь код dropbox.com/s/dh5jhgz2uva78cp/kernel_matrix_calculation.c . Я не знаю, правильный ли это способ опубликовать это, я надеюсь, что это сработает. большое спасибо за вашу помощь. Вам тоже нужен исходный код CUDA-C?
- person Angantyr; 05.02.2014
что-то не так со ссылкой? Извините, что раздражаю вас, но я действительно не знаю, как поступить, некоторые советы будут полезны.
- person Angantyr; 07.02.2014