2013-02-12 1 views
0

Cela peut sembler bizarre, mais la situation est, après la mise à jour de CUDA4 à CUDA5, j'ai trouvé que mon propre noyau tourne plus vite, mais les fonctions de cublas (par exemple cublasDgemm) deviennent plus lentes. Donc, cublasDgemm semble appeler des trucs de magma dans la version 5.Puis-je importer la version-4 pour "cublas" alors qu'importer la version-5 pour la bibliothèque "cudart" en même temps?

Donc, je me demande si je pourrais importer la version-4 pour "cublas" alors qu'importe la version-5 pour la bibliothèque "cudart". En tant que simple essai, j'ai un code (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; 
} 

et essayé:

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 

Mon système a une configuration "module", et j'ai essayé à la fois pour « charger le module cuda4 "et" module charge cuda5 ". Fait intéressant, il a compilé lorsque « cuda4 de charge du module », puis il a rapporté:

cudart version: 4010 
cublas version: 4010 

qui est pas ce que je voulais pour cudart. De plus, quand je "charger le module cuda5", il encore compilé, mais l'exécution du excutable a échoué avec:

./a.out: error while loading shared libraries: libcudart.so.4: cannot open shared object file: No such file or directory 

Merci pour toutes suggestions.

+0

Il est verisoning dans le temps d'exécution et vous ne pouvez pas mélanger runtimes ou des bibliothèques construites sur le moteur d'exécution. Donc, non, ça ne marchera pas. – talonmies

+0

Pourquoi inclure * * cublas.h et cublas_v2.h? Vous devriez choisir une API et l'utiliser seulement ... – talonmies

+0

@talonmies Merci de nous le rappeler. Je me souviens un peu quand je me suis référé au manuel de cublas4.0, quelques nouvelles fonctionnalités ont été incluses dans cutlas_v2.h, mais nous devons toujours inclure cutlas.h pour certaines fonctionnalités de base. Cela vaut la peine d'un double contrôle de toute façon. –

Répondre

1

Il existe une vérification à l'exécution et vous ne pouvez pas mélanger des versions d'exécution, ni des bibliothèques construites sur des versions d'exécution différentes. Donc, non, cela ne fonctionnera pas car CUBLAS 4.2 requiert la bibliothèque d'exécution CUDA 4.2 et ne peut pas fonctionner avec CUDA 5.0.

[Cette réponse a ajouté des commentaires comme une réponse wiki de la communauté pour obtenir la question de la liste sans réponse]

Questions connexes