:::: MENU ::::
MATLAB

class() Matlab Komutu

Kullanmakta olduğumuz değişkenin tipini veren faydalı bir komuttur. Özellikle CPU-GPU veri taşıma sırasında datanın ne durumda olduğu sorgulanabilir.

A2 = gpuArray(A1);
tic;
B2 = fft(A2);
time2 = toc;
class(B2); % Burada gpuArray sonucu döner
B2=gather(B2);
class(B2); % Burada double sonucu döner


İki sayının ve iki vektörün toplanması – MATLAB(Parallel Computing Toolbox) GPU Hesaplama

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


PTX dosyası nasıl oluşturulur?

MATLAB(Parallel Computing Toolbox) GPU Hesaplama yaparken çağıracağımız kernelleri daha önceden derleyip, onlara ait .cu (kaynak kod) ve .ptx (parallel thread execution) dosyalarını ilgili Matlab dosyamızın bulunduğu klasöre koyarak gerekli tanımlamaları yapmamız gerekmektedir.

Kullanmış olduğum sistemde nvcc derleyicisinin ihtiyaç duyduğu cl.exe dosyası “C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin” adresinde olduğundan bunu derleme yaparken yazdığım kod satırına dahil etmem gereklidir. Örneğin test.cu dosyasının derlenmesi için:

nvcc -ptx test.cu -ccbin "C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\bin"

komutunu dosyaların bulunduğu dizinde çalıştırdığımız zaman .ptx dosyamız başarıyla oluşacaktır.

ptx-compile


wait (GPUDevice) Komutu – MATLAB(Parallel Computing Toolbox) GPU Computing

GPU’daki işlemlerin bitmesini beklerken MATLAB’daki diğer işlemleri bekletir. Verileri gather ile GPU’dan CPU’ya aktardığınız zamanlarda kullanımına gerek yoktur, zira GPU’daki işlem bitmeden gather devreye girmemektedir.

gpu = gpuDevice % gpu değişkenine cihazın ataması yapılır
wait(gpu); % Bekleme işlemi gerçekleştirilir


Sayfalar:123456789