2013-02-12 48 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。

[這個答案從評論的社區維基回答相加得到的問題關閉未回答列表]

相關問題