help-octave
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Octave 64-bit indexing built with ATLAS


From: Dmitri A. Sergatskov
Subject: Re: Octave 64-bit indexing built with ATLAS
Date: Mon, 11 Sep 2017 17:51:20 -0500



On Mon, Sep 11, 2017 at 1:39 PM, Felix Willenborg <address@hidden> wrote:


octave_mflops.m:
N = 400;
for i = 1:N
    n = 4096;
    x = rand(n, n);
    tic, x = x .* x;
    y = toc;
    mflops(i) = n*n / y / 1e6;
end

mflops_mean = sum(mflops)/N;
mflops_sig = std(mflops);
printf('MFLOPS: (%.2f +- %.2f)\n', mflops_mean, mflops_sig);
Now the funny part is the following, which confuses me a little bit. For the OpenBLAS build and the ATLAS build, I recieve the following values:
MFLOPS: (370.47 +- 7.60) (OpenBLAS)
MFLOPS: (370.43 +- 7.27) (ATLAS)
I expected ATLAS to be faster than OpenBLAS. Also: when monitoring the load with 'htop', only one CPU is fully loaded. I expected ATLAS to have parallel threading, which I tried to ensure by using libtatlas_Oct64.so. Am I expecting something wrong? And why, can someone explain to me what I did wrong?


​Openblas is (generally) faster.
x .* x does not use blas/lapack (hence, atlas) code, so that is why your result did not change.
Whatever number you calculate is a benchmark, but probably not actual mflops.
Replacing x.*x with x * x​ (and setting N = 4) I get on an old 4-core computer

With openblas:
octave:1> octave_mflops
MFLOPS: (5.19 +- 0.06)
​with atlas:
​octave:1> octave_mflops
MFLOPS: (3.56 +- 0.01)

​Regards,

Dmitri.
​--


reply via email to

[Prev in Thread] Current Thread [Next in Thread]