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 <loke...@gmail.com> wrote:

> Thanks, I have merged the necessary changes.
>
> Regards,
> Elias
>
> On 22 September 2014 23:50, Juergen Sauermann <
> juergen.sauerm...@t-online.de> 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