Alois Schlögl wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA1
>
>
> As some of you might know, my other pet project besides Octave, is
> BioSig http://biosig.sf.net. BioSig is designed in such a way that it
> can be used with both, Matlab and Octave. Mostly for performance reason,
> we cannot abandon support for Matlab [1,2]. Octave is a viable
> alternative in case the computational performance is not important. In
> order to decide on the future strategy of BioSig, I hope to get answers
> on the following questions:
>
> 1) Core development of Octave:
> At the meeting of Octave developer in 2006, the issue was raised
> that the Octave is about 4 to 5 times slower than Matlab [1]. (I
> repeated the tests just recently, the results are attached below, and
> show a difference of factors up to 13, average ~5) This issue is most
> relevant for large computational jobs, were it makes a difference
> whether a specific task takes 1 day or 5 days. Is anyone working to
> address this problem? Is there any hope that the performance penalty
> becomes smaller or will go away within a reasonable amount of time ?
>   
Its hard to tell what the source of your speed issues are.. The flippant 
response would be that with a JIT in octave then yes we could be as 
fast, we just need someone to write it. I suspect something will be done 
here in the future. The recent changes of John to have an evaluator 
class and his statement of adding a profiler in Octave 3.4 mean that the 
machinery needed to add a JIT will be in place.

However looking at your wackerman its not clear to me that its your 
for-loop that is taking all of the time in Octave. If it is have you 
considered rewriting

for k = 1:size(m2,1),
  if all(finite(m2(k,:))),
    L = eig(reshape(m2(k,:), [K,K]));
    L = L./sum(L);
    if all(L>0)
      OMEGA(k) = -sum(L.*log(L));
    end;
  end;
end;

with something like

rows_m2 = size(m2, 1);
m3 = permute (reshape (m2, [rows_m2, K, K]), [2, 3, 1]);
idx = all (finite (m2), 1);
t = cellfun (@(x) eig(x), mat2cell (m3 (:, :, idx), K, K, ones(1, rows_m2)),
             'UniformOutput', false);
t = cellfun (@(x) - sum (x .* log (x)),
        cellfun (@(x) x ./ sum(x), 'UniformOutput', false));
t(iscomplex(t)) = NaN;
OMEGA(idx) = t;

The code above is of course untested. But in the latest tip that should 
be much faster for Octave as Jaroslav optimized cellfun recently

> 2) Coding style:
> Octave understands a superset of commands compared to matlab, and it
> seems the current policy is to enforce the "octave style" and make the
> use of toolboxes incompatible for a use with Matlab. Is not it sensible
> to write platform-neutral applications ? Specifically, is not it in our
> own interest (wider usage make the code more robust) that matlab users
> are not "forced" to buy additional toolboxes but can use open source
> toolboxes e.g. from octave-forge?
>   
I'd personally consider that up to the toolboxes author. Using texinfo 
in the help string makes the Octave help string "nicer"....  I however 
don't think a policy should be made that toolboxes on octave-forge 
should be matlab compatible..


> 3) Scope of Octave and Octave-Forge:
> Open source software has its own merit, but sometimes also other factors
> (e.g. additional costs in hardware, energy supply and cooling systems,
> energy efficiency = "green computing") need to be considered. Given the
> fact that octave-core is currently slower for some tasks, it is worth
> considering to use proprietary mat-engine. The question is whether
> Octave and Octave-forge should provide support of toolboxes for matlab
> users too, or whether these users should go somewhere else? What do you
> think ?
>   
I'm not sure how this point differs from your second point.. Again to me 
its up to the toolboxes/packages author to decide whether they want 
matlab compatibility or not. If a toolbox is compatible I see no issue 
sending matlab users to octave-forge for code..

D.



-- 
David Bateman                                dbate...@dbateman.org
35 rue Gambetta                              +33 1 46 04 02 18 (Home)
92100 Boulogne-Billancourt FRANCE            +33 6 72 01 06 33 (Mob)


------------------------------------------------------------------------------
Stay on top of everything new and different, both inside and 
around Java (TM) technology - register by April 22, and save
$200 on the JavaOne (SM) conference, June 2-5, 2009, San Francisco.
300 plus technical and hands-on sessions. Register today. 
Use priority code J9JMT32. http://p.sf.net/sfu/p
_______________________________________________
Octave-dev mailing list
Octave-dev@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/octave-dev

Reply via email to