25calc(
From,
From,
Acc,
Res)
:- calc,
27calc(
From,
To,
Acc,
Res)
:- calc,
30 calc(
From,
To1,
Acc1,
Res).
41 mpe_create_event(
Ev1),
42 mpe_create_event(
Ev2),
43 mpe_create_state(
Ev1,
Ev2,processing,green),
46 mpe_create_event(
Ev3),
47 mpe_create_event(
Ev4),
48 mpe_create_state(
Ev3,
Ev4,bcasting,red),
51 mpe_create_event(
Ev5),
52 mpe_create_event(
Ev6),
53 mpe_create_state(
Ev5,
Ev6,
'sending/receiving',brown),
60 mpe_log(
Ev3,
0,event3),
61 mpi_bcast(msg(
From,
To),
0),
62 mpe_log(
Ev4,
0,event4),
69 mpe_log(
Ev5,
0,event5),
70 mpi_receive(
T,
Source,
Tag),
71 mpe_log(
Ev6,
0,event6),
72 format(
'0: Proc ~q said: ~q (Tag: ~q)~n', [
Source,
T,
Tag] ),
79 NewCounter is Counter - 1,
83 format(
'0: Sum(~q..~q) = ~q.~n', [
From,
To,
NewAcc]).
95 mpe_create_event(
Ev1),
96 mpe_create_event(
Ev2),
97 mpe_create_state(
Ev1,
Ev2,processing,green),
100 mpe_create_event(
Ev3),
101 mpe_create_event(
Ev4),
102 mpe_create_state(
Ev3,
Ev4,bcasting,red),
105 mpe_create_event(
Ev5),
106 mpe_create_event(
Ev6),
107 mpe_create_state(
Ev5,
Ev6,
'sending/receiving',brown),
110 mpe_log(
Ev3,
0,event3),
112 mpe_log(
Ev4,
0,event4),
114 format(
'~q: All are calculating ~q..~q.~n', [
Rank,
From,
To] ),
115 MyFrom is floor(
To * (
Rank - 1)
/ (
NumProc - 1))
+ From,
116 MyTo is floor(
To * Rank / (
NumProc - 1))
+ From - 1,
117 format(
'~q: I am calculating ~q..~q.~n', [
Rank,
MyFrom,
MyTo] ),
119 mpe_log(
Ev1,
0,event1),
120 calc(
MyFrom,
MyTo,
0,
Result ),
121 mpe_log(
Ev2,
0,event2),
122 format(
'~q: sending ~q to 0. (Tag: 1)~n', [
Rank,
Result] ),
124 mpe_log(
Ev5,
0,event5),
126 mpe_log(
Ev6,
0,event6).
138 mpi_open(
Rank,
NumProc,
ProcName),
139 format(
'Rank: ~q NumProc: ~q, ProcName: ~q~n', [
Rank,
NumProc,
ProcName]),
142 format(
'Rank ~q finished!~n', [
Rank] ),
143 mpe_close( demo1_mpe ),
set_prolog_flag(+ Flag,+ Value)
mpi_send(+ Data,+ Dest,+ Tag)