cómo vincular la biblioteca (por ejemplo, CUBLAS, CUSPARSE) para CUDA en Windows

Estoy intentando comstackr un progtwig cuda que usa la biblioteca cusparse. Estoy recibiendo un error de enlace:

kernel.cu.obj : error LNK2019: unresolved external symbol _cusparseSetMatIndexBase@8 referenced in function _main 

Y muchos errores del mismo tipo relacionados con la biblioteca cusparse. He incluido “cusparse_v2.h”. ¿Cómo conecto la biblioteca cusparse en visual studio 2010 durante la comstackción?

Las instrucciones generales para vincular bibliotecas no son específicas de CUDA. Por lo que es posible que desee obtener más información sobre el uso de MS VS. De todos modos, los pasos son así:

  1. Asegúrese de haber abierto el proyecto en el que desea trabajar.
  2. Seleccione Ver … Páginas de propiedades (del menú) Se abrirá un nuevo cuadro de diálogo.
  3. En el lado izquierdo de este cuadro de diálogo, seleccione Enlazador para abrir su submenú
  4. En vinculador, seleccione Entrada
  5. Ahora, en el panel de la derecha, observe el primer elemento que es “Dependencias Adicionales”. Creo que cudart.lib ya debería estar presente allí.
  6. Haga clic a la derecha de cudart.lib Ahora puede escribir nuevas bibliotecas para agregar. Escriba un espacio (para separarlo de cudart.lib) y escriba cusparse.lib
  7. Ahora haga clic en “Aplicar” en la esquina inferior derecha del cuadro de diálogo.

Eso debería ser todo lo que se necesita, si su proyecto / archivo de solución ya está configurado usando una plantilla de cuda. Si cudart.lib no está presente, o los archivos de su proyecto / solución no comprenden Cuda, ese es un problema aparte. En ese caso, recomendaría empezar de nuevo, clonando un proyecto de las muestras y construyendo su proyecto usando eso como punto de partida. A continuación, recogerá todos los directorios adecuados para buscar, así como las reglas de comstackción de cuda. Como todas las bibliotecas principales de cuda (cudart, cublas, cufft, cusparse, etc.) están todas en la misma ubicación, la misma ruta de búsqueda debería elegir cualquiera de ellas según sea necesario.

Si quisiera vincular otra biblioteca, como cublas.lib , por ejemplo, podría seguir una secuencia similar, reemplazando cusparse.lib arriba con cublas.lib

Tenga en cuenta que con las versiones más recientes de CUDA (por ejemplo, CUDA 7.5) será necesario construir un proyecto de 64 bits solamente (siga los pasos anteriores al modificar las propiedades del proyecto x64). CUDA 7.5 y posteriores están retirando soporte para proyectos de 32 bits.

Lo arreglé siguiendo los siguientes pasos:

  1. Agregue la ruta de cuda: Vaya: “Propiedades de configuración-> Enlazador-> General-> Directorios adicionales de la libreria” y agregue $ (CudaToolkitLibDir) a la lista.

  2. Agregue la biblioteca cuda en tiempo real: Vaya: “Propiedades de la solución-> Enlazador-> Entrada-> Dependencias adicionales” y agregue cudart.lib a la lista.

  3. Agregue la biblioteca de cublas: Vaya: “Propiedades de la solución-> Enlazador-> Entrada-> Dependencias adicionales” y agregue cublas.lib a la lista.

  4. Cambiando la plataforma a x64: Vaya: “Propiedades de configuración-> Plataforma” y ajústelo a x64.

  5. Ejecute cmd.exe como administrador. Escriba y ejecute las siguientes dos líneas de comando:

netsh winsock reset catalogue

netsh int ip reset reset.log de IP hit

Puede decir que se requiere reiniciar, pero en realidad eso no es necesario. Intenta depurar tu aplicación nuevamente, el problema debe ser resuelto.