Path: news.mathworks.com!not-for-mail
From: "Julian Reichl" <julesreichl@yahoo.co.uk>
Newsgroups: comp.soft-sys.matlab
Subject: Re: very slow vectorized code
Date: Tue, 29 Apr 2008 03:24:01 +0000 (UTC)
Organization: The MathWorks, Inc.
Lines: 89
Message-ID: <fv64ch$qum$1@fred.mathworks.com>
References: <fupais$8av$1@fred.mathworks.com> <fupbim$hs6$1@fred.mathworks.com> <futap9$f0d$1@fred.mathworks.com>
Reply-To: "Julian Reichl" <julesreichl@yahoo.co.uk>
NNTP-Posting-Host: webapp-02-blr.mathworks.com
Content-Type: text/plain; charset="ISO-8859-1"
Content-Transfer-Encoding: 8bit
X-Trace: fred.mathworks.com 1209439441 27606 172.30.248.37 (29 Apr 2008 03:24:01 GMT)
X-Complaints-To: news@mathworks.com
NNTP-Posting-Date: Tue, 29 Apr 2008 03:24:01 +0000 (UTC)
X-Newsreader: MATLAB Central Newsreader 1043246
Xref: news.mathworks.com comp.soft-sys.matlab:465637


Thanks Bill and Yi Cao for your replies...
I'll check out the JIT thing and let you know how I go,

cheers
Julian

"Yi Cao" <y.cao@cranfield.ac.uk> wrote in message
<futap9$f0d$1@fred.mathworks.com>...
> "Julian Reichl" <julesreichl@yahoo.co.uk> wrote in message 
> <fupbim$hs6$1@fred.mathworks.com>...
> > I just tried commenting out all the other code within the 
> loop 
> > i=1:28305
> > ...
> > end
> > and it bought that e(:,:)=0;
> > statement back to 0.04s. So could this mean that there is
> > some memory issue?
> > 
> > "Julian Reichl" <julesreichl@yahoo.co.uk> wrote in message
> > <fupais$8av$1@fred.mathworks.com>...
> > > Hi all,
> > > I have a problem that I can't figure out.  I have two
> > > versions of some code, one vectorised, the other not. 
> The
> > > vectorised version runs WAY slower for single repeats - 
> ~17
> > > seconds cf. 0.3 seconds.
> > > 
> > > The profiler tells me that pretty much every line of the
> > > code is a lot slower in the vectorised version. Even 
> simple
> > > things like 
> > > 
> > > e=repmat(1,1);
> > > for i=1:28305
> > > e(:,:)=0;
> > > end
> > > 
> > > (the 1:28305 is a time-stepping loop and can't be 
> removed)
> > > takes 0.39 s inside the vectorised code (not including 
> the
> > > repmat), whereas in the command line it takes less than 
> a
> > > 10th of that time.
> > > if, in the same code (the vectorised version), I 
> replace it
> > > with 
> > > 
> > > for i=1:28305
> > > e=0;
> > > end
> > > 
> > > (which is fine for this example because it's a 1x1, but 
> not
> > > for my application), the time for that function drops,
> > > again, to ~ a 10th. 
> > > 
> > > I really hope someone has an idea!!!
> > > 
> > > thanks
> > > 
> > > Julian
> > > 
> > 
> 
> I guess this is because JIT accelerator, i.e. your 
> vectorized code is quite complicated, hence the JIT 
> accelerator is not able to accelerate it, while your simple 
> loop version is in favour for the JIT to accelerate. When 
> you remove all other lines in the loop, the vectorized 
> version becomes simple as well, hence the JIT can 
> accelerate it now. That is why you see speed improvement. 
> To demonstrate this, you can try run your code with JIT on 
> and off by using the command:
> 
> feature accel on
> 
> or
> 
> feature accel off
> 
> to see if this is the case.
> 
> hth
> Yi Cao 
>