CUDA es una idea no tan nueva, pero que se esta haciendo familiar a los usuarios de GNU/Linux. Este sistema permite llevar algunos calculos desde la “lenta” CPU hasta la “mandada a hacer para los calculos en coma flotante” GPU. Lo anterior se realiza mediante funciones y claro, se debe instalar el compilador de nvidia y un par de herramientas mas.
Las tarjetas soportadas las pueden encontrar aqui.
En este momento existe soporte para varios lenguajes de programación, aqui encuentran el modulo para python.
Un ejemplo sencillo en este lenguaje seria:
#Inicializar import pycuda.driver as pycuda pycuda.init() assert cuda.Device.count() >= 1 cudaDev = cuda.Device(0) cudaCTX = dev.make_context() #Copiar a memoria de GPUimport numpy a = numpy.random.randn(4,4) a = a.astype(numpy.float32) a_gpu = cuda.mem_alloc(a.size * a.dtype.itemsize) pycuda.memcpy_htod(a_gpu, a) #Decirle al Kernel que ejecutemod = cuda.SourceModule(""" __global__ void addOne(float *a) { int idx = threadIdx.x + threadIdx.y*4; a[idx]+= 1; } """)#Traer los datos de vuelta func = mod.get_function("addOne") func(a_gpu, block=(4,4,1))
Comentarios