MATLAB’ın GPU hesaplamada önerdiği yöntemlerden birisi de arrayfun fonksiyonunun kullanılmasıdır.

sonuc = arrayfun(@Fonksiyonum, giris1, giris2,...); şeklinde bir yapı ile kullanılmaktadır.

Giriş parametreleri(giris1, giris2,…) gpuArray olarak tanımlanmak zorundadır.
Fonksiyonumuz sayılarla ifade edilebilen ve eleman bazlı (scalar/elementwise) olmalıdır. Yani vektör ve matris hesaplamaları yapılamamaktadır.
sonuc, Fonksiyonumuzun çıktısı olarak GPU belleğinde oluşur.

Örneğin 4 farklı diziyi giriş olarak alan basit bir hesaplamanın yapıldığı yapı aşağıdadır.


a = gpuArray(1:0.1:10);
b = gpuArray(2:0.1:11);
c = gpuArray(3:0.1:12);
d = gpuArray(4:0.1:13);
gpu_x = arrayfun(@Fonksiyonum,a,b,c,d);
x= gather(gpu_x);

Fonksiyonum.m dosyasının içeriği:
function out = Fonksiyonum(a, b, c, d)
out = b / (a * d * sin(c));

Burada işlemler eleman bazlı ve sayısal olduğu için Fonksiyonum fonksiyonu GPU’da paralel bir şekilde çalıştırılmaktadır.

arrayfun ile sadece basit sayısal işlemler değil kontrol parametreleri de kullanılabilir. for, while, break, if gibi ifadelerle de fonksiyonlar yazılabilir.

Örneğin:

myGoodFunc

Aşağıdaki örnekte matris indekslemesi olduğundan hata vermektedir.

Bir cevap yazın

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