¿Cómo comienzo una aplicación CUDA en Visual Studio 2010?

Pregunta directa: ¿Cómo creo un proyecto simple de hello world CUDA en Visual Studio 2010?

Antecedentes: he escrito núcleos CUDA. Estoy íntimamente familiarizado con los archivos .vcproj de Visual Studio 2005, modificados varios a mano. En VS 2005, si quiero construir un kernel CUDA, agrego una regla de comstackción personalizada y luego defino explícitamente la llamada nvcc para comstackr los archivos.

He migrado a Win 7 y VS 2010 porque realmente quiero probar nSight. Tengo nSight 1.5 instalado. Pero aquí es donde estoy totalmente perdido. Si procedo como antes, nvcc informa que solo es compatible con msvc 8.0 y 9.0. Pero el sitio web indica claramente que es compatible con VS 2010.

Leí en otro lado que necesito tener VS 2008 (msvc 9.0) también instalado – mi palabra. Haciéndolo ahora.

Pero supongo que al menos parte de mis problemas provienen de las especificaciones propias de la herramienta de construcción personalizada. Varios sitios web hablan de agregar un archivo * .rules a la comstackción, pero he deducido que esto solo es aplicable a VS 2008. En “Personalizaciones de comstackción” veo CUDA 3.1 y 3.2, pero cuando agrego kernels al proyecto no están disponibles. ‘t construido. Otro sitio web proclama que la clave son tres archivos: Cuda.props Cuda.xml Cuda.targets , pero no dice cómo ni dónde agregar estos archivos, o más bien apuesto a que simplemente no entiendo las notas. referenciado en el sitio web.

Entonces, ¿alguien sabe cómo crear un proyecto simple en VS 2010 que construye un kernel CUDA usando la configuración nSight 1.5 o el archivo NvCudaRuntimeApi.v3.2.rules que se envía con CUDA 3.2 RC?

¡Gracias por adelantado! Ofrecería una recompensa, pero solo tengo 65 puntos en total.

CUDA TOOLKIT 4.0 y posterior

El archivo de personalizaciones de comstackción (instalado en el directorio Program Files\MSBuild\Microsoft.Cpp\v4.0\BuildCustomizations ) “le enseña” a Visual Studio a comstackr y vincular cualquier archivo .cu de su proyecto a su aplicación. Si elige omitir la instalación de las personalizaciones, o si instaló VS2010 después de CUDA, puede agregarlas más adelante siguiendo las instrucciones en Program Files\NVIDIA GPU Computing Toolkit\CUDA\v4.0\extras\visual_studio_integration .

  • Cree un nuevo proyecto utilizando los asistentes de MS estándar (por ejemplo, un proyecto de consola vacío)
  • Implemente su código de host (serie) en archivos .c o .cpp
  • Agregue la personalización de comstackción de NVIDIA (haga clic con el botón derecho en el proyecto, cree personalizaciones , marque la casilla correspondiente de CUDA)
  • Ver nota 1 si usa CUDA 4.0
  • Implementa tus envoltorios y kernels en archivos .cu
  • Si agregó archivos .cu antes de las personalizaciones de comstackción, deberá establecer el tipo de archivos .cu en CUDA C/C++ (haga clic con el botón derecho en el archivo, Propiedades , configure Tipo de elemento )
  • Agregue la biblioteca de tiempo de ejecución de CUDA (haga clic con el botón derecho en el proyecto y elija Propiedades , luego en Enlazador -> Ingrese agregue cudart.lib a las Dependencias Adicionales )
  • Luego, simplemente crea tu proyecto y los archivos .cu se comstackrán en .obj y se agregarán al enlace automáticamente.

Incidentalmente, recomendaría evitar el corte si es posible, en lugar de eso, ejecute su propia verificación. Cutil no es compatible con NVIDIA, solo se usa para tratar de mantener los ejemplos en el SDK enfocados en el progtwig real y el diseño del algoritmo y evitar repetir las mismas cosas en cada ejemplo (por ejemplo, análisis de línea de comandos). Si escribe el suyo, tendrá un control mucho mejor y sabrá lo que está sucediendo. Por ejemplo, el envoltorio cutilSafeCall llama a exit() si la función falla: una aplicación real (a diferencia de una muestra) probablemente debería manejar la falla de forma más elegante.


NOTA

  1. Solo para CUDA 4.0 puede necesitar aplicar esta corrección a las personalizaciones de comstackción. Este parche corrige el siguiente mensaje:

El resultado “” de evaluar el valor “$ (CudaBuildTasksPath)” del atributo “AssemblyFile” en el elemento no es válido

Esta respuesta se aplica a CUDA 3.2, de 4.0 en adelante. CUDA es compatible con el comstackdor de VC 10 directamente; consulte otras respuestas para obtener más información.

Necesita VS 2008 o el 6.1 Windows SDK instalado. Eso es porque NSight 1.5 RC o CUDA 3.2 SDK usan el comstackdor VC 9 debajo del capó. Lo tengo funcionando correctamente con 2008 instalado y me dijeron que debería funcionar con el SDK pero no lo he intentado.

Con NSight 1.5 y / o el SDK de CUDA 3.2, no debería tener que ensuciar con ninguna regla de comstackción personalizada. He estado allí y es doloroso. Con las últimas versiones todo lo que se va:

  • Crea tu proyecto de VC ++.
  • Agregue un archivo .CU a él.
  • Seleccione el archivo de proyecto en el Explorador de soluciones.
  • Proyecto abierto | Construir personalizaciones …
  • Verifique la personalización “CUDA 3.2 (.targets, .props)”.
  • Seleccione un archivo .CU en su proyecto y presione Alt-Intro para mostrar sus propiedades.
  • Asegúrese de que su Tipo de elemento esté configurado como “CUDA C / C ++”

Debería construir. Avíseme si esto ayuda y si tiene problemas ya que esto es de memoria.

La buena noticia es que conseguir que CUDA trabaje con VS 2010 ahora es mucho más fácil.

Ade

Por cierto: actualizaré mi publicación de blog.

Otro buen tutorial aquí:

http://www.stevenmarkford.com/installing-nvidia-cuda-with-visual-studio-2010/

si obtiene un error sobre ‘<', tenga en cuenta este paso (de una respuesta anterior):

Si agregó archivos .cu antes de las personalizaciones de comstackción, deberá establecer el tipo de archivos .cu en CUDA C / C ++ (haga clic con el botón derecho en el archivo, Propiedades, configure Tipo de elemento)

Pero si sigues sus pasos, ¡debería funcionar!