-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathziger_ump_breakdown.tex
138 lines (133 loc) · 3.57 KB
/
ziger_ump_breakdown.tex
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
Figure~\ref{pgfplot:201306061829} shows the breakdown of the cost for
sending UMP messages on ziger1 for communication between core 0 and
all other cores.
Latency is calculated from the round-trip time minus send and receive
time on sender minus processing time on server. However, send time on
one end of a channel seems to overlap with received time on the other
end of the channel, which makes it hard to calculate actual
latency. Thus, we assume the server processing time to be 300 cycles.
\stefan{We can measure latency on a machine with synchronized clocks
when adding timestamps as payload to the ump messages.}
Send time is independent of which core the message is send
to. Internally, the send operation is a write operation to the local
cache. The cache coherency protocol will then invalidate all other
copies of this line in the system.
Receive time on the other hand does depend on which cores
communicate. When polling the cache-line, which is invalid at this
time, the cache coherency protocol will transfer this cache-line from
the sending to the receiving core.
\pgfplotsset{width=\linewidth}
\begin{figure}
\caption{UMP breakdown}
\label{pgfplot:201306061829}
\begin{tikzpicture}
\tikzsetnextfilename{UMP_breakdown_ziger}
\begin{axis}[
ybar stacked,ymin=0,legend style={ at={(0.5,-0.20)}, anchor=north, legend columns=-1},
xlabel={target core},
ylabel={cycles}
]
\addplot coordinates {
(1,300.000000)
(2,300.000000)
(3,300.000000)
(4,300.000000)
(5,300.000000)
(6,300.000000)
(7,300.000000)
(8,300.000000)
(9,300.000000)
(10,300.000000)
(11,300.000000)
(12,300.000000)
(13,300.000000)
(14,300.000000)
(15,300.000000)
(16,300.000000)
(17,300.000000)
(18,300.000000)
(19,300.000000)
(20,300.000000)
(21,300.000000)
(22,300.000000)
(23,300.000000)
};
\addplot coordinates {
(1,244.197531)
(2,246.407407)
(3,245.567901)
(4,244.543210)
(5,243.530864)
(6,245.061728)
(7,245.901235)
(8,247.481481)
(9,245.901235)
(10,243.197531)
(11,246.530864)
(12,243.913580)
(13,246.259259)
(14,243.469136)
(15,242.283951)
(16,244.851852)
(17,242.209877)
(18,258.012346)
(19,256.765432)
(20,256.592593)
(21,255.382716)
(22,258.666667)
(23,255.567901)
};
\addplot coordinates {
(1,98.388889)
(2,102.181481)
(3,101.376543)
(4,99.783951)
(5,93.748148)
(6,187.491358)
(7,176.212346)
(8,173.327160)
(9,178.597531)
(10,173.375309)
(11,167.481481)
(12,175.728395)
(13,179.177778)
(14,180.565432)
(15,183.571605)
(16,181.665432)
(17,189.946914)
(18,331.055556)
(19,333.632099)
(20,315.514815)
(21,313.348148)
(22,314.414815)
(23,337.682716)
};
\addplot coordinates {
(1,262.716049)
(2,250.864198)
(3,253.271605)
(4,264.481481)
(5,262.876543)
(6,406.592593)
(7,417.086420)
(8,414.913580)
(9,417.024691)
(10,416.345679)
(11,417.320988)
(12,432.172840)
(13,427.814815)
(14,429.234568)
(15,424.814815)
(16,426.283951)
(17,425.444444)
(18,506.333333)
(19,503.679012)
(20,518.222222)
(21,522.506173)
(22,517.111111)
(23,504.703704)
};
\legend{server cost, send, propagation, receive}
\end{axis}
\end{tikzpicture}
\end{figure}