L'habitude de travailler "hors de la boîte" ou comment nous avons poussé CUDA dans .vcxproj

image

CUDA



Pourquoi?



Peut-être répondrai-je immédiatement pourquoi une telle solution a été inventée. Quand nous avons gardé le projet sous forme d'OpenSource, nous avons essayé de garder la politique de «télécharger le code, assemblé avec un seul bouton», mais depuis l'utilisation de la technologie CUDA, la situation est devenue plus compliquée ... qu'ils n'allaient rien installer et qu'ils ne voulaient pas installer de SDK tiers.



Intégration de CUDA directement dans .vcxproj



Nous avons résolu le problème très simplement: nous avons inséré la ligne de commande CUDA dans les "événements de pré-construction" et l'ensemble d'outils dans le SDK / tools / CUDA.



Événements de pré-construction



Les événements de pré-construction sont une liste de commandes qui seront exécutées au stade initial de la compilation.



CMD pour l'intégration CUDA ressemble à ceci "

nvcc.exe -gencode=arch=compute_30,code=\"sm_30,compute_30\" --use-local-env -x cu  -I..\..\engine.vc2008\xrCore\XMLCore -I../../sdk/include/dx/ -I../../sdk/include/ -I..\..\engine.vc2008\xrQSlim\src -I../../sdk/include/optix/ -I../../sdk/include/cuda/ -I$(xrIncl)  -G   --keep-dir $(Platform)\$(Configuration) -maxrregcount=0  --machine 64 --compile -cudart static  -g   -DFORCE_NO_EXCEPTIONS -D_USE_MATH_DEFINES -DWIN32 -DDEBUG -D_WINDOWS -D_USRDLL -DXRLC_LIGHT_EXPORTS -D_SECURE_SCL=0 -D_ITERATOR_DEBUG_LEVEL=0 -D_VC80_UPGRADE=0x0710 -DWIN32 -D_WINSOCK_DEPRECATED_NO_WARNINGS -D_CRT_SECURE_NO_WARNINGS -D_WINDLL -D_MBCS -Xcompiler "/EHsc /W3 /nologo /Od /FS /Zi /RTC1 /MD " -o $(IntermediateOutputPath)LightPoint.cu.obj "$(ProjectDir)LightPoint.cu"
      
      





Ce code est explicite, car il est simplement copié depuis CMD depuis CUDA de votre projet



Nous sortons le jeu d'outils



Eh bien, le processus ici est très simple: nous essayons de le construire, attraper l'erreur, supprimer .exe / .dll -> vérifier à nouveau. Pour vous faciliter la vie:

  • nvcc.exe
  • nvcc.profile
  • nvlink.exe
  • nvvm64_32_0.dll
  • ptxas.exe
  • cudafe ++. exe
  • fatbinary.exe
  • cicc.exe
  • bin2c.exe
  • gpu-library-advisor.exe




Mise en page



Eh bien, et la chose la plus simple à la fin est de connecter le fichier .cu compilé au lien: Propriétés -> Linker -> Ligne de commande et entrez your_file_name.cu.obj dans des options supplémentaires .



Conclusion



Ainsi, tout propriétaire de VS n'aura pas besoin du SDK CUDA installé lors de la construction de votre projet.



All Articles