Performance of a Windows Octave standalone.

classic Classic list List threaded Threaded
2 messages Options
Reply | Threaded
Open this post in threaded view
|

Performance of a Windows Octave standalone.

Ole Jacob Hagen-3
Hi.

I have been struggling with NSIS, Cygwin and Windows lately, but have
now made a stand alone installation package for octave-2.1.60, included
octave-forge (CVS -version), some cygwin libraries, and support for
gnuplot (windows version).
You don't need Cygwin to run Octave, since the run-time libraries are
included. ;-)
Remember that there are no atlas or blas included here. It's purely
Octave code.


I compiled octave and octave-forge with gcc-3.3.3, and benchmarked my
octave according to the benchmark suites found in
http://www.sciviews.org/other/benchmark.htm. Thanks to D. Bateman, I
could run the complete test. ;-)
Attaches the gcd2.m file, that are required to finish point 3.C of the
benchmark test.
 
Take a look at the results from the bench-test. m-files are slow, but
some oct-files are pretty acceptable.
How does this compare with the Linux system?

Could it be an advantage, if I compiled octave with gcc-3.2.2 instead?
Could someone compare with gcc-3.2.2?


I am having some hacking left to do, but when this is ready, I'll will
make the stand-alone Octave available at sourceforge or octave.org.

If you are really in a dead or alive situation with Octave on Windows,
then send me an email.
I will then give you access to my ftp, as fast as I can. ;-)

Cheers,

Ole J.


And my results are:

octave-2.1.60:8> benchmark

   Octave Benchmark 2
   ==================
Number of times each test is run__________________________: 3
 
   I. Matrix calculation
   ---------------------
Creation, transp., deformation of a 1500x1500 matrix (sec): 1.093
800x800 normal distributed random matrix ^1000______ (sec): 0.899
Sorting of 2,000,000 random values__________________ (sec): 1.34
700x700 cross-product matrix (b = a' * a)___________ (sec): 4.224
Linear regression over a 600x600 matrix (c = a \ b') (sec): 0.9883
                  ------------------------------------------------------
                Trimmed geom. mean (2 extremes eliminated): 1.131
 
   II. Matrix functions
   --------------------
FFT over 800,000 random values______________________ (sec): 0.9717
Eigenvalues of a 320x320 random matrix______________ (sec): 1.215
Determinant of a 650x650 random matrix______________ (sec): 1.166
Cholesky decomposition of a 900x900 matrix__________ (sec): 0.6697
Inverse of a 400x400 random matrix__________________ (sec): 0.9513
                  ------------------------------------------------------
                Trimmed geom. mean (2 extremes eliminated): 1.025
 
   III. Programmation
   ------------------
750,000 Fibonacci numbers calculation (vector calc)_ (sec): 1.726
Creation of a 2250x2250 Hilbert matrix (matrix calc) (sec): 0.8423
Grand common divisors of 70,000 pairs (recursion)___ (sec): 3.229
Creation of a 220x220 Toeplitz matrix (loops)_______ (sec): 38.49
Escoufier's method on a 37x37 matrix (mixed)________ (sec): 26.15
                  ------------------------------------------------------
                Trimmed geom. mean (2 extremes eliminated): 5.263
 
 
Total time for all 15 tests_________________________ (sec): 83.96
Overall mean (sum of I, II and III trimmed means/3)_ (sec): 1.828
                      --- End of test ---


function c = gcd2(a, b)
% Greatest common divisor  by a recursive algorithm
% This function is used for the Matlab benchmark
% Use gcd(a, b) instead for other uses
%
% by Ph. Grosjean, 2001 ([hidden email])

if b <= 1.0E-4
  c = a;
else
  b(b == 0) = a(b == 0);
  c = gcd2(b, rem(a, b));
end

Reply | Threaded
Open this post in threaded view
|

Re: Performance of a Windows Octave standalone.

Yadin Y. Goldschmidt
There is a big advantage for compiling with gcc 3.2.2 because of a known
problem with gcc 3.3 and above with octave.
Here are my test results for octave 2.1.60 comiled with cygwin
and gcc 3.2:

   Octave Benchmark 2
   ==================
Number of times each test is run__________________________: 3

   I. Matrix calculation
   ---------------------
Creation, transp., deformation of a 1500x1500 matrix (sec): 0.8523
800x800 normal distributed random matrix ^1000______ (sec): 0.8037
Sorting of 2,000,000 random values__________________ (sec): 0.9283
700x700 cross-product matrix (b = a' * a)___________ (sec): 3.358
Linear regression over a 600x600 matrix (c = a \ b') (sec): 0.7983
                  ------------------------------------------------------
                Trimmed geom. mean (2 extremes eliminated): 0.8599

   II. Matrix functions
   --------------------
FFT over 800,000 random values______________________ (sec): 0.823
Eigenvalues of a 320x320 random matrix______________ (sec): 0.963
Determinant of a 650x650 random matrix______________ (sec): 0.8977
Cholesky decomposition of a 900x900 matrix__________ (sec): 0.503
Inverse of a 400x400 random matrix__________________ (sec): 0.6413
                  ------------------------------------------------------
                Trimmed geom. mean (2 extremes eliminated): 0.7796
   II. Matrix functions
   --------------------
FFT over 800,000 random values______________________ (sec): 0.823
Eigenvalues of a 320x320 random matrix______________ (sec): 0.963
Determinant of a 650x650 random matrix______________ (sec): 0.8977
Cholesky decomposition of a 900x900 matrix__________ (sec): 0.503
Inverse of a 400x400 random matrix__________________ (sec): 0.6413
                  ------------------------------------------------------
                Trimmed geom. mean (2 extremes eliminated): 0.7796

   III. Programmation
   ------------------
750,000 Fibonacci numbers calculation (vector calc)_ (sec): 1.662
Creation of a 2250x2250 Hilbert matrix (matrix calc) (sec): 2.217
Grand common divisors of 70,000 pairs (recursion)___ (sec): 0.9833
Creation of a 220x220 Toeplitz matrix (loops)_______ (sec): 2.975
Escoufier's method on a 37x37 matrix (mixed)________ (sec): 3.369
                  ------------------------------------------------------
                Trimmed geom. mean (2 extremes eliminated): 2.221


Total time for all 15 tests_________________________ (sec): 21.77
Overall mean (sum of I, II and III trimmed means/3)_ (sec): 1.142
                      --- End of test ---
You see that there can be a factor of 10 in the time in part III.

Cheers, Yadin.

"Ole Jacob Hagen" <[hidden email]> wrote in message
news:[hidden email]...

> Hi.
>
> I have been struggling with NSIS, Cygwin and Windows lately, but have
> now made a stand alone installation package for octave-2.1.60, included
> octave-forge (CVS -version), some cygwin libraries, and support for
> gnuplot (windows version).
> You don't need Cygwin to run Octave, since the run-time libraries are
> included. ;-)
> Remember that there are no atlas or blas included here. It's purely
> Octave code.
>
>
> I compiled octave and octave-forge with gcc-3.3.3, and benchmarked my
> octave according to the benchmark suites found in
> http://www.sciviews.org/other/benchmark.htm. Thanks to D. Bateman, I
> could run the complete test. ;-)
> Attaches the gcd2.m file, that are required to finish point 3.C of the
> benchmark test.
>
> Take a look at the results from the bench-test. m-files are slow, but
> some oct-files are pretty acceptable.
> How does this compare with the Linux system?
>
> Could it be an advantage, if I compiled octave with gcc-3.2.2 instead?
> Could someone compare with gcc-3.2.2?
>
>
> I am having some hacking left to do, but when this is ready, I'll will
> make the stand-alone Octave available at sourceforge or octave.org.
>
> If you are really in a dead or alive situation with Octave on Windows,
> then send me an email.
> I will then give you access to my ftp, as fast as I can. ;-)
>
> Cheers,
>
> Ole J.
>
>
> And my results are:
>
> octave-2.1.60:8> benchmark
>
>   Octave Benchmark 2
>   ==================
> Number of times each test is run__________________________: 3
>
>   I. Matrix calculation
>   ---------------------
> Creation, transp., deformation of a 1500x1500 matrix (sec): 1.093
> 800x800 normal distributed random matrix ^1000______ (sec): 0.899
> Sorting of 2,000,000 random values__________________ (sec): 1.34
> 700x700 cross-product matrix (b = a' * a)___________ (sec): 4.224
> Linear regression over a 600x600 matrix (c = a \ b') (sec): 0.9883
>                  ------------------------------------------------------
>                Trimmed geom. mean (2 extremes eliminated): 1.131
>
>   II. Matrix functions
>   --------------------
> FFT over 800,000 random values______________________ (sec): 0.9717
> Eigenvalues of a 320x320 random matrix______________ (sec): 1.215
> Determinant of a 650x650 random matrix______________ (sec): 1.166
> Cholesky decomposition of a 900x900 matrix__________ (sec): 0.6697
> Inverse of a 400x400 random matrix__________________ (sec): 0.9513
>                  ------------------------------------------------------
>                Trimmed geom. mean (2 extremes eliminated): 1.025
>
>   III. Programmation
>   ------------------
> 750,000 Fibonacci numbers calculation (vector calc)_ (sec): 1.726
> Creation of a 2250x2250 Hilbert matrix (matrix calc) (sec): 0.8423
> Grand common divisors of 70,000 pairs (recursion)___ (sec): 3.229
> Creation of a 220x220 Toeplitz matrix (loops)_______ (sec): 38.49
> Escoufier's method on a 37x37 matrix (mixed)________ (sec): 26.15
>                  ------------------------------------------------------
>                Trimmed geom. mean (2 extremes eliminated): 5.263
>
>
> Total time for all 15 tests_________________________ (sec): 83.96
> Overall mean (sum of I, II and III trimmed means/3)_ (sec): 1.828
>                      --- End of test ---
>
>


--------------------------------------------------------------------------------


> function c = gcd2(a, b)
> % Greatest common divisor  by a recursive algorithm
> % This function is used for the Matlab benchmark
> % Use gcd(a, b) instead for other uses
> %
> % by Ph. Grosjean, 2001 ([hidden email])
>
> if b <= 1.0E-4
>  c = a;
> else
>  b(b == 0) = a(b == 0);
>  c = gcd2(b, rem(a, b));
> end
>
>