On 4 Sep 2010, at 20:42, Joe Vornehm Jr. wrote:

> I think corresponding with the authors is the best approach.  It is  
> too late to change the article since it's already in press.  The  
> authors may choose to publish a comment clarifying the results.  If  
> Martin is still dissatisfied with their response, perhaps he might  
> submit a comment to the journal (author instructions here).
>
> I feel there are some additional issues in this paper, even beyond  
> the possible benchmark errors.  There are major or minor  
> inaccuracies in almost every section that mentions Octave.  I agree  
> that they should have been using Octave 3.2.x, which was available  
> well before the January submission date listed on the paper.  I  
> don't know how they didn't find the documentation website, and  
> anyway, I don't know why "help" and "lookfor" don't qualify as  
> online documentation and indexing, or why they are considered "not  
> user-friendly."  They neglected Java support and the packages  
> available via Octave-Forge.  I do wish they would make their  
> methodology (especially their code) public so it can be inspected.   
> And I hope they compared the numerical results of the different  
> products to make sure their code was correct.
>
> But to put my concerns in the proper context, I think it's an  
> excellent idea for a paper, and I'm glad they pursued it.  It's just  
> the kind of reference that is needed for scientists and others  
> choosing a computational package.  I hope they are willing to work  
> through the issues being raised here.
>
> Joe V.

In case anyone wants to check the results shown in that paper I  
prepared a script performing (what is my interpretetion of)
the benchmarks listed in the tables, this could be helpful for keeping  
the discussion with the authors on technical grounds rather than  
starting a flamewar.
I also reported the results I obtained on my 2.5 years old core2-duo  
macbook running OS X 10.5.8 and Octave.app 3.2.3.
My guess is that those guys somehow got a version of Octave linked to  
a poor implementation of BLAS/LAPACK

HTH,
c.

P.S. tests from the statistics section are missing as I went out of  
time, sorry

----------8<-----------


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%Miscellaneous operations                    freemat   mathnium    
octave       R         Scilab
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%Loop test 10,000 × 10,000                   601.606   798.788   1526.000    
261.077     271.713

tic, for ii=1:1e4, for jj=1:1e4, end, end, toc()
%Elapsed time is 14.674 seconds.

% 2000 × 2000 random matrix^1000               1.573     3.886       
0.592     0.745      29.398

a = rand(2000);
tic, a^1e3; toc()
%Elapsed time is 23.488 seconds.

tic, a.^1e3; toc()
%Elapsed time is 0.42365 seconds.

% Sorting of 5,000,000 random values           4.545    94.692       
1.581     1.449       2.300

a = rand (5e6, 1);
tic (), sort (a); toc ()
%Elapsed time is 1.2075 seconds.

% FFT over 220 random values                   0.405    23.912       
0.137     0.763       0.991

a = rand (220, 1);
tic (), fft (a); toc ()
%Elapsed time is 0.00012302 seconds.

% Calculation of 2,000,000 Fibonacci numbers   1.798    81.205       
2.514     0.430       3.047

nf = 2e6;
%with for loop
tic; fib = ones (nf, 1); for ii=3:nf; fib(ii) = fib(ii-1)+fib(ii-2);  
end; toc()
%Elapsed time is 39.529878 seconds.

%with filter
tic (); x = [1; zeros(nf-1, 1)]; a = [1 -1 -1]; b = 1; fibfil =  
filter(b, a, x); toc ()
%Elapsed time is 0.8 seconds.
isequal (fib, fibfil)
%ans =  1

% Factorial of a big integer (10 digits)       0.002     0.003       
0.007     0.008       0.003

a = floor (rand (1)*1e10)
%a =  8.2000e+09
tic, factorial (a); toc
%Elapsed time is 0.000299 seconds.

% Plot 2-D on 200,000 points                   0.563     1.072       
0.128     7.988      19.292

%with gnuplot
a = rand (2e5, 1);
tic (); plot (a); toc ()
%Elapsed time is 0.6472 seconds. (but the window takes much longer to  
show up)
close all
backend ('fltk')
tic (); plot (a); toc ()
%Elapsed time is 0.04016 seconds. (and the window comes up very quickly)

% Plot 3-D on 200,000 points                   1.105     3.691       
0.091     0.216       1.789

close all
backend ('gnuplot')
tic (); plot3 (a); toc ()
%Elapsed time is 0.4186 seconds. (but the window takes forever to show  
up)
close all
backend ('fltk')
tic (); plot3 (a); toc ()
%Elapsed time is 0.04582 seconds. (and the window comes up very quickly)
% Average performance for  this group         37.71%    14.57%      
68.49%    57.62%      31.01%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Matrix operations                                             
freemat   mathnium   octave       R         Scilab
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% Matrix multiplication among two 2000 × 2000 random matrices    
8.187   171.389     18.664      0.070      4.626

a = rand (2e3, 2e3);
b = rand (2e3, 2e3);
tic (); a*b; toc ()
%Elapsed time is 1.3 seconds.
tic (); a.*b; toc ()
%Elapsed time is 0.06476 seconds.


% Transpose of a 2000 × 2000 random matrix                       
0.311     2.494      0.110      1.853      0.127

tic (); a'; toc ()
%Elapsed time is 0.06137 seconds.
tic (); a.'; toc ()
%Elapsed time is 0.066 seconds.

% Creation of a 2000 × 2000 Hilbert matrix                       
0.042     -          0.351      0.519      0.229

tic (); a = hilb (2e3); toc ()
%Elapsed time is 0.3474 seconds.

% Hessenberg form of a 2000 × 2000 random matrix                 
-       501.603   1274.100       -        29.412

a = rand (2e3, 2e3);
tic (); hess (a); toc ()
%Elapsed time is 11.886 seconds.

% Rank of a 2000 × 2000 random matrix                           
32.150   308.015     27.225     15.597     29.273

tic (); rank (a); toc ()
%Elapsed time is 13.795 seconds.

% Trace of a 2000 × 2000 random matrix                          
60.195     0.679      0.028      0.038      0.005

tic (); trace (a); toc ()
%Elapsed time is 0.003068 seconds.

% Condition number of a 2000 × 2000 random matrix             491.47    
3939.406     20.735     16.853     29.257

tic (); cond (a); toc ()
%Elapsed time is 13.394 seconds.

% Kronecker product of two 200 × 200 random matrices             
-        20.367      0.210      0.337      0.102

a = rand (200);
b = rand (200);
tic; kron (a, b); toc ()
%error: memory exhausted or requested size too large for range of  
Octave's index type -- trying to return to prompt
% Average performance for the tests of this group               
31.35%     2.42%     39.75%     50.90%     64.68%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Basic algebra                                       freemat    
mathnium   octave       R         Scilab
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

% Determinant of a 2000 × 2000 random matrix           3.945      
33.214    6.007      5.796       3.249
a = rand (2000);
tic; det (a); toc ()
%Elapsed time is 0.739024 seconds.

% Inverse of a 2000 × 2000 random matrix             533.880      
78.364   18.991     24.409       9.489
tic; inv (a); toc ()
%Elapsed time is 2.23666 seconds.

% Eigenvalues of a 2000 × 2000 random matrix          44.679    
3645.349   58.462     59.596      46.147
tic; eig (a); toc ()
%Elapsed time is 47.4915 seconds.

% Eigenvectors over a 2000 × 2000 random matrix      104.053    
3787.40   125.200    126.105     540.456
tic; [v, l] = eig (a); toc ()
%Elapsed time is 120.715 seconds.

% 2000 × 2000 dot product matrix                       8.665    
181.192   18.763      11.995      4.751
a = rand (2e3, 1); b = rand (1, 2e3);
tic; a * b; toc () %% Is that what is meant by dot product matrix??
%Elapsed time is 0.0591681 seconds.

% Norm of a 2000 × 2000 random matrix                 30.000      
6.623   27.196       0.180     29.240
a = rand (2e3);
tic; norm (a); toc ()
%Elapsed time is 13.2002 seconds.

% Linear system solve of 1500 equations                1.903      
7.151    2.764       2.677     76.925
a = rand (1.5e3); b = rand (1.5e3, 1);
tic; a \b; toc ()
%Elapsed time is 0.40785 seconds.
% Average performance for the tests of this group     62.80%     
8.26%    51.20%     66.16%      59.88%

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Advanced algebra                                           freemat    
mathnium   octave       R         Scilab
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Cholesky decomposition of a 2000 × 2000 random matrix   –      
-        51.931     2.843       2.920      1.716
a = rand (2e3);
a = a*a';
tic; chol (a); toc ()
%Elapsed time is 0.388352 seconds.

% Lu decomposition of a 1500 × 1500 random matrix                
1.667    19.799     6.709       0.003      1.687
a = rand (1500);
tic; lu (a); toc ()
%Elapsed time is 0.689038 seconds.

% Qr decomposition of a 1200 × 1200 random matrix                
3.055    54.817    24.710       3.234      2.970
a = rand (1200);
tic; qr (a); toc ()
%Elapsed time is 0.819952 seconds.

% Singular value decomposition of a 2000 × 2000 random matrix  59.016   
3871.344   205.740      86.328     29.167
a = rand (2000);
tic; svd (a); toc ()
%Elapsed time is 13.3108 seconds.

% Schur decomposition of a 1500 × 1500 random matrix             
-       325.062    32.601      51.172     30.227
a = rand (1500);
tic; schur (a); toc ()
%Elapsed time is 29.2586 seconds.

% Reduced Row Echelon Form of a 2000 × 2000 random matrix      
311.442    21.890   269.770 –     -        144.047
a = rand (2000);
tic; rref (a); toc ()
%Elapsed time is 196.287 seconds.
% Average performance for the tests of this group   38.47%   19.80%    
31.24%   68.69%   69.23%

% Statistics
% PCA over a 3000 × 300 random matrix   –   –   1.5395   1.7020    
11.5281
% Gaussian error function on a 2000 × 2000 random matrix   0.110    
1.003   0.571   11.202   0.161
% Linear regression over a 2000 × 2000 random matrix   3.717    
172.287   6.025   17.848   3.412
% Arithmetic mean over a 2 × 106 random vector   0.034   4.686    
0.153   0.057   0.001
% Geometric mean over a 2 × 106 random vector   –   –   1.284    
4.937   0.002
% Harmonic mean over a 2 × 106 random vector   –   –   0.599   0.224    
0.002
% Standard deviation over a 2 × 106 random vector   0.128   1.156    
0.383   0.151   1.178
% Variance of a 1200 × 1200 random matrix   0.041   –   0.448    
3.145   2.945
% Skewness of 5 × 106 random values   0.325   106.453   1.211    
0.674   2.297
% Kurtosis of 5 × 106 random values   0.329   153.826   1.205    
0.771   2.250
% Range values of a 2000 × 2000 random array   0.123   0.594   0.249    
0.102   0.087
% Average performance for the tests of this group   83.19%   5.61%    
28.07%   34.19%   56.59%



------------------------------------------------------------------------------
This SF.net Dev2Dev email is sponsored by:

Show off your parallel programming skills.
Enter the Intel(R) Threading Challenge 2010.
http://p.sf.net/sfu/intel-thread-sfd
_______________________________________________
Octave-dev mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/octave-dev

Reply via email to