[m-users.] Parallel Mercury

Eduardo Costa edu500ac at gmail.com
Tue Nov 29 08:03:29 AEDT 2016


Well, I discovered the problem. I need to compile the program with:

mmc --parallel -j4 --grade=asm_fast.par.gc fibgc.m -o fib.x

Now, Mercury goes faster than C, as before. Thank you, anyway.



2016-11-28 18:03 GMT-02:00 Eduardo Costa <edu500ac at gmail.com>:

> A few years ago, I tested Mercury for parallel programming. It worked very
> well. In fact, with 8 CPUs, Mercury could beat a C program. Recently, I
> tested the very same programs again, but this time Mercury refused to
> parallelize the process. Gnome System Monitor shows a single CPU doing all
> the work. Here is the program I borrowed from Paul Bone's thesis:
>
> :- module fibgc.
> :- interface.
> :- import_module io.
> :- pred main(io::di, io::uo) is det.
> :- implementation.
>
> :- import_module float,integer.
> :- import_module solutions, io, int.
> :- import_module string, char, list.
>
> :- func fib(int, int) = int.
>
> fib(N, Depth)= F :-
>     ( N<2 -> F=1
>      ;
>      (Depth > 0 ->
>           ( F1= fib(N-1, Depth - 1)
>                    &
>                    F2= fib(N-2, Depth-1) & F= F1+F2)
>       ;
>       F1= fib(N-1, 0), F2= fib(N-2,0), F= F1+F2)).
>
> main(!S) :- command_line_arguments(Args, !S),
>    ( to_int(head(Args), N),
>      to_int(head(tail(Args)), D) ->
>     F= fib(N, D),
>     print(F, !S)
>    print("Usage: ./fibo.x 5", !S)),
>   nl(!S).
>
> %% ~/mercuryTutor/mybook$ mmc --parallel \
> %%     --high-level-code -j8 \
> %%     --grade=hlc.par.gc fibgc.m -o fib.x
>
> I wonder whether somebody in this list could tell me what is going on. By
> the way, I tried the above program with NAIL Prolog, and it is able to
> perform the parallelization. I mean, NAIL Prolog does the parallelization,
> not Mercury.
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mercurylang.org/archives/users/attachments/20161128/caae497a/attachment.html>


More information about the users mailing list