48 lines
636 B
Plaintext
48 lines
636 B
Plaintext
|
#!/usr/local/bin/yap -L --
|
||
|
|
||
|
% called with
|
||
|
% mpirun -np 2 gowait.
|
||
|
% prints
|
||
|
% ------
|
||
|
% main
|
||
|
% main
|
||
|
% after_init
|
||
|
% after_init
|
||
|
% [0,2]
|
||
|
% [1,2]
|
||
|
% irecv
|
||
|
% wait_end
|
||
|
% after_send
|
||
|
% c(535755152,)
|
||
|
|
||
|
:- use_module(library(lam_mpi)).
|
||
|
:- use_module(library(system)).
|
||
|
main:-
|
||
|
write(main),nl,
|
||
|
mpi_init,
|
||
|
write(after_init),nl,
|
||
|
mpi_comm_size(S),
|
||
|
mpi_comm_rank(R),
|
||
|
write([R,S]),nl,
|
||
|
(R == 0->
|
||
|
sleep(2),
|
||
|
write(wait_end),nl,
|
||
|
mpi_send(ciao,1,201),
|
||
|
write(after_send),nl
|
||
|
;
|
||
|
mpi_irecv(0,_201,H),
|
||
|
write(irecv),nl,
|
||
|
test(H)
|
||
|
),
|
||
|
mpi_finalize.
|
||
|
|
||
|
test(H):-
|
||
|
(mpi_wait_recv(H,S,Data)->
|
||
|
write(c(S,Data)),nl
|
||
|
;
|
||
|
write(no),nl,
|
||
|
test(H)
|
||
|
).
|
||
|
|
||
|
:-main.
|