On Thu, Oct 22, 2009 at 02:35, Sturla Molden <stu...@molden.no> wrote: > Robert Kern skrev: >> No, I think you're right. Using "SIMD" to refer to numpy-like >> operations is an abuse of the term not supported by any outside >> community that I am aware of. Everyone else uses "SIMD" to describe >> hardware instructions, not the application of a single syntactical >> element of a high level language to a non-trivial data structure >> containing lots of atomic data elements. >> > Then you should pick up a book on parallel computing.
I would be delighted to see a reference to one that refers to a high level language's API as SIMD. Please point one out to me. It's certainly not any of the ones I have available to me. > It is common to differentiate between four classes of computers: SISD, > MISD, SIMD, and MIMD machines. > > A SISD system is the classical von Neuman machine. A MISD system is a > pipelined von Neuman machine, for example the x86 processor. > > A SIMD system is one that has one CPU dedicated to control, and a large > collection of subordinate ALUs for computation. Each ALU has a small > amount of private memory. The IBM Cell processor is the typical SIMD > machine. > > A special class of SIMD machines are the so-called "vector machines", of > which the most famous is the Cray C90. The MMX and SSE instructions in > Intel Pentium processors are an example of vector instructions. Some > computer scientists regard vector machines a subtype of MISD systems, > orthogonal to piplines, because there are no subordinate ALUs with > private memory. > > MIMD systems multiple independent CPUs. MIMD systems comes in two > categories: shared-memory processors (SMP) and distributed-memory > machines (also called cluster computers). The dual- and quad-core x86 > processors are shared-memory MIMD machines. > > Many people associate the word SIMD with SSE due to Intel marketing. But > to the extent that vector machines are MISD orthogonal to piplined von > Neuman machines, SSE cannot be called SIMD. That's a fair point, but unrelated to whether or not numpy can be labeled SIMD. These all refer to hardware. > NumPy is a software simulated vector machine, usually executed on MISD > hardware. To the extent that vector machines (such as SSE and C90) are > SIMD, we must call NumPy an object-oriented SIMD library. numpy does not "simulate" anything. It is an object-oriented library. If numpy could be said to "simulate" a vector machine, than just about any object-oriented library that overloads operators could. It creates a false equivalence between numpy and software that actually does simulate hardware. -- Robert Kern "I have come to believe that the whole world is an enigma, a harmless enigma that is made terrible by our own mad attempt to interpret it as though it had an underlying truth." -- Umberto Eco _______________________________________________ NumPy-Discussion mailing list NumPy-Discussion@scipy.org http://mail.scipy.org/mailman/listinfo/numpy-discussion