2013-02-12 25 views
0

这听起来很奇怪,但情况是,在将CUDA4升级到CUDA5后,我发现自己的内核运行得更快,但cublas函数(例如cublasDgemm)变慢。此外,cublasDgemm似乎在版本5中调用了一些岩浆东西。我可以导入“cublas”的版本4,而同时导入版本-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 

感谢您的任何建议。

+0

有在运行时verisoning和你不能混建在运行时运行时或库。所以,不,这不会工作。 – talonmies 2013-02-12 21:21:16

+0

另外为什么包含* both *'cublas.h'和'cublas_v2.h'?您应该选择一个API并仅使用它... – talonmies 2013-02-12 21:33:31

+0

@talonmies感谢提醒。我记得当我最初提到cublas4.0手册时,cutlas_v2.h中包含了一些新功能,但我们仍然需要包含cutlas.h以获取一些基本功能。无论如何,这是值得双重检查。 – 2013-02-12 22:07:59

回答

1

在运行时存在版本控制,您不能混合运行时版本,也不能在不同运行时版本上构建库。所以,不,这是行不通的,因为CUBLAS 4.2需要CUDA 4.2运行时库,并且不能用于CUDA 5.0。

[这个答案从评论的社区维基回答相加得到的问题关闭未回答列表]

相关问题