Я делаю некоторые тесты с CUDA, C++, С# и Java, и использую MATLAB для проверки и генерации матрицы. Но когда я умножаю с помощью MATLAB, матрицы 2048x2048 и даже больше умножаются практически мгновенно.
             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
 Только CUDA конкурентоспособна, но я думал, что по крайней мере C++ будет несколько ближе, а не в 60x медленнее.
Поэтому мой вопрос - как MATLAB делает это так быстро?
C++ Код:
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();
 Изменение: я также не знаю, что думать о результатах С#. Алгоритм такой же, как C++ и Java, но там гигантский скачок 2048 с 1024?
 Edit2: обновлены результаты MATLAB и 4096x4096





