MATLAB(Parallel Computing Toolbox) GPU Hesaplama ile örnek olarak iki sayının ve iki vektörün toplanması işlemi nasıl gerçekleştirilir?
1.adımda toplama işlemlerini yapacak olan kernel kodunun .cu dosyası içerisine doğru bir şekilde yazılması ve derlenerek .ptx dosyasının oluşturulması gerekmektedir.
test.cu dosyamız:
__global__ void add1( double * pi, double c )
{
*pi += c;
}
__global__ void add2( double * v1, const double * v2 )
{
int idx = threadIdx.x;
v1[idx] += v2[idx];
}

Matlab dosyamız test.m:
toplama1 = parallel.gpu.CUDAKernel('test.ptx','test.cu','add1');
result1 = feval(toplama1,4,3)
toplama2 = parallel.gpu.CUDAKernel('test.ptx','test.cu','add2');
N = 128;
toplama2.ThreadBlockSize = N;
in1 = ones(N,1,'gpuArray');
in2 = ones(N,1,'gpuArray');
result2 = feval(toplama2,in1,in2);
toplama3 = parallel.gpu.CUDAKernel('test.ptx','test.cu','add2');
N = 32;
toplama3.ThreadBlockSize = N;
rin1 = rand(N,1,'gpuArray');
rin2 = rand(N,1,'gpuArray');
result3 = feval(toplama3,rin1,rin2);

Sonuç:
paralel-toplama

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir