bug-apl
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Bug-apl] first shot at parallel APL


From: Elias Mårtenson
Subject: Re: [Bug-apl] first shot at parallel APL
Date: Fri, 26 Sep 2014 13:22:12 +0800

I've tested this code, and I don't see much of an improvement as I increase the core count:

Given the following function:

    ∇Z ← NCPU time LEN;T;X;tmp
      ⎕SYL[26;2] ← NCPU
      X ← LEN⍴2J2
      T ← ⎕TS
      tmp ← X⋆X
      Z←1 1 1 24 60 60 1000⊥⎕TS - T
    ∇

I'm running this command on my 8-core workstation:

      (⍳8) ∘.time 10⋆⍳7
0 0 0 2 19 188 2139
0 0 1 2 19 189 2147
0 0 1 2 19 210 2256
0 0 0 2 19 194 2427
0 0 0 3 28 284 3581
0 0 0 3 27 280 3510
0 0 0 3 27 284 3754
0 0 0 3 27 279 3637

Regards,
Elias

On 26 September 2014 13:05, Elias Mårtenson <address@hidden> wrote:
Thanks, I have merged the necessary changes.

Regards,
Elias

On 22 September 2014 23:50, Juergen Sauermann <address@hidden> wrote:
Hi,

I have finished a first shot at parallel (i.e. multicore) GNU APL: SVN 480.

This version computes all scalar functions in parallel if the ravel length of the result exceeds 100.
This can make the computation of small (but still > 100) vectors slower than if they were computed sequentially.
Therefore parallel execution is not yet the default. To enable it:

    ./configure
    make parallel
    make
    sudo make install


The current version uses some linux-specific features, which will be ported to other platforms later on (if possible).
./configure is supposed to detect this.

Some simple benchmarks are promising:

      X←1000000⍴2J2   ⍝ 1 Mio complex numbers
     
      ⎕SYL[26;2]←1   ⍝ 1 core
      T←⎕TS ◊ ⊣X⋆X ◊ 1 1 1 24 60 60 1000⊥⎕TS - T
246
     
      ⎕SYL[26;2]←2   ⍝ 2 cores
      T←⎕TS ◊ ⊣X⋆X ◊ 1 1 1 24 60 60 1000⊥⎕TS - T
136
     
      ⎕SYL[26;2]←3   ⍝ 3 cores
      T←⎕TS ◊ ⊣X⋆X ◊ 1 1 1 24 60 60 1000⊥⎕TS - T
102
     
      ⎕SYL[26;2]←4   ⍝ 4 cores
      T←⎕TS ◊ ⊣X⋆X ◊ 1 1 1 24 60 60 1000⊥⎕TS - T

91

The next step will be to find the break-even points of all scalar functions, so that parallel execution is
only done when it promises some speedup.

Elias, the PointerCell constructor has got one more argument . I have updated emacs-mode and sql accordingly.
- you may want to sync back.

/// Jürgen






reply via email to

[Prev in Thread] Current Thread [Next in Thread]