I was wondering how can matlab multiply two matrices so fast. When multiplying two NxN matrices, N^3 multiplications are performed. Even with the Strassen Algorithm it takes N^2.8 multiplications, which is still a large number. I was running the following test program:
a = rand(2160);
b = rand(2160);
tic;a*b;toc
2160 was used because 2160^3=~10^10 ( a*b should be about 10^10 multiplications)
I got:
Elapsed time is 1.164289 seconds.
(I’m running on 2.4Ghz notebook and no threading occurs)
which mean my computer made ~10^10 operation in a little more than 1 second.
How this could be??
It’s a combination of several things:
Here’s the numbers on my machine: Core i7 920 @ 3.5 GHz (4 cores)
Task Manager shows 4 cores of CPU usage.
Now for some math:
So Matlab is achieving about
1 / 1.47 = 68%efficiency of the maximum possible CPU throughput.I see nothing out of the ordinary.