Esta es una increíblemente pregunta básica, pero ¿cómo puedo iniciar un nuevo CUDA proyecto en Visual Studio 2008? He encontrado toneladas y toneladas de documentación sobre CUDA asuntos relacionados, pero nada acerca de cómo iniciar un nuevo proyecto. Estoy trabajando con Windows 7 de 64 bits de Visual Studio 2008 de C++. Realmente me gustaría encontrar algún tipo de realmente básica Hola Mundo app para obtener sólo un programa básico de compilar y ejecutar.

Edición:

Traté de sus pasos de Tom. Tengo que instalar una aplicación de consola. Luego he borrado el valor predeterminado .cpp se cae y copiado los tres archivos de la plantilla de proyecto sólo para tener algo para compilar. Al compilar que, template_gold.cpp se quejó por no haber stdafx.h incluido, así que me incluía. Ahora la compilación falla con este:

1>------ Generar iniciada: Proyecto: CUDASandbox, Configuración: Debug x64 ------ 
1>Compilación de... 
1>template_gold.cpp 
1>Vinculación... 
1>LIBCMT.lib(crt0.obj) : error LNK2019: unresolved external símbolo principal que se hace referencia en función de __tmainCRTStartup 
1>D:\Stuff\Programming\Visual Studio 2008\Projects\CUDASandbox\x64\Debug\CUDASandbox.exe : fatal error LNK1120: 1 externos sin resolver 
1>Crear registro se guarda en "file://d:\Cosas\Programación\Visual Studio 2008\Projects\CUDASandbox\CUDASandbox\x64\Debug\BuildLog.htm" 
1>CUDASandbox - 2 error(s), 0 advertencia(s) 
========== Construir: 0 logrado, 1 error, 0 actualizados, 0 omitidos ========== 
  • He comentado en mi post con las respuestas a sus ediciones.
  • (jactancia) hola, estoy a su construcción con un 20 línea de archivo de proceso por lotes (sin tocar IDE en todos)! 😉 ver: stackoverflow.com/questions/9518403/…
InformationsquelleAutor Mr Bell | 2010-01-12

4 Comentarios

  1. 45

    NOTA Con el lanzamiento de la versión 3.2 de la CUDA Toolkit, NVIDIA ahora incluye la reglas archivo con el kit de herramientas frente a la SDK. Por lo tanto, he dividido esta respuesta en dos mitades, utilice las instrucciones correctas para su versión del kit de herramientas.

    NOTA Estas instrucciones son válidas para Visual Studio 2005 y 2008. Para Visual Studio 2010 ver esta respuesta.


    CUDA TOOLKIT 3.2 y posteriores

    Recomiendo el uso de la NvCudaRuntimeApi.rules archivo (o NvCudaDriverApi.rules si el uso de la API de controlador) proporcionado por NVIDIA, este se libera con el toolkit y es compatible con los últimos parámetros del compilador en una manera amistosa. Personalmente no aconsejo el uso de la VS asistente, pero sólo porque yo realmente no creo que la necesite.

    El archivo de reglas (instalado en el Program Files\Microsoft Visual Studio 9.0\VC\VCProjectDefaults directorio) «enseña» a Visual Studio cómo compilar y enlazar .cu archivos en el proyecto en su aplicación.

    • Crear un nuevo proyecto utilizando el estándar de MS asistentes (por ejemplo, un vacío proyecto de consola)
    • Implementar su host (serie) del código .c o .archivos cpp
    • Implementar sus fardos y granos .cu archivos
    • Agregar el NvCudaRuntimeApi.rules (clic derecho sobre el proyecto, las Reglas de generación Personalizada, marque la casilla correspondiente), véase la nota Uno
    • Agregar el CUDA runtime library (clic derecho en el proyecto y elija Propiedades, a continuación, en el Enlazador -> General agregar $(CUDA_PATH)\lib\$(PlatformName) a la Adicionales de la Biblioteca de Directorios y en el Enlazador -> Entrada agregar cudart.lib a la Dependencias Adicionales), véanse las notas [2] y [3]
    • Si se desea, agregar el CUDA incluir los archivos a la ruta de búsqueda, necesaria si se incluye algún CUDA archivos en su .archivos cpp (como opuesto .cu archivos) (clic derecho en el proyecto y elija Propiedades, a continuación, en C/C++ -> General agregar $(CUDA_PATH)\include a la Adicionales Incluyen Directorios), véase la nota [3]
    • A continuación, sólo la construcción de su proyecto y la .cu archivos serán compilados para .obj y añade el enlace automáticamente

    Algunos otros consejos:

    • Cambiar el código de generación para el uso estáticamente cargadas tiempo de ejecución de C para que coincida con el CUDA runtime clic con el botón derecho en el proyecto y elija Propiedades, a continuación, en C/C++ -> Generación de Código cambiar el Biblioteca de tiempo de ejecución a /MT (o /MTd para depurar, en cuyo caso deberá espejo esta en Runtime API -> Host> Biblioteca de tiempo de ejecución), véase la nota [4]
    • Activar el resaltado de sintaxis mediante la usertype.dat archivo que se incluye con el SDK, ver la readme.txt en <sdk_install_dir>\C\doc\syntax_highlighting\visual_studio_8

    También me gustaría recomendar la habilitación de la compatibilidad con Intellisense con la entrada de registro siguiente (reemplazar con 8.0 9.0 para VS2005 en lugar de VS2008):

    [HKEY_CURRENT_USER\Software\Microsoft\VisualStudio.0\Languages\Language Services\C/C++]
    "NCB Default C/C++ Extensions"=".cpp;.cxx;.c;.cc;.h;.hh;.hxx;.hpp;.inl;.tlh;.tli;.cu;.cuh;.cl"

    Por cierto quisiera abogar evitar cutil si es posible, en lugar de rodar sus propios cheques. Cutil no es compatible con NVIDIA, es sólo utilizado para tratar de mantener a los ejemplos del SDK se centró en el programa actual y el diseño del algoritmo y evitar repetir las mismas cosas en cada ejemplo (por ejemplo, la línea de comandos de análisis). Si usted escribe su propio, usted tendrá control mucho mejor y saber lo que está sucediendo. Por ejemplo, el cutilSafeCall contenedor de llamadas exit() si la función falla – una aplicación real (en oposición a una muestra) probablemente debería tratar el error más elegante!


    CUDA TOOLKIT 3.1 y anteriores

    Me gustaría utilizar el Cuda.rules archivo proporcionado por NVIDIA con el SDK, este es liberado junto con el kit de herramientas y es compatible con los últimos parámetros del compilador en una manera amistosa. Personalmente no aconsejo el uso de la VS asistente, pero sólo porque yo realmente no creo que la necesite.

    El archivo de reglas (en el C\common directorio del SDK) «enseña» a Visual Studio cómo compilar y enlazar .cu archivos en el proyecto en su aplicación.

    • Crear un nuevo proyecto utilizando el estándar de MS asistentes (por ejemplo, un vacío proyecto de consola)
    • Implementar su host (serie) del código .c o .archivos cpp
    • Implementar sus fardos y granos .cu archivos
    • Agregar el Cuda.rules (clic derecho sobre el proyecto, las Reglas de generación Personalizada, en examinar para buscar el archivo de reglas y asegúrese de que está marcada)
    • Agregar el CUDA runtime library (clic derecho en el proyecto y elija Propiedades, a continuación, en el Enlazador -> General agregar $(CUDA_LIB_PATH) a la Adicionales de la Biblioteca de Directorios y en el Enlazador -> Entrada agregar cudart.lib a la Dependencias Adicionales), véase la nota [2] a continuación
    • Si se desea, agregar el CUDA incluir los archivos a la ruta de búsqueda, necesaria si se incluye algún CUDA archivos en su .archivos cpp (como opuesto .cu archivos) (clic derecho en el proyecto y elija Propiedades, a continuación, en C/C++ -> General agregar $(CUDA_INC_PATH) a la Adicionales Incluyen Directorios)
    • A continuación, sólo la construcción de su proyecto y la .cu archivos serán compilados para .obj y añade el enlace automáticamente

    Algunos otros consejos:

    • Cambiar el código de generación para el uso estáticamente cargadas tiempo de ejecución de C para que coincida con el CUDA de tiempo de ejecución, haga clic derecho en el proyecto y elija Propiedades, a continuación, en C/C++ -> Generación de Código cambiar el Biblioteca de tiempo de ejecución a /MT (o /MTd para depurar, en cuyo caso deberá espejo esta en CUDA Construir Regla -> Híbrido CUDA/C++ Opciones), véase la nota [4]
    • Activar el resaltado de sintaxis mediante la usertype.dat archivo que se incluye con el SDK, ver la readme.txt en <sdk_install_dir>\C\doc\syntax_highlighting\visual_studio_8

    También me gustaría recomendar la habilitación de la compatibilidad con Intellisense con la entrada de registro siguiente (reemplazar con 8.0 9.0 para VS2005 en lugar de VS2008):

    [HKEY_CURRENT_USER\Software\Microsoft\VisualStudio.0\Languages\Language Services\C/C++]
    "NCB Default C/C++ Extensions"=".cpp;.cxx;.c;.cc;.h;.hh;.hxx;.hpp;.inl;.tlh;.tli;.cu;.cuh;.cl"

    Por cierto quisiera abogar evitar cutil si es posible, en lugar de rodar sus propios cheques. Cutil no es compatible con NVIDIA, es sólo utilizado para tratar de mantener a los ejemplos del SDK se centró en el programa actual y el diseño del algoritmo y evitar repetir las mismas cosas en cada ejemplo (por ejemplo, la línea de comandos de análisis). Si usted escribe su propio, usted tendrá control mucho mejor y saber lo que está sucediendo. Por ejemplo, el cutilSafeCall contenedor de llamadas exit() si la función falla – una aplicación real (en oposición a una muestra) probablemente debería tratar el error más elegante!


    NOTA

    1. También puede utilizar un conjunto de herramientas de la versión de las normas específicas de los fule por ejemplo,NvCudaRuntimeApi.v3.2.rules. Esto significa que en vez de mirar para el CUDA Toolkit en %CUDA_PATH% se verá en %CUDA_PATH_V3_2%, lo que significa que usted puede tener varias versiones de el CUDA Toolkit instalado en su sistema y los diferentes proyectos dirigidos a diferentes versiones. Véase también la nota [3].
    2. El archivo de reglas no puede modificar la C/C++ compilación y configuración de vinculador, ya que es simplemente la adición de opciones de compilación para el código CUDA. Por lo tanto, usted necesita para hacer este paso manualmente. Recuerde que hacerlo para todas las configuraciones!
    3. Si desea estabilizar en un determinado CUDA Toolkit versión entonces usted debe reemplazar CUDA_PATH con CUDA_PATH_V3_2. Véase también la nota Uno.
    4. Tener coincidentes versión de tiempo de ejecución de C puede causar una variedad de problemas; en particular, si usted tiene cualquier error con respecto a LIBCMT (por ejemplo,LNK4098: defaultlib 'LIBCMT' conflicts with use of other libs) o multiplicar símbolos definidos por la biblioteca estándar de funciones, entonces este debe ser tu primer sospechoso.
    • He probado tu configuración y tenía algunos problemas. He editado mi post original con los detalles.
    • Al crear el nuevo proyecto de consola, usted debe elegir para crear un proyecto vacío. Parece que puede haber elegido usar encabezados precompilados, que debería ser posible, pero es más fácil comenzar con un proyecto vacío. El enlace de error que dice que no puede encontrar principal, es este en el .cpp o el .cu archivo? También parece que el .cu archivos no se construyen, compruebe que el CUDA Construir regla está activada (tiene una marca al lado de ella en el las Reglas de generación Personalizada cuadro de diálogo).
    • Aceptar, a partir de un proyecto vacío parece haber ayudado. Gracias. Puedo tomar su punto acerca de la cutil no ser una buena solución a largo plazo. Sin embargo, en este punto sólo quiero llegar a mi propia compilación del proyecto, así que estoy usando la plantilla básica de código que nVidia siempre con el sdk, y se hace uso de la cutil cosas. Ahora estoy recibiendo el error: indentifer «cutilBankChecker» no está definido
    • Muchos de los cutil funcionalidad es proporcionada a través de funciones o macros, pero algunos es proporcionada por la biblioteca estática cutil32D.lib (o de 64, o sin D para el modo de disparador). Asegúrese de que ha creado cutil y se vincula con el lib. Alternativamente, zanja cutil!
    • Tom: Gracias por una muy informativo respuesta! Podría usted señalar cuál es la diferencia entre NvCudaRuntimeApi.reglas y Cuda.las reglas y por qué la primera es la preferida?
    • Cuda.reglas que fue distribuido con el SDK antes de que las reglas se distribuyeron con el kit de herramientas. Ya que ahora se instala de las normas en el VC directorio, el nombre fue cambiado para evitar cualquier conflicto potencial. La razón es preferible porque es más hasta la fecha!
    • usted no tiene que hacer esto: «Implementar su host (serie) del código .c o .archivos cpp, Aplicar sus fardos y granos .cu archivos». Usted puede ser que desee para mantenerlos separados, pero es válida para la mezcla de host y el dispositivo de código en .cu archivos. De hecho, cuando se utiliza el CUDA runtime API debe colocar el código de host que inicia núcleos (<<<>>>) en .cu archivos.

  2. 4

    Lo que es una gran pregunta!! Para todos los CUDA documentación por ahí, esto es algo que siempre he pensado que era una evidente omisión… De hecho, estoy muy contenta de haber encontrado este post, porque después de usar CUDA durante bastante tiempo, yo aún no había encontrado un oficial, correcta manera de conseguir VS producir una CUDA programa desde cero.

    Cuando lo he necesitado para iniciar un nuevo programa CUDA, siempre he copiado y modificado el «plantilla» ejemplo desde el directorio del SDK. Esto puede no ser exactamente lo que usted está buscando, porque no empezar de nuevo, pero es una forma rápida de obtener una CUDA con capacidad de trabajo del proyecto en VS con todo el proyecto correcto o nombres de archivo…

    1. Hacer una copia de la «plantilla» ejemplo del SDK, y cambiar el nombre del directorio, el único necesario contenidos en el directorio de código fuente y VS .sln y .vcproj archivos
    2. Cambiar el nombre de ambos .sln y .vcproj archivos
    3. Abrir la .sln archivo en un editor de texto y cambiar el nombre de la Proyecto variable y .vcproj nombre de archivo en la línea 3 del archivo
    4. Abrir la .vcproj archivo en un editor de texto y cambiar el nombre de la Nombre y RootNamespace variables en las primeras líneas del archivo
    5. Abrir el proyecto con VS, y abrir las Páginas de propiedades (clic derecho sobre el nombre del proyecto en el panel explorador de soluciones, seleccione «Propiedades»)
    6. Cambiar el Archivo de Salida nombre en las Páginas de propiedades (en Propiedades de Configuración -> Enlazador -> General) … Antes de que cambie el nombre de archivo, seleccione «Todas las Configuraciones» a partir de la Configuración pull-down y «x64» de la Plataforma de pull-down, ya que estoy en un sistema de 64 bits
    7. Cambiar el Programa de Archivo de Base de datos nombre en las Páginas de propiedades (en Propiedades de Configuración -> Enlazador -> Depuración) … Antes de que cambie el nombre de archivo, seleccione «Debug» y «x64» en el pull-downs.
  3. 3
    • Instalar CUDA VS asistente. Es el programa de instalación de VS y agregar CUDA Proyecto para el «nuevo proyecto» en el menú.
    • Asegúrese de que usted tiene x64 compilador instalado (debe ser revisado durante VS instalar).
    • Comprobar si tiene x64 libs, incluye, nvcc dir y en la ruta de búsqueda.
    • Crear nuevo proyecto usando CUDA plantilla.
    • Cambiar el tipo de proyecto a x64 y CUDA ajuste a los Nativos (si usted tiene nv cuda habilitado de la tarjeta) o la emulación de lo contrario.
    • La plantilla de crear las reglas de generación personalizada que compilar .cu archivos con nvcc y otros archivos con el compilador por omisión.
    • si, vs está tratando de compilar .cu archivos con el compilador C/C++, haga clic en el archivo en el explorador de soluciones y desactivar la compilación para que los archivos (punto rojo en el icono del archivo)

    Información adicional acerca de cómo instalar CUDA asistente en VS2008 se puede encontrar aquí y aquí

    [editar]

    Si usted no desea utilizar el asistente tiene que configurar CUDA lib/include/nvcc rutas manualmente y agregar las reglas de generación personalizada a cada nuevo CUDA programa. Para información adicional de cómo hacerlo echar un vistazo a Tom Respuesta.

    • ¿Cómo hacerlo sin el CUDA asistente?
    • Gracias por tu nota acerca de la configuración de los caminos, he añadido el detalle a mi respuesta para la integridad.

Dejar respuesta

Please enter your comment!
Please enter your name here