Это может показаться странным, но ситуация после обновления CUDA4 до CUDA5 я обнаружил, что мое собственное ядро работает быстрее, но функции cublas (например, cublasDgemm) замедляются. Кроме того, cublasDgemm, похоже, вызывает некоторые вещи магмы в версии 5.Могу ли я импортировать версию-4 для «cublas», тогда как импортировать версию-5 для библиотеки «cudart» одновременно?
Итак, интересно, смогу ли я импортировать версию-4 для «cublas», а импортировать версию-5 для библиотеки «cudart». В качестве простого суда, у меня есть код (mycode.cc):
#include <iostream>
#include <stdio.h>
#include <cublas.h>
#include <cublas_v2.h>
using namespace std;
int main()
{
int ver;
cudaRuntimeGetVersion(&ver);
cout<<"cudart version: "<<ver<<endl;
cublasHandle_t hdl;
cublasCreate(&hdl);
cublasGetVersion(hdl, &ver);
cout<<"cublas version: "<<ver<<endl;
}
и пытался:
g++ -I /opt/cuda/include/ -L /opt/cuda/lib64/ -lcudart -I /opt/cuda-5.0/include/ -L /opt/cuda-5.0/lib64/ -lcublas mycode.cc
Моя система имеет «модуль» настройки, и я попытался как для «нагрузки cuda4 модуля "и" Загрузка модуля cuda5 ". Интересно, что он компилируется когда «cuda4 модуль нагрузки», а затем она сообщила:
cudart version: 4010
cublas version: 4010
, который не то, что я хотел для cudart. Более того, когда я «модуль загрузки cuda5», он по-прежнему компилируется, но запуск excutable неудачу с:
./a.out: error while loading shared libraries: libcudart.so.4: cannot open shared object file: No such file or directory
Спасибо за любые предложения.
Там будет verisoning во время выполнения, и вы не можете смешивать время автономной работы или библиотеки, построенные на время выполнения. Итак, нет, это не сработает. – talonmies
Также включают * оба * 'cublas.h' и' cublas_v2.h'? Вы должны выбрать один API и использовать только его ... – talonmies
@talonmies Спасибо за напоминание. Я помню, когда я первоначально ссылался на руководство cublas4.0, некоторые новые функции были включены в cutlas_v2.h, но нам все равно нужно включить cutlas.h для некоторых основных функций. В любом случае стоит дважды проверить. –