O hábito de trabalhar "fora da caixa" ou como colocamos CUDA em .vcxproj

imagem

CUDA



Pelo que?



Talvez, eu responda imediatamente porque tal solução foi inventada. Quando mantivemos o projeto no formato OpenSource, tentamos manter a política de “baixar o código, montado com um botão”, mas com a utilização da tecnologia CUDA a situação ficou mais complicada ... Grande parte da comunidade gritou que eles não iriam instalar nada e não queriam instalar SDKs de terceiros.



Integração de CUDA diretamente em .vcxproj



Resolvemos o problema de forma bastante simples: colocamos a linha de comando CUDA nos "eventos de pré-construção" e o conjunto de ferramentas no SDK / tools / CUDA.



Eventos de pré-construção



Os eventos de pré-construção são uma lista de comandos que serão executados no estágio inicial de compilação.



CMD para integração CUDA se parece com isto "

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"
      
      





Este código é autoexplicativo, uma vez que é apenas copiado do CMD do CUDA do seu projeto



Tiramos o conjunto de ferramentas



Bem, o processo aqui é muito simples: tentamos construí-lo, detectamos o erro, descartamos .exe / .dll -> verifique novamente. Para tornar a vida mais fácil:

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




Layout



Bem, e a coisa mais simples no final é conectar o arquivo .cu compilado ao link: Propriedades -> Linker -> Linha de comando e inserir your_file_name.cu.obj em opções adicionais .



Conclusão



Assim, qualquer proprietário de VS não precisará do SDK CUDA instalado ao construir seu projeto.



All Articles