Integracion de CUDA 2.1 y Visual Studio 2008

Despues de numerosas busquedas en diversos foros he encontrado la forma de dejar visual studio 2008 funcionando con CUDA 2.1 Beta.

He instalado todo siguiendo los siguientes pasos:

1)  Necesitamos instalar vs2008 con sus MSDN.

2) Descargamos el driver con soporte cuda 2.1 (180.60 o superior) y lo instalamos.

3) Descargamos las herramientas y los codigos de ejemplo de la SDK de cuda 2.1  y lo instalamos en ese orden.

Para descargar tanto el driver propuesto por nvidia como las herramientas y los codigos de ejemplo tenemos la siguiente web:   http://www.nvidia.es/object/cuda_get_es.html

Recomendacion:

Realizar todos los pasos y utilizar como plantilla un proyecto creado por en la sdk que proporciona cuda. Copiandolo en la misma carpeta con distinto nombre para que no haya problemas con archivos que necesita.

O realizar los mismos pasos con Visual Studio 2005 y una version de cuda inferior a la 2.1 y los proyectos creados desde 0 compilaran y ejecutaran por lo que no sera necesario utilizar una plantilla ya creada. En su lugar utilizaremos un programa que integra en visual studio un nuevo tipo de proyecto con las reglas para compilar.

Podemos descargarla desde la web del autor:  http://www.comp.hkbu.edu.hk/~kyzhao/

En la zona de proyectos.

NOTA: esta aplicacion es externa a nvidia.

Y ya podemos generar nuestros proyectos en visual studio 2005.

Problemas:

Con la version que esta puesta en la web oficial de kyzhao solo seria compatible con versiones anteriores de cuda en la actualidad esta trabajando para compatibilizar su ejecutable con la version 2.1 de cuda.

Uno de los foros de referencia es el propio de envida y podemos encontrarlo en esta web:

http://forums.nvidia.com/index.php?showforum=62

Advertisement

10 comentarios hacia “Integracion de CUDA 2.1 y Visual Studio 2008”

  1. una pregunta, ya integre el cuda a mi visual 2008, pero es que no puedo hacer proyectos fuera de la carpeta default, me lanza errores de compilacion, sabes como agregar correctamente las bibliotecas de cuda a visual para poderlo hacer ya en cualquier directorio?

    • macudapfc Dijo:

      Yo siempre creo los proyectos en la misma carpeta que estan los de la sdk para ahorrarme tener que copiar librerias en otro sitio y ahorrarme tener que crear el paso de compilacion personalizado.
      Pero para compilar cuda en teoria solo son necesarios 3 pasos:

      En las propiedades del proyecto

      En el apartado de c/c++ en la pestaña general tienes que agregar en los directorios de inclusion la carpeta con los include de cuda generalmente C/cuda/include pero puede ser diferente dependiendo de la version

      En el apartado de vinculador en la carpeta general tienes que incluir el directorio con las bibliotecas de cuda C/cuda/lib

      Y por ultimo tambien en el apartado de vinculador en la parte entrada tienes que poner lo siguiente ademas de lo que ya haya (si es que hay algo)
      cudart.lib cutil32.lib cudpp32.lib

      Hay formas de que todo esto ya este puesto siempre que creas un proyecto pero es mas lioso.

      Si quieres mas ayuda necesito saber mas del problema.

      • es que bueno ya agregue las librerias creo yo, o es la seccion de CUDA en la parte de configuracion del proyecto? saludos gracias por responder

        Error1 fatal error C1083: No se puede abrir el archivo incluir: ‘cuda.h’: No such file or directory c:\documents and settings\d@vid\escritorio\trabajos\procesamiento\cargar imagen\cudawinapp1\cudawinapp1\hola.cpp 9 CUDAWinApp1

  2. macudapfc Dijo:

    para compilar codigo de cuda tienes que crear una regla de compilacion personalizada si ves la los ejemplos de la sdk de nvidia y miras en las propiedades del proyecto en cualquiera de los ejemplos tienes que irte fijando en todos los directorios y variables que tienen agregados para ponerlos igual en tu proyecto.

    Una forma rápida de empezar a probar tu código es utilizar un ejemplo de la sdk como plantilla borras el código que tiene el proyecto y escribes tu código en los archivos ya creados y intentas compilarlo. Lo mejor que puedes hacer es crear tu proyecto en el mismo directorio de la sdk y poner los enlaces a las dependencias tal como lo tienen los ejemplos de la sdk.

    El error que te sale es casi seguro porque no tienes puesta alguna de las dependencias del compilador o del vinculador miralo.

  3. si es lo que me temo, intentare reinstalando todo nuevamente, ya movi demasiados parametros que ahora nose que es lo que movi y que es lo que no, ya por lo menos ahora ya no me marca eso de cuda.h, como mencionas, vi en otro foro que si era eso de la regla, jajajaja pero como ya movi todo lo que no tenia que mover, pues ahora me marca error en las funciones que nos las reconoce, pero bueno almenos ya es un paso mas adelante, muchas gracias por la ayuda, probare nuevamente y te platico que sucedio

  4. parece ser que ya esta instalado, ya cheque los ejemplos, y se ven muy interesantes, muchas gracias por la ayuda, una pregunta mas, sabes como cargar una imagen en cuda, un ejemplo simple?, ya cheque algunos ejemplos nada mas que los veo muy elaborados, aun no entiendo bien como se relacionan los .cu y los .cpp, bueno se supone que con extern “C”, pero aun no le agarro camino, saludos.

  5. pues la verdad es que aprender a programar en cuda lleva tiempo y aprender a programar “bien” en cuda es algo que todavia yo creo que no esta definido puesto que lo que interesa generalmente es ganar en rendimiento y en muchos de los ejemplos realizan cosas muy complejas a fin de demostrar lo que cuda permite.
    Digamos que los .cu es donde escribes codigo en cuda
    Y los .cpp donde escribes el codigo de c.
    Para relacionarlos a mi me gusta crear un archivo .h con las cabeceras de funciones de c como las conocemos y las cuales se escriben en .cu y esta funcion llama a su vez a otra tambien escrita en el .cu con los parametros de Grid y Bloque requeridos algo asi.

    en el .h (cabecera)
    void mifuncioncuda (tipodedato datoentrada, tipodato datosalida);

    en el .cu (declaracion)

    void mifuncioncuda (tipodedato datoentrada, tipodato datosalida){
    variables
    grid y block
    <>>funcioncuda(tipodato datoentrada, tipodato datosalida)
    }

    static __global__ void funcioncuda(tipodato entrada, tipo datodatosalida)

    en el .cpp (uso)

    mifuncioncuda(entrada,salida);

    y todo ello se une incluyendo en el archivo .cpp donde esta el programa principal incluyendo el archivo.h

  6. aun asi si estas comenzando sera duro porque cuda tiene sus peculiaridades que ya te iras dando cuenta

    • muchas gracias por responder, si la verdad me interesa mucho, bueno es que ahora en mi curso de procesamiento digital de imagenes quieren que manipule imagenes (redundancia xD), con cuda, hahhahaa lo mas gracioso es que el profesor dudo que sepa de que esta hablando, no nos ha enseñado el como importar una imagen y llevarla a un arreglo de datos para aplicarle algoritmos que la modifiquen, segun él nos dice que nos pongamos a investigar y que nos hara bien hacer eso, he estado checando en los foros de nvidia, y si que veo que hay cosas que no dan soluciones concretas o basicas para gente que intenta aprender desde cero. saludos y gracias, por cierto ya pude correr un ejemplo parece ser que ya esta instalado correctamente.

      • macudapfc Dijo:

        Siempre que se empieza a estudiar algo es duro y si lo que se empieza a estudiar es nuevo pues cuesta el doble. Pero si nadie lo estudia nunca deja de ser nuevo y puede pasar a ser obsoleto sin ser aprovechado. Todavia pienso que cuda tiene muchas lagunas y cosas que deberian funcionar derrepente no funcionan y las soluciones escasean. Suerte con el curso

Deja un comentario

Fill in your details below or click an icon to log in:

Logo de WordPress.com

You are commenting using your WordPress.com account. Log Out / Cambiar )

Twitter picture

You are commenting using your Twitter account. Log Out / Cambiar )

Facebook photo

You are commenting using your Facebook account. Log Out / Cambiar )

Connecting to %s

Seguir

Get every new post delivered to your Inbox.