<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type">
  <title></title>
</head>
<body bgcolor="#ffffff" text="#000000">
Robert Kern wrote:
<blockquote
 cite="mid:3d375d730803151259r739a8231hf9d2f8c6c0ad036d@mail.gmail.com"
 type="cite">
  <pre wrap="">On Sat, Mar 15, 2008 at 2:48 PM, Gnata Xavier <a class="moz-txt-link-rfc2396E" href="mailto:xavier.gnata@gmail.com">&lt;xavier.gnata@gmail.com&gt;</a> wrote:
  </pre>
  <blockquote type="cite">
    <pre wrap="">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  --&gt; :) ?
 Any comments ?
    </pre>
  </blockquote>
  <pre wrap=""><!---->
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.

  </pre>
</blockquote>
Well of course if the arrays are too small it will be slower but it
*is* much faster on large arrays.<br>
In many cases, there is no need lock/unlock : Look at&nbsp; 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. <br>
<br>
Why do we really (IMHO) need that ? Because "all" the machines (even
laptops) are now multicore/cpu.<br>
<br>
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.<br>
All this piece of software uses the simple syntaxe of IDL (ugly ones
compare to numpy :))<br>
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.<br>
<br>
Small arrays computation shall *not* be threaded, large ones should be
if we look at the multicores trend.<br>
<br>
Any comments ?<br>
<br>
Xavier<br>
</body>
</html>