[erlang-questions] Parallel Shootout & a style question

Gleb Peregud gleber.p@REDACTED
Tue Sep 2 09:52:41 CEST 2008


Maybe it is good idea to include something like
http://code.google.com/p/plists/ into Erlang/OTP? It will probably
introduce more less tuned software created by developers, but it will
make programming multi-core systems much more easier and fun for
beginners.

On Tue, Sep 2, 2008 at 9:42 AM, Mats Cronqvist <mats.cronqvist@REDACTED> wrote:
> Kevin Scaldeferri wrote:
>> First,  I don't think it's been mentioned here, but the language
>> benchmarks shootout finally got some multi-core hardware!
>>
>> http://shootout.alioth.debian.org/u64q/
>>
>> At the moment, though, there are almost no submissions of parallelized
>> code, so the results are about the same as the existing hardware.
>>
>> I figured (slightly spurred on by the Haskell community) that we
>> should try to submit some modified versions that actually use the
>> multiple cores.  So, for example, I made a slight change to the binary
>> trees code and got a nearly 2x speedup on my 2-core machine.  In doing
>> so, I did run into one of those little things that I've never really
>> known the preferred approach for.  My modified function looks like this:
>>
>> depthLoop(D,M) when D > M -> ok;
>> depthLoop(D,M) ->
>>      Self = self(),
>>      spawn(fun() ->
>>                    N = 1 bsl (M-D + ?Min),
>>                    io:fwrite("~w\t trees of depth ~w\t check: ~w~n",
>>                              [ 2*N, D, sumLoop(N,D,0) ]),
>>                    Self ! done
>>            end),
>>      depthLoop (D+2,M),
>>      receive done -> done end.
>>
>>
>>
>  i'm partial to the monitor-exit idiom. gets rid of the Self for one thing.
>
>  mats
>
>  depthLoop(D,M) when D > M -> ok;
>  depthLoop(D,M) ->
>   erlang:spawn_monitor(fun()-> slave(D, M) end),
>   depthLoop (D+2,M),
>   receive {'DOWN',_,_,_,done} -> done end.
>
>  slave(D, M) ->
>   N = 1 bsl (M-D + ?Min),
>   io:fwrite("~w\t trees of depth ~w\t check: ~w~n",
>         [ 2*N, D, sumLoop(N,D,0) ]),
>   exit(done).
>
> _______________________________________________
> erlang-questions mailing list
> erlang-questions@REDACTED
> http://www.erlang.org/mailman/listinfo/erlang-questions
>



-- 
Gleb Peregud
http://gleber.pl/

Every minute is to be grasped.
Time waits for nobody.
-- Inscription on a Zen Gong



More information about the erlang-questions mailing list