GPU hesaplama her zaman neden hızlı değildir?

A = 1:0.01:50000;
Agpu = gpuArray(A);
tic;
B = fft(A);
toc
tic;
Bgpu = fft(Agpu);
toc
B_from_gpu = gather(Bgpu);

Yukarıdaki kodu incelediğimizde 1’en başlayaran 0.01’er artarak 50000’e kadar giden bir dizi oluşturulmaktadır.

fft işlemi hem CPU’da hem de CPU’dan GPU’ya gönderilen Agpu verisiyle GPU’da yaptırılmakta, sonuçlarda B_from_gpu değişkenine gather komutu ile geri taşınmaktadır.

CPU’daki 1.725417 saniye sürerken, GPU’daki 0.644574 saniye sürmüştür. Burada 5 milyon elemanlı bir dizi olduğundan hızlanma söz konusudur, bunu çok düşürdüğümüz zaman(örneğin 500-1000 gibi) GPU, CPU’nun arkasında kalmaktadır. Bunun sebebi verinin taşınmasından kaynaklı gecikmedir.

Bir cevap yazın

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