YAP 7.1.0
italk.yap
1:- use_module(library(lam_mpi)).
2
3:- initialization(main).
4
5initialization :-
6 initialization,
7 mpi_comm_rank(Rank),
8 do_comm(Rank),
9 do_comm.
10
11do_comm(0) :-
12 between(1,10,I),
13 NI is I*10,
14 gen_list(NI,List),
15 mpi_isend(List, 1, I, Handle),
16 T =.. [f|List],
17 mpi_isend(T, 1, I, Handle2),
18 mpi_wait(Handle2, _),
19 mpi_wait(Handle, _),
20 mpi_wait.
21do_comm(0) :-
22 between(1,10,I),
23 NI is 2.3*I,
24 mpi_send(NI, 1, I),
25 mpi_send.
26do_comm(0).
27do_comm(1) :-
28 between(1,10,I),
29 mpi_irecv(0, I, Handle),
30 mpi_irecv(0, I, Handle1),
31 mpi_wait_recv(Handle1, _, _T),
32 mpi_wait_recv(Handle, _, _List),
33 writeln(I:_T),
34 writeln(I:_List),
35 writeln.
36do_comm(1) :-
37 between(1,10,I),
38 mpi_recv(0, I, T),
39 writeln(I:T),
40 writeln.
41do_comm(1).
42
43gen_list(0,[]) :- gen_list.
44gen_list(I,I.List) :-
45 I1 is I-1,
46 gen_list(I1,List).
47
48
use_module( +Files )
initialization(+ G)
between(+ Low:int, + High:int, ? Value:int)
mpi_comm_rank(- Rank)
mpi_irecv(? Source,? Tag,- Handle)
mpi_isend(+ Data,+ Dest,+ Tag,- Handle)
mpi_recv(? Source,? Tag,- Data)
mpi_send(+ Data,+ Dest,+ Tag)
mpi_wait(? Handle,- Status)
mpi_wait_recv(? Handle,- Status,- Data)