[Numpy-discussion] Quick Question about Optimization
Tue May 20 14:24:26 CDT 2008
> The time has now been shaved down to ~9 seconds with this suggestion
> from the original 13-14s, with the inclusing of Eric Firing's
> suggestions. This is without scipy.weave, which at the moment I can't
> get to work for all lines, and when I just replace one of them
> sucessfully it seems to run more slowly, I assume because it is
> converting data back and forth.
There's a nontrivial constant time cost to using scipy.weave.blitz,
but it isn't copying the data. Thus it will slow you down on smaller
arrays, but you'll notice quite a speed-up on much larger ones. I
should have mentioned that earlier -- I assumed your arrays were
> Are there any major pitfalls to be aware of? It sounds like if I do:
> f = a[n,:] I get a reference, but if I did something like g = a[n,:]*2
> I would get a copy.
Well, if you do f = a[n, :], you would get a view, another object that
shares the data in memory with a but is a separate object.
> If anyone has any clues on why scipy.weave is blowing
> (http://pastebin.com/m79699c04) using the code I attached, I wouldn't
> mind knowing. Most of the times I've attempted using weave, I've been
> a little baffled about why things aren't working. I also don't have a
> sense for whether all numpy functions should be "weavable" or if it's
> just general array operations that can be put through weave.
Sorry I didn't get back to you earlier on this -- I was a bit busy
yesterday. It looks like weave.blitz isn't working on your second
line because you're not explicitly putting slices in some of the
dimensions, In numpy v[0:2] works for 1,2,3,4,.... dimensions, but
for a 2d array in blitz you have to use v[0:2,:], 3d v[0:2,:,:]. It's
a bit more picky. I think that's the problem with your second line
-- try replacing v[:] with v[0,:] and theta[1-curidx] with
theta[1-curidx, :]. (I may have missed some others.)
weave.blitz is currently limited to just array operations... it
doesn't really support the numpy functions.
Hope that helps a little....
UBC Department of Computer Science
More information about the Numpy-discussion