Интернет магазин китайских планшетных компьютеров



Компьютеры - CUDA - Пример

13 июня 2011


Оглавление:
1. CUDA
2. Программная архитектура
3. Оборудование
4. Ограничения
5. Особенности и спецификации различных версий
6. Пример
7. CUDA как предмет в вузах



Этот пример кода на C загрузки текстур из изображения в массив на GPU:

cudaArray* cu_array;
texture<float, 2> tex;
 
// Allocate array
cudaMalloc, width, height );
 
// Copy image data to array
cudaMemcpy;
 
// Bind the array to the texture
cudaBindTexture;
 
// Run kernel
dim3 blockDim;
dim3 gridDim;
kernel<<< gridDim, blockDim, 0 >>>;
cudaUnbindTexture;
 
__global__ void kernel
{
   unsigned int x = blockIdx.x*blockDim.x + threadIdx.x;
   unsigned int y = blockIdx.y*blockDim.y + threadIdx.y;
   float c = texfetch;
   odata = c;
}

Пример программы на языке Python, перемножающий матрицы средствами GPU. Взаимодействие идёт с использованием PyCUDA

import pycuda.driver as drv
import numpy
 
drv.init
dev = drv.Device
ctx = dev.make_context
 
mod = drv.SourceModule("""
__global__ void multiply_them
{
  const int i = threadIdx.x;
  dest = a * b;
}
""")
 
multiply_them = mod.get_function
 
a = numpy.random.randn.astype
b = numpy.random.randn.astype
 
dest = numpy.zeros_like
multiply_them(
        drv.Out, drv.In, drv.In,
        block=)
 
print dest-a*b


Просмотров: 7015


<<< GPGPU
DirectCompute >>>