El hábito de trabajar "fuera de la caja" o cómo introdujimos CUDA en .vcxproj

imagen

CUDA



¿Para qué?



Quizás, responderé de inmediato por qué se inventó tal solución. Cuando mantuvimos el proyecto en forma de OpenSource, intentamos mantener la política de “descargar el código, ensamblado con un botón”, pero desde que usamos la tecnología CUDA, la situación se ha vuelto más complicada ... La mayoría de la comunidad gritó que no iban a instalar nada y que no querían instalar SDK de terceros.



Integración de CUDA directamente en .vcxproj



Resolvimos el problema de manera bastante simple: introducimos la línea de comandos CUDA en los "eventos previos a la compilación" y el conjunto de herramientas en el SDK / tools / CUDA.



Eventos previos a la construcción



Los eventos previos a la compilación son una lista de comandos que se ejecutarán en la etapa inicial de compilación.



CMD para la integración de CUDA se ve así "

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 se explica por sí mismo, ya que se acaba de copiar de CMD de CUDA de su proyecto



Sacamos el conjunto de herramientas



Bueno, el proceso aquí es muy simple: intentamos construirlo, detectar el error, soltar .exe / .dll -> verificar nuevamente. Para hacer la vida más 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




Diseño



Bueno, y lo más simple al final es conectar el archivo .cu compilado al enlace: Propiedades -> Vinculador -> Línea de comando e ingrese your_file_name.cu.obj en opciones adicionales .



Conclusión



Por lo tanto, cualquier propietario de VS no necesitará tener instalado CUDA SDK al construir su proyecto.



All Articles