我正在使用CUDA,C++,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
Run Code Online (Sandbox Code Playgroud)
只有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 …
Run Code Online (Sandbox Code Playgroud) 我需要在非常大的Matlab中进行矩阵/向量乘法:"A"是一个655360乘5的实值矩阵,不一定是稀疏的,"B"是655360乘1的实值向量.我的问题是如何计算:B'*A有效.
我已经注意到通过计算A'*B来改善时间,这给出了一个列向量.但它仍然很慢(我需要在程序中多次执行此操作).
随着一点点的搜索,我发现了一个有趣的matlab工具箱MTIMESX詹姆斯Tursa,我希望这将提高上述矩阵乘法性能.经过几次试验,我只能在Matlab原生矩阵乘法上获得非常小的收益.
有关如何重写A'*B以使操作更有效的任何建议?谢谢.