sábado, 2 de enero de 2016

Configurar NetBeans 8 para compilar código CUDA en ubuntu

No soy experto en programación, pero hace un rato necesitaba compilar un proyecto con CUDA utilizando Netbeans. No se si era por la versión de Netbeans o por que otra cosa, ninguna de las soluciones que encontré en blogs me funcionaron.

Peeeeero... cómo en serio tenia que encontrar una solución o mi director de tesis me colgaba... lo logre hacer gracias a la guía de distintas paginas que encontré. Aquí les dejo paso a paso lo que hice para que me pudiera compilar, ojala a alguien le sirva.

Especificaciones que le podría interesar a alguien: 
  • CUDA 7.5
  • NETBEANS 8.0.1
  • UBUNTU 14.04

1. Configuración de Netbeans

Lo primero que tenemos que hacer es configurar el ambiente de desarrollo para trabajar archivos con extensión ".cu" (Extensión para trabajar con CUDA) y con el compilador de NVIDIA "vncc".

Para hacer esto en "Tools > Options", en la paleta "C/C++" en la pestaña "Build Tools" seleccionas el boton "Add" para adicionar un nuevo "Tool Colection".


En el campo "Base Directory" ponen las siguiente dirección: "/usr/local/cuda-7.5/bin" (Pueden poner la dirección dependiendo de la versión de cuda que tengan o en algunos casos es "/usr/local/cuda/bin", lo mismo en todos los casos similares de aquí en adelante). En "Tool Colection Family" debe aparecer "CUDA tool colection". Y la nombran como deseen en mi caso fue "myCuda".



Ahora llenamos los campos del nuevo tool colection como se muestra en la siguiente imagen:

En la pestaña "Code Assitance", seleccionamos en la opción tool colection: "myCuda" y en la sub pestaña "C++ Compiler", nos aseguramos de que en "include directories" estén los directorios "/usr/local/cuda-7.5/targets/x86_64-linux/include" (Si este directorio no existe en tu computador te aconsejo agregar  "/usr/local/cuda-7.5/include") y "/usr/include".



En la pestaña "Other" agregamos la extensión  a "C++ File Extensions".




2. Crear un nuevo proyecto para trabajar con CUDA.

En "New Project" seleccionamos "C/C++ > C/C++ Applicaction".


Lo nombramos y escogemos su ubicación, en "Tool Colection" seleccionamos "myCUDA" y le damos finalizar.


Ahora, en propiedades del proyecto en la opción "Build" deseleccionamos "Enable Make Dependency Checking", en "Tool Colection" debe estar seleccionado "myCUDA" .



Por último y para estar más asegurado, en "Build > C++ Compiler" y en "Build > Linker" me asegure de que en la opción "Tool" estuviera "nvcc".




3. Mi propio ejemplo.

En mi caso hice esta simple "prueba.cu" con el siguiente código:

#include <cstdlib>
#include <cstdio>

using namespace std;

__global__ void mykernel(void) {
}

int main(void) {
mykernel<<<1,1>>>();
printf("CPU Hello World!\n");
return 0;

y este es el resultado.



Espero que a alguien le sea de ayuda este blog. Con mucho gusto y hasta pronto! Chaoo!