La compilation de code Cuda dans Qt Creator sous Windows
J'ai essayé pendant des jours pour obtenir une Qt fichier de projet en cours d'exécution sur une version 32 bits de Windows 7 système, dans lequel j'ai envie/besoin d'inclure du code Cuda. Cette combinaison de choses est soit si simple que personne n'a jamais pris la peine de mettre un exemple en ligne, ou si difficile que personne n'a jamais réussi, paraît-il. Quelle que soit la manière, la seule utile discussions sur le forum j'ai trouvé le même problème sur Linux ou Mac, ou avec Visual Studio sur un ordinateur Windows.
L'ensemble de ces donner toutes sortes d'erreurs, cependant, si en raison de la liaison ou de heurter les bibliothèques, ou des espaces dans les noms de fichier ou non les dossiers existants dans la version Windows du Cuda SDK.
Est-il quelqu'un qui a une claire .pro
fichier à offrir qui fait le truc?
Je cherche à compiler un simple programme ordinaire de code C++ avec Qt style, avec Qt 4.8 bibliothèques, qui font référence à plusieurs Cuda modules .cu fichiers. Quelque chose de la forme:
TestCUDA \
TestCUDA.pro
main.cpp
test.cu
OriginalL'auteur Yellow | 2012-09-04
Vous devez vous connecter pour publier un commentaire.
J'ai donc finalement réussi à assembler un
.pro
fichier qui fonctionne sur mon et probablement sur tous les systèmes Windows. Ce qui suit est un simple programme de test qui devrait sans doute faire l'affaire. Ce qui suit est un petit fichier de projet, plus de programme de test qui fonctionne au moins sur mon système.Le système de fichier se présente comme suit:
Le fichier de projet se lit comme suit:
}
Note le
QMAKE_LFLAGS_RELEASE = /NODEFAULTLIB:msvcrt.lib
: il m'a fallu du temps pour comprendre, mais cette bibliothèque semble en contradiction avec d'autres choses dans Cuda, qui produit étrange reliant les avertissements et les erreurs. Si quelqu'un a une explication à cela, et potentiellement un joli moyen de contourner ce problème, j'aimerais l'entendre.Aussi, depuis Windows chemins d'accès de fichier incluent souvent des espaces (et NVIDIA SDK par défaut, le fait de trop), il est nécessaire de artificiellement ajoutez des guillemets autour de l'inclure des chemins d'accès. Encore une fois, si quelqu'un connait une façon plus élégante de résoudre ce problème, je serais intéressé de savoir.
La
main.cpp
fichier ressemble à ceci:Le Cuda fichier
vectorAddition.cu
, qui décrit une simple addition de vecteurs, ressembler à ceci:Si vous obtenez ce travail, puis des exemples plus compliqués vont de soi, je pense.
Modifier (24-1-2013): j'ai ajouté le
QMAKE_LFLAGS_DEBUG = /NODEFAULTLIB:msvcrtd.lib
et laCONFIG(debug)
, avec le supplément deD_DEBUG
drapeau, tel qu'il compile également en mode de débogage.vectorAddition.obj
, je reçoisLINK : fatal error LNK1181: cannot open input file 'release\obj\vectorAddition.obj'
. Je remarque quevectorAddition_cuda.o
est créé de sorte qu'il est obtenu passé ce stade,main.obj
est créé. Une idée de comment l'obtenir (cl v. 10, à partir de VS2010) pour fairevectorAddition.obj
?Ok compris mon problème. Vous m'avez sauvé une quantité incroyable de temps ici, merci beaucoup.
Salut, aucune chance de vous mettre une version 64 bits de cela, c'est à dire l'modifié en conséquence .fichier pro? J'ai été à essayer de comprendre comment ajuster les chemins, etc. mais je ne peux pas tout mettre ensemble.
Je n'ai pas un système 64 bits, donc je n'ai aucun moyen de le tester. Mais je pense que tout ce que vous devez faire est de modifier le système de dossier et le type à 64 ans, et de laisser tout le reste la même. Comme ceci:
SYSTEM_NAME = Win32
SYSTEM_TYPE = 32
?Hmm, je crains que je ne peux pas faire beaucoup de sens, mais il faut reconnaître que je n'ai pas beaucoup d'expérience avec le compilateur 64 bits des programmes. Je suis un peu surpris que l'avertissement dit qu'il est à la recherche de chose dans
/lib
. Êtes-vous sûr que vous avez changéSYSTEM_NAME
àx64
? Si ce n'est pas ça, je vous suggère de commencer un nouveau sujet sur exactement cette erreur.OriginalL'auteur Yellow
À l'aide de msvc 2010, j'ai constaté que l'éditeur de liens n'accepte pas le paramètre-l, cependant nvcc besoins. Donc j'ai fait un simple changement dans la .pro fichier:
Et les nvcc de commande (version):
$$NVCC_LIBS a été inséré à la place de $$LIBS.
L'ensemble de l' .fichier pro, qui fonctionne pour moi:
J'ai également ajouté un certain nombre de déclarations, c'est à dire l'intervalle QT += core pour que l'application fonctionne, et a également supprimé le SDK partie, que je n'ai pas trouvé d'utile dans ce cas.
OriginalL'auteur Kędrzu
J'ai essayé cette combinaison de travail. Ne pouvait pas le faire fonctionner en raison d'un certain nombre de dépendances en
mon projet.
Ma dernière solution était de sortir de l'application en deux applications distinctes sur Windows
1)
Espère qu'il permet d'économiser du temps des autres
OriginalL'auteur Tariq