MATLAB矩阵乘法为什么快,性能 – 为什么MATLAB在矩阵乘法中这么快?

我使用CUDA,C,C#和Java做一些基准测试,并使用MATLAB进行验证和矩阵生成。但是当我乘以MATLAB,2048×2048和甚至更大的矩阵几乎立即相乘。

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#结果。该算法与C和Java相同,但是从1024开始有一个巨大的跳跃2048?

编辑2:

更新了MATLAB和4096×4096结果

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值