Можете ли вы использовать cublasDdot (), чтобы использовать операции blas в памяти не-GPU?

Итак, у меня есть код, который выполняет умножение матриц, но проблема в том, что он возвращает только нули, когда я использую библиотеку -lcublas и компилятор nvcc; тем не менее, код отлично работает с несколькими изменениями имен функций, когда я использую компилятор g ++ с библиотекой -lblas.

Можете ли вы использовать библиотеку -lcublas для выполнения умножения матриц из памяти, которой нет в GPU?

Вот код, который возвращает 0:

extern "C" //external reference to function so the code compiles
{
double cublasDdot(int *n, double *A, int *incA, double *B, int *incB);
}

//stuff happens

cout << "Calculating/printing the contents of Matrix C for ddot...\n";
C[i][t]=cublasDdot(&n, partA, &incA, partB, &incB); //This thing isn't working for some reason (although it compiles just fine)

Я скомпилирую его с помощью этой команды: nvcc program -lcublas

Это работает, однако:

extern "C" //external reference to function so the code compiles
{
double ddot_(int *n, double *A, int *incA, double *B, int *incB);
}

//stuff happens

C[i][t]=ddot_(&n, partA, &incA, partB, &incB);

составлено с g++ program -lblas

-1

Решение

Cublas требует правильно функционирующего графического процессора CUDA.

Возможно, вы не проверяете ошибки. Читайте о том, как сделать проверку ошибок в кублас руководство. И посмотри на некоторые пример кода проверки ошибок.

Обычное использование cublas требует, чтобы данные передавались в графический процессор, а результаты передавались обратно.

1

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector