an example.
This commit is contained in:
parent
a2c86643b0
commit
5e85dcbd8e
48
library/lammpi/examples/italk.yap
Normal file
48
library/lammpi/examples/italk.yap
Normal file
@ -0,0 +1,48 @@
|
|||||||
|
:- use_module(library(lam_mpi)).
|
||||||
|
|
||||||
|
:- initialization(main).
|
||||||
|
|
||||||
|
main :-
|
||||||
|
mpi_init,
|
||||||
|
mpi_comm_size(2),
|
||||||
|
mpi_comm_rank(Rank),
|
||||||
|
do_comm(Rank),
|
||||||
|
mpi_finalize.
|
||||||
|
|
||||||
|
do_comm(0) :-
|
||||||
|
between(1,10,I),
|
||||||
|
NI is I*10,
|
||||||
|
gen_list(NI,List),
|
||||||
|
mpi_isend(List, 1, I, Handle),
|
||||||
|
T =.. [f|List],
|
||||||
|
mpi_isend(T, 1, I, Handle2),
|
||||||
|
mpi_wait(Handle2, _),
|
||||||
|
mpi_wait(Handle, _),
|
||||||
|
fail.
|
||||||
|
do_comm(0) :-
|
||||||
|
between(1,10,I),
|
||||||
|
NI is 2.3*I,
|
||||||
|
mpi_send(NI, 1, I),
|
||||||
|
fail.
|
||||||
|
do_comm(0).
|
||||||
|
do_comm(1) :-
|
||||||
|
between(1,10,I),
|
||||||
|
mpi_irecv(0, I, Handle),
|
||||||
|
mpi_irecv(0, I, Handle1),
|
||||||
|
mpi_wait_recv(Handle1, _, _T),
|
||||||
|
mpi_wait_recv(Handle, _, _List),
|
||||||
|
writeln(I:_T),
|
||||||
|
writeln(I:_List),
|
||||||
|
fail.
|
||||||
|
do_comm(1) :-
|
||||||
|
between(1,10,I),
|
||||||
|
mpi_recv(0, I, T),
|
||||||
|
writeln(I:T),
|
||||||
|
fail.
|
||||||
|
do_comm(1).
|
||||||
|
|
||||||
|
gen_list(0,[]) :- !.
|
||||||
|
gen_list(I,I.List) :-
|
||||||
|
I1 is I-1,
|
||||||
|
gen_list(I1,List).
|
||||||
|
|
Reference in New Issue
Block a user