Итак, у меня есть код, который выполняет умножение матриц, но проблема в том, что он возвращает только нули, когда я использую библиотеку -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
Cublas требует правильно функционирующего графического процессора CUDA.
Возможно, вы не проверяете ошибки. Читайте о том, как сделать проверку ошибок в кублас руководство. И посмотри на некоторые пример кода проверки ошибок.
Обычное использование cublas требует, чтобы данные передавались в графический процессор, а результаты передавались обратно.
Других решений пока нет …