听起来可能很奇怪,但情况是,在将 CUDA4 升级到 CUDA5 后,我发现自己的内核运行得更快,但 cublas 函数(例如 cublasDgemm)变得更慢。此外,cublasDgemm 似乎在版本 5 中调用了一些岩浆材料。
所以,我想知道我是否可以为“cublas”导入版本 4,而为“cudart”库导入版本 5。作为一个简单的试验,我有一个代码(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”。有趣的是,它在“module load cuda4”时编译,然后它报告:
cudart version: 4010
cublas version: 4010
这不是我想要的cudart。此外,当我“模块加载 cuda5”时,它仍然编译,但运行可执行文件失败:
./a.out: error while loading shared libraries: libcudart.so.4: cannot open shared object file: No such file or directory
感谢您的任何建议。