Etiket Arşivleri: MATLAB

MATLAB’da CUBLAS ile Matris Çarpma İşlemi Nasıl Yapılır?

MATLAB’da CUBLAS ile Matris Çarpma İşlemi Nasıl Yapılır? C=AXB işlemi yapılacaktır. A:MxN boyutlu matris, B:NxP boyutlu matris, C:MXP boyutlu matristir. cublasDemo.cpp isimli bir dosya oluşturarak içeriğini: #include “mex.h” Void mexFunction(int nlhs, mxArray *plhs[], int nrhs, const mxArray *prhs[]) { } şu şekilde dolduruyoruz. Bu c-mex için standart ibarelerdir. Giriş verilerinin tipini önceden belirlememiz gerekmektedir. Kolaylık>>>

MATLAB ve CUBLAS(CUDA Temel Lineer Cebir Alt Programları)

MATLAB’daki gibi CUBLAS kütüphanesinde de verilerin sıralanması sütun bazlı sıralıdır. Bu bir avanyaj olarak değerlendirilebilir. CUBLAS fonksiyonları dörde ayrılır. 1-Yardımcı Fonksiyonlar 2-1.Seviye Fonksiyonlar 3-2.Seviye Fonksiyonlar 4-3.Seviye Fonksiyonlar

MATLAB CUDA kernel çıkış değişkenleri nasıl tanımlanır?

[output1, output2] = feval(CUDA_Kernel,input1, input2, input3) şeklinde tanımlanan bir kernel fonksiyonunda ilk iki giriş değişkeni, çıkış değişkeni olarak kullanılır. İki veya daha az giriş değişkeni var ise ilk giriş değişkeni, çıkış değişkeni olarak belirlenir. Örneğin:

MATLAB’da arrayfun nasıl kullanılır?

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>>>

MATLAB ve C/C++ kullanırken verilerin bellekte sıralanması

MATLAB ve C/C++ kullanırken verilerin bellekte sıralanması birbirinden farklı olarak gerçekleşmektedir. MATLAB’da sütun bazlı bir sıralama var iken, C/C++’da ise satır bazlı sıralama kullanılmaktadır. Aynı veriyi ikisinde de kullanacaksak verilerin indekslerini iyi tutmamız gerekmektedir. İkinci bir sıkıntı da C/C++’da indeksleme 0’dan başlarken, MATLAB’da 1’den başlamaktadır. Bu da aynı verilere aynı indeks formülizasyonu ile ulaşılmasına izin>>>

Matlab ile performans artırmak için bazı öneriler…

Paralel programlama ile hızlanmayı hedef alan çalışmalar yapan ve yapmaya devam edecek olan bir karakter olarak Matlab’da uygulanması gereken bazı önerilere yer vereceğim. 1-Döngü içerisinde dosyaya yazma ve dosyadan okuma komutları kullanılmamalıdır. Çünkü dosyaya yazma ve okuma sırasında çağrılan komutlar zaman kaybına neden olmaktadır. Döngü içerisinde illa kullanmamız gerekirse bunları minimuma indirmemiz gerekmektedir. En sağlıklı>>>

Matlab’ta veriler sütun bazlı şekilde sıralanmaktadır

Matlab’ta veriler sütun bazlı şekilde sıralanmaktadır. Bellekteki verilerin satır bazlı sıralandığına yeni yeni alışırken, Matlab’ta verilerin sütun bazlı şekilde sıralandığını öğrenmenin şokunu yaşamaktayım. Satır bazlıya göre verilerimizi ayarlayıp, ona uygun bir indeks yapısı kurmuştuk, şimdi de sütun bazlı sıralamaya göre bir yapı kurmamız gerekli. Aynı işlemin satır ve sütun bazlı yapıldığı vakit sütun bazlının daha>>>

Matlab’ta boyutu baştan belirleyerek hız kazanımı elde edilir

Matlab’ta boyutu baştan belirleyerek hız kazanımı elde edilir. Aşağıdaki kodlar incelendiğinde ilk kısımdaki kod 0.000032 saniyede çalışmış, ikinci kısımdaki kod ise 0.000014 saniyede çalışmıştır. Kullanacağımız dizilerin boyutlarını baştan belirlemek bize performans sağlayacaktır. tic x=8; x(2)=10; x(3)=11; x(4)=20; toc tic y=zeros(4,1); y(1)=8; y(2)=10; y(3)=11; y(4)=20; toc

Matlab Eleman Eleman Operatör İşlemi Yaptırma

Matlab matris eksenli bir ortam olduğundan olduğundan *(çarpma) operatörü direk matris çarpma yapmaktadır. O yüzden vektörleri veya elemanları tek tek çarpmak için bu operatörlerin başına .(nokta) koyulmalıdır. Örneğin: x =[1 2 3]; v =[4 5 6]; k = x .* v; k = 4 10 18 sonucunu verir.