我正在使用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中实现带求和函数的方程.
使用sum()与矩阵乘法的示例:
我实现了这个等式,并认为我需要使用sum()函数:

J = 1/(2*m) * sum( (X*theta - y).^2 );
Run Code Online (Sandbox Code Playgroud)
然后我实现了这个类似的等式,而不需要使用sum()函数!

theta = theta - (alpha/m) * ((X*theta - y)'*X)';
Run Code Online (Sandbox Code Playgroud)
哪里:
X: 100x2 (training input plus a 'ones' vector)
y: 100x1 (training output)
theta: 2x1 (parameters)
m: 100 (length of y)
alpha: 0.01 (learning rate)
Run Code Online (Sandbox Code Playgroud)
当Matlab的矩阵乘法"处理"求和时,有哪些原理?
谢谢!