Erreur dans une simple compilation cuda
FSPB_main.cpp
int main(int args, char* argv[]){
.......
float *d_a;
cudaMalloc( (void**)&d_a, 5*sizeof(float) );
}
$ nvcc -L/usr/local/cuda/lib -lcutil -lcudpp -lcuda -lcudart -c -o
FSPB_main.o FSPB_main.cppFSPB_main.cpp: In function ‘int main(int, char**)’:
FSPB_main.rpc:167:45: erreur: ‘cudaMalloc’ n'a pas été déclarée dans ce
portée
Que fait cette erreur signifie? C'est juste un cudaMalloc et il suppose d'être pris en charge par le compilateur droit?
Pouvez les fonctions comme cudaMalloc être utilisé dans un .fichier cpp? Dois-je créer un .cu fichier juste pour tout ce qui vient de CUDA?
OriginalL'auteur Manolete | 2011-06-16
Vous devez vous connecter pour publier un commentaire.
Vous devez inclure les fichiers d'en-tête où les fonctions CUDA sont déclarées:
puis sur la ligne de cmd vous devez également ajouter le CHEMIN d'accès (option
-I
) où ceux qui sont situées.Sur mon système, la version 2.1 de CUDA installé les fichiers d'en-tête sur
/usr/local/cuda
. Pour compiler, je ferais quelque chose comme:N'oubliez pas d'ajouter
-I.
à cette commande si votre code dépendent en-têtes personnalisés, vous avez écrit que sont situés dans le même répertoire que le code source.OriginalL'auteur karlphillip