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.
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
Pourquoi inclure * * cublas.h et cublas_v2.h? Vous devriez choisir une API et l'utiliser seulement ... – talonmies
@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. –