GPU hesaplamada veri transferinin etkisinin FFT hesaplama ile gösterimi…

GPU hesaplamada kullanılacak verinin CPU’dan GPU’ya aktarılması ek bir zaman maliyeti getirmektedir. Bu da performansı etkilemektedir. Aşağıdaki örnekte bunun etki boyutları araştırılmıştır. Gerekli açıklamalar kodların yanında yorum olarak mevcuttur.

A1 = rand(3000,3000);
tic;
B1 = fft(A1);
time1 = toc;
A2 = gpuArray(A1);
tic;
B2 = fft(A2);
time2 = toc;
speedUp = time1/time2;
disp(speedUp)
% GPU, CPU'dan yaklaşık 3,5 kat daha hızlı işlem yapmıştır.Oluşturma
% süreleri devre dışı bırakılmıştır.
tic;
A3 = gpuArray(A1);
B3 = fft(A3);
B3 = gather(B3);
time3 = toc;
speedUp = time1/time3;
disp(speedUp)
% GPU'da oluşturulan matris CPU'ya getirilmiş ve işlem yaptırılmıştır, 0,2
% hızlanma olmuştur. Buda veri transferinin sıkıntısını ortaya koymaktadır.
tic;
A4 = rand(3000,3000);
B4 = fft(A4);
time4 = toc;
tic;
A5 = rand(3000,3000,'gpuArray');
B5 = fft(A5);
B5 = gather(B5);
time5 = toc;
speedUp = time4/time5;
disp(speedUp);
% CPU'da oluşturulan matris ile yapılan işlem GPU'da oluşturulup CPU'ya
% aktarılan matris ile karşılaştırıldığında 1,5 kat hızlanma olmuştur.
% Görüleceği üzere veri transferi 3,5 kat hızlanmayı 1,5 kata düşürmüştür.

Bir cevap yazın

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