The Flop (Floating Point Operations per Second) Rate of MATLAB Code
이전 댓글 표시
Hello, I know Intel MKL / IPP libraries performance in simple operations (Multiplication, Summation, Matrix Multiplication, Vector Multiplication) gets something like 80-95% of the theoretical performance of the CPU (Measured in FLOPS).
http://software.intel.com/en-us/articles/parallelism-in-the-intel-math-kernel-library http://software.intel.com/en-us/intel-mkl
Yet, doing so using MATLAB I get much worse results.
I have this simple script:
numElements = 2 ^ 16;
numIter = 100;
vecX = randn(numElements, 1, 'single');
vecY = randn(numElements, 1, 'single');
initTime = tic();
for ii = 1:numIter
vecX .* vecY;
end
stopTime = toc(initTime);
gFlops = (numElements * numIter) / stopTime
Yet I get only 1.1 GFLOPS on my i7-860 Which should be closer to 2.8GHz (Frequency) * 4 (Cores) * 4 (Single Precisio Operations per Cycle as SSE Vector - 128 Bit) = 44.8 GFLOPS.
Yet I get something like 1.4 GFLOPS. Which is only 3% of the theoretical performance.
How can MATLAB be so inefficient?
댓글 수: 2
Amit
2014년 1월 28일
BTW, MATLAB is only using 1 core, I'd believe. And for a benchmark, is there anything else running besides MATLAB?
Royi Avital
2014년 2월 19일
채택된 답변
추가 답변 (1개)
Walter Roberson
2014년 1월 28일
0 개 추천
single() is often slower than double()
Your arrays are not that big; I am not sure that it is kicking in calls to the libraries.
댓글 수: 2
Royi Avital
2014년 1월 28일
Walter Roberson
2014년 1월 29일
Try with timeit. Or if you have an older MATLAB that does not have that built-in, you can get timeit from the File Exchange.
카테고리
도움말 센터 및 File Exchange에서 Matrix Indexing에 대해 자세히 알아보기
제품
Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!