Skip to content

Commit cc2945c

Browse files
committed
added grids in figures
1 parent 3048d77 commit cc2945c

File tree

1 file changed

+121
-4
lines changed

1 file changed

+121
-4
lines changed

src/supercomputers/polaris/index.md

Lines changed: 121 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -95,7 +95,7 @@ Plot.plot({
9595
Plot.barY(latencyBarData, {x: "category", y: "latency", fill: "category"})
9696
],
9797
x: {label: null, tickFormat: () => ""},
98-
y: {label: "Latency (μs)"},
98+
y: {label: "Latency (μs)", grid: true},
9999
color: {legend: true},
100100
width: 600,
101101
height: 400,
@@ -130,7 +130,7 @@ Plot.plot({
130130
Plot.rectY(filteredLatencyData, {x: "date", y: d => d.med * 1e6, fill: "coral", interval: "day"})
131131
],
132132
x: {type: "utc", label: "Date", domain: [thirtyDaysAgo, latestLatencyDate]},
133-
y: {label: "Latency (μs)"},
133+
y: {label: "Latency (μs)", grid: true},
134134
width: 800,
135135
height: 400,
136136
marginLeft: 60,
@@ -153,7 +153,124 @@ benchmark, which runs on two processes located on distinct nodes, and transfers
153153

154154
### Latest Bandwidth Results
155155

156-
TODO
156+
```js
157+
// Get unique dates from bandwidth data and sort chronologically
158+
const bandwidthDates = [...new Set(bandwidthData.map(d => String(d.date)))]
159+
.sort((a, b) => new Date(a) - new Date(b));
160+
const latestBandwidthDateInput = Inputs.select(bandwidthDates, {
161+
label: "Date",
162+
value: bandwidthDates[bandwidthDates.length - 1]
163+
});
164+
const selectedBandwidthDate = Generators.input(latestBandwidthDateInput);
165+
```
166+
167+
```js
168+
// Filter data for selected date
169+
const bandwidthForDate = bandwidthData.filter(d => String(d.date) === selectedBandwidthDate);
170+
171+
// Create function to generate data for specific op and busy_spin
172+
function getBandwidthData(op, busySpin) {
173+
const concurrencies = [1, 8];
174+
const xferSizes = {1048576: "1MiB", 8388608: "8MiB", 1000000: "1MB"};
175+
const data = [];
176+
177+
for (const conc of concurrencies) {
178+
for (const [xferSize, xferLabel] of Object.entries(xferSizes)) {
179+
const entry = bandwidthForDate.find(d =>
180+
d.op === op &&
181+
d.concurrency === conc &&
182+
d.xfer_size === Number(xferSize) &&
183+
d.busy_spin === busySpin
184+
);
185+
data.push({
186+
category: `C${conc}-${xferLabel}`,
187+
throughput: entry ? entry["MiB/s"] / 1024 : 0
188+
});
189+
}
190+
}
191+
return data;
192+
}
193+
194+
const bandwidthPullFalse = getBandwidthData("PULL", false);
195+
const bandwidthPullTrue = getBandwidthData("PULL", true);
196+
const bandwidthPushFalse = getBandwidthData("PUSH", false);
197+
const bandwidthPushTrue = getBandwidthData("PUSH", true);
198+
```
199+
200+
The following graphs show the bandwidth for different levels of transfer concurrency
201+
(1 or 8 threads) and different transfer sizes (1 MB, 1 MiB, or 8 MiB). Legends
202+
indicate the concurrency and transfer sizes (e.g. 1C-1MB represents 1 thread and 1 MB transfers).
203+
204+
```js
205+
html`<div style="margin-bottom: 1rem;">
206+
${latestBandwidthDateInput}
207+
</div>`
208+
```
209+
210+
```js
211+
html`<div style="display: grid; grid-template-columns: 1fr 1fr; gap: 1rem;">
212+
<div>
213+
<h4 style="text-align: center; margin-bottom: 0.5rem;">PULL, Busy Spin: false</h4>
214+
${Plot.plot({
215+
marks: [
216+
Plot.barY(bandwidthPullFalse, {x: "category", y: "throughput", fill: "category"})
217+
],
218+
x: {label: null},
219+
y: {label: "Throughput (GiB/s)", grid: true},
220+
color: {legend: true},
221+
width: 380,
222+
height: 300,
223+
marginLeft: 60,
224+
marginBottom: 60
225+
})}
226+
</div>
227+
<div>
228+
<h4 style="text-align: center; margin-bottom: 0.5rem;">PULL, Busy Spin: true</h4>
229+
${Plot.plot({
230+
marks: [
231+
Plot.barY(bandwidthPullTrue, {x: "category", y: "throughput", fill: "category"})
232+
],
233+
x: {label: null},
234+
y: {label: "Throughput (GiB/s)", grid: true},
235+
color: {legend: true},
236+
width: 380,
237+
height: 300,
238+
marginLeft: 60,
239+
marginBottom: 60
240+
})}
241+
</div>
242+
<div>
243+
<h4 style="text-align: center; margin-bottom: 0.5rem;">PUSH, Busy Spin: false</h4>
244+
${Plot.plot({
245+
marks: [
246+
Plot.barY(bandwidthPushFalse, {x: "category", y: "throughput", fill: "category"})
247+
],
248+
x: {label: null},
249+
y: {label: "Throughput (GiB/s)", grid: true},
250+
color: {legend: true},
251+
width: 380,
252+
height: 300,
253+
marginLeft: 60,
254+
marginBottom: 60
255+
})}
256+
</div>
257+
<div>
258+
<h4 style="text-align: center; margin-bottom: 0.5rem;">PUSH, Busy Spin: true</h4>
259+
${Plot.plot({
260+
marks: [
261+
Plot.barY(bandwidthPushTrue, {x: "category", y: "throughput", fill: "category"})
262+
],
263+
x: {label: null},
264+
y: {label: "Throughput (GiB/s)", grid: true},
265+
color: {legend: true},
266+
width: 380,
267+
height: 300,
268+
marginLeft: 60,
269+
marginBottom: 60
270+
})}
271+
</div>
272+
</div>`
273+
```
157274

158275
### Bandwidth Over Time
159276

@@ -193,7 +310,7 @@ Plot.plot({
193310
Plot.rectY(filteredBandwidthData, {x: "date", y: d => d["MiB/s"] / 1024, fill: "green", interval: "day"})
194311
],
195312
x: {type: "utc", label: "Date", domain: [thirtyDaysAgoBandwidth, latestBandwidthDate]},
196-
y: {label: "Throughput (GiB/s)"},
313+
y: {label: "Throughput (GiB/s)", grid: true},
197314
width: 800,
198315
height: 400,
199316
marginLeft: 60,

0 commit comments

Comments
 (0)