:::: MENU ::::
Programlama Dilleri

Matlab Kıyasla Değiştir İşlemi

Bir matristeki elemanları tarayıp, büyük veya küçük olduğu durumlarda değişim yapmak istersek;
Örneğin:

A = [1 7 3; 6 2 9]
A = 1 7 3
6 2 9
B = 5;
C = max(A,B)

dediğimizde;
A matrisindeki tüm elemanlar ile B değeri kıyaslanır ve büyük olmadığı durumlarda bu değer yazılır, böylelikle C matrisinin son hali aşağıdaki gibi olur.

C = 5 7 5
6 5 9

Aynı işlemi min() ile yaptığımızda 5’ten büyük olanlar 5 olmaktadır.



Matlab Vektörizasyon ile Hızlanma

Matlab Vektörizasyon uyumlu çalışma yapısı ile for döngülerinin gereksiz yere kullanımını önler. Aşağıdaki kodlar incelendiği zaman durum daha net anlaşılacaktır.


clear all;
tic
A = 0:0.000001:10;
B = 0:0.000001:10;
Z = zeros(size(A));
y = 0;
for i = 1:10000001
Z(i) = sin(0.5*A(i)) * exp(B(i)^2);
y = y+Z(i);
end
toc

Bu kod 0.944395 saniyede -1.3042e+48 sonucunu vererek çalışmaktadır.

Aynı sonucu daha hızlı vermesi için vektörizasyon özelliği kullanılabilir.


clear all;
tic
A = 0:0.000001:10;
B = 0:0.000001:10;
Z = zeros(size(A));
y = 0;
y =sin(0.5*A) * exp(B.^2)';
toc
y

Bu kod 0.330786 saniyede -1.3042e+48 sonucunu vererek çalışmaktadır.


MATLAB GPU CUDA Thread, Block, Grid boyutlarının ayarlanması

Kerneli aşağıdaki şekilde oluşturabiliriz:
k = parallel.gpu.CUDAKernel('test.ptx','test.cu');
Peki bu kaç kere çalıştırılacak?
Bunun ayarlanmasını ise GridSize ve ThreadBlockSize özellikleri ile yapmaktayız.
Örneğin:
k.ThreadBlockSize = [500,1,1];
kodu 500 kere ilgili kernelin çalıştırılacağını belirtir.

GridSize: Blok sayısını belirleyen 3 boyutlu bir vektördür = [a b c] = Varsayılan değeri = [1 1 1]’dir.
ThreadBlockSize: Bloklardaki thread sayısını belirleyen 3 boyutlu bir vektördür = [a b c] = Varsayılan değeri = [1 1 1]’dir.

MaxThreadsPerBlock özelliği ise cihazın kapasitesine göre bir blokta olabilecek maksimum thread sayısını tutmaktadır. Böylece rastgele değerler verilerek programın yanlış çalışması önlenmiş olur.


Sayfalar:1...2021222324252627