SORU
19 Mayıs 2011, PERŞEMBE


Neden MATLAB matris çarpımı kadar hızlı mı?

CUDA ile bazı kriterler yapıyorum, C , C# ve Java ve doğrulama ve matriks üretimi için MATLAB. Ama ben deposunda bulunan çarpma, 2048x2048 ve daha büyük matris neredeyse anında çarpılır.

             1024x1024   2048x2048   4096x4096
             ---------   ---------   ---------
CUDA C (ms)      43.11      391.05     3407.99
C   (ms)       6137.10    64369.29   551390.93
C# (ms)       10509.00   300684.00  2527250.00
Java (ms)      9149.90    92562.28   838357.94
MATLAB (ms)      75.01      423.10     3133.90

Sadece CUDA rekabetçi, ama en azından C dereceye yakın ve 60x değil daha yavaş olacağını düşündüm.

Yani benim soru - Nasıl MATLAB bu kadar hızlı mı yapıyor?

C Kod:

float temp = 0;
timer.start();
for(int j = 0; j < rozmer; j  )
{
    for (int k = 0; k < rozmer; k  )
    {
        temp = 0;
        for (int m = 0; m < rozmer; m  )
        {
            temp = temp   matice1[j][m] * matice2[m][k];
        }
        matice3[j][k] = temp;
    }
}
timer.stop();

Edit: Ben de C hakkında ne düşüneceğimi bilmiyorum# sonuçları. Algoritma sadece C de Java ama dev bir sıçrama 1024 ile 2048 var?

Edit2: MATLAB ve 4096x4096 sonuçları güncellendi

CEVAP
19 Mayıs 2011, PERŞEMBE


İşte benim sonuçlar Tesla C2070 ile bir makine üzerinde R2011a Parallel Computing Toolbox MATLAB:

>> A = rand(1024); gA = gpuArray(A);
% warm up by executing the operations a couple of times, and then:
>> tic, C = A * A; toc
Elapsed time is 0.075396 seconds.
>> tic, gC = gA * gA; toc
Elapsed time is 0.008621 seconds.

Düz MATLAB MATLAB matris çarpma çok hızlı bu yüzden matris çarpımı için son derece optimize edilmiş kütüphaneler kullanır. gpuArray sürümü MAGMA kullanır.

K20c ve timeit gputimeit Yeni işlevleri bir Tesla ile bir makine üzerinde R2014a kullanarak güncelleştirme

>> A = rand(1024); gA = gpuArray(A);
>> timeit(@()A*A)
ans =
    0.0324
>> gputimeit(@()gA*gA)
ans =
    0.0022

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • footiecyclo

    footiecyclo

    26 EYLÜL 2009
  • sinumatic

    sinumatic

    19 Aralık 2006
  • UniqueApps

    UniqueApps

    4 Ocak 2009