[Numpy-discussion] Numpy and OpenMP
Gnata Xavier
xavier.gnata@gmail....
Sat Mar 15 15:51:40 CDT 2008
Robert Kern wrote:
> On Sat, Mar 15, 2008 at 2:48 PM, Gnata Xavier <xavier.gnata@gmail.com> wrote:
>
>> Hi,
>>
>> Numpy is great : I can see several IDL/matlab projects switching to numpy :)
>> However, it would be soooo nice to be able to put some OpenMP into the
>> numpy code.
>>
>> It would be nice to be able to be able to use several CPU using the
>> numpy syntax ie A=sqrt(B).
>>
>> Ok, we can use some inline C/C++ code but it is not so easy.
>> Ok, we can split the data over several python executables (one per CPU)
>> but A=sqrt(B) is so simple...
>>
>> numpy + recent gcc with OpenMP --> :) ?
>> Any comments ?
>>
>
> Eric Jones tried to use multithreading to split the computation of
> ufuncs across CPUs. Ultimately, the overhead of locking and unlocking
> made it prohibitive for medium-sized arrays and only somewhat
> disappointing improvements in performance for quite large arrays. I'm
> not familiar enough with OpenMP to determine if this result would be
> applicable to it. If you would like to try, we can certainly give you
> pointers as to where to start.
>
>
Well of course if the arrays are too small it will be slower but it *is*
much faster on large arrays.
In many cases, there is no need lock/unlock : Look at A=sqrt(A) : it is
obvious to speed-up such a compuation in pure C using OpenMP. From a
simple minded point of view, I would say that somewhere in numpy, there
should be such a C loop.
Why do we really (IMHO) need that ? Because "all" the machines (even
laptops) are now multicore/cpu.
Using IDL, it is possible to develop a quite large image processing
project working on large images on a 8core machine without *any*
konwledge of semaphore/lock.
All this piece of software uses the simple syntaxe of IDL (ugly ones
compare to numpy :))
I used to be very sceptical about the performances but I had a look and
*it just works well*. It scales just nicely up to 6 cores.
Small arrays computation shall *not* be threaded, large ones should be
if we look at the multicores trend.
Any comments ?
Xavier
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://projects.scipy.org/pipermail/numpy-discussion/attachments/20080315/39c3886d/attachment.html
More information about the Numpy-discussion
mailing list