Skip to content

Commit ab30cd3

Browse files
committed
Changes to benchmark analysis for ASPLOS 2019 submission.
1 parent 36b283f commit ab30cd3

File tree

2 files changed

+61
-36
lines changed

2 files changed

+61
-36
lines changed

OrcTests/src/orc/test/analysis/porce/implTypeVsBenchmarkAnalysisAndPlotting.R

Lines changed: 44 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ source(file.path(scriptDir, "porce", "utils.R"))
2222

2323
#dataDir <- file.path(experimentDataDir, "PorcE", "impltype-comparison", "20180415-a001")
2424
#dataDir <- file.path(localExperimentDataDir, "20180730-a010")
25-
dataDir <- file.path(localExperimentDataDir, "20180802-a001")
25+
dataDir <- file.path(localExperimentDataDir, "20180805-a002")
2626
scalaDataDir <- file.path(localExperimentDataDir, "20180718-a002")
2727

2828
loadData <- function(dataDir) {
@@ -165,61 +165,77 @@ print(kable(t, "latex"))
165165
filledInData <- processedData %>%
166166
full_join(processedData %>%
167167
filter(optLevel == 3, implType == "Orc") %>%
168-
transmute(benchmarkProblemName, benchmarkName, optLevel = 0, elapsedTime_mean = 8 * 60),
169-
by = c("benchmarkProblemName", "benchmarkName", "optLevel")) %>%
168+
transmute(benchmarkProblemName, benchmarkName, nCPUs, optLevel = 0, elapsedTime_mean = 10 * 60),
169+
by = c("benchmarkProblemName", "benchmarkName", "optLevel", "nCPUs")) %>%
170170
mutate(elapsedTime_mean = if_else(is.na(elapsedTime_mean.x), elapsedTime_mean.y, elapsedTime_mean.x), elapsedTime_mean.x = NULL, elapsedTime_mean.y = NULL)
171171

172172
times2 <-
173-
full_join(filledInData,
174-
processedData %>%
175-
filter(implType == "Orc", optLevel == 3, optimized == T) %>%
176-
transmute(benchmarkProblemName, orc3Time = elapsedTime_mean)) %>%
173+
processedData %>%
174+
filter(implType == "Orc", optLevel == 3) %>%
175+
transmute(benchmarkProblemName, nCPUs, microbenchmark, orc3Time = elapsedTime_mean) %>%
176+
full_join(processedData %>%
177+
filter(implType == "Orc", optLevel == 0) %>%
178+
transmute(benchmarkProblemName, nCPUs, orc0Time = elapsedTime_mean),
179+
by = c("benchmarkProblemName", "nCPUs")) %>%
177180
full_join(processedData %>%
178181
filter(implType == "Scala") %>%
179-
transmute(benchmarkProblemName, scalaTime = elapsedTime_mean)) %>%
182+
transmute(benchmarkProblemName, nCPUs, scalaTime = elapsedTime_mean),
183+
by = c("benchmarkProblemName", "nCPUs")) %>%
180184
full_join(processedData %>%
181185
filter(implType == "Orc+Scala", optimized == T) %>%
182-
transmute(benchmarkProblemName, orcScalaTime = elapsedTime_mean))
186+
transmute(benchmarkProblemName, nCPUs, orcScalaTime = elapsedTime_mean),
187+
by = c("benchmarkProblemName", "nCPUs")) %>%
188+
dropBounds()
183189
#filter(implType == "Orc") %>%
184190
#mutate(normalizedTime = elapsedTime_mean / orc3Time)
185191

186192
# print(geomean((times2 %>% mutate(normalizedTime = elapsedTime_mean / orc3Time) %>% filter(optLevel == 3))$normalizedTime))
187193

188-
normalizedToScalaTimeAtMost <- times2 %>% mutate(normalizedTime = elapsedTime_mean / if_else(is.na(scalaTime), 8 * 60, scalaTime))
194+
times2 <- times2 %>% mutate(orcScalaTime = if_else(is.na(orcScalaTime), orc3Time, orcScalaTime))
195+
196+
normalizedToScalaTimeAtMost <- times2 %>% mutate_at(vars(ends_with("Time")), funs(. / if_else(is.na(scalaTime), 10 * 60, scalaTime)))
189197

190-
print(
191-
geomean((normalizedToScalaTimeAtMost %>% filter(implType == "Orc", optLevel == 3, microbenchmark == F))$normalizedTime)
198+
print_expr <- function(expr) {
199+
s <- deparse(substitute(expr))
200+
cat(paste(s, "=", expr, "\n"))
201+
}
202+
203+
print_expr(
204+
geomean((normalizedToScalaTimeAtMost %>% filter(microbenchmark == F, nCPUs == 24))$orc3Time)
192205
)
193-
print(
194-
geomean((normalizedToScalaTimeAtMost %>% filter(implType == "Orc", optLevel == 3, microbenchmark == T))$normalizedTime)
206+
print_expr(
207+
geomean((normalizedToScalaTimeAtMost %>% filter(microbenchmark == T, nCPUs == 24))$orc3Time)
195208
)
196-
print(
197-
geomean((normalizedToScalaTimeAtMost %>% filter(implType == "Orc+Scala", optLevel == 3, microbenchmark == F))$normalizedTime)
209+
print_expr(
210+
geomean((normalizedToScalaTimeAtMost %>% filter(microbenchmark == F, nCPUs == 24))$orcScalaTime)
198211
)
199212

200-
normalizedToOrcScalaTimeAtMost <- times2 %>% mutate(normalizedTime = elapsedTime_mean / orcScalaTime)
213+
normalizedToOrcScalaTimeAtMost <- times2 %>% mutate_at(vars(ends_with("Time")), funs(. / if_else(is.na(orcScalaTime), 10 * 60, orcScalaTime)))
201214

202-
print(
203-
geomean((normalizedToOrcScalaTimeAtMost %>% filter(implType == "Orc", optLevel == 3, optimized == T, microbenchmark == F))$normalizedTime)
215+
print_expr(
216+
geomean((normalizedToOrcScalaTimeAtMost %>% filter(microbenchmark == F, nCPUs == 24))$orc3Time)
204217
)
205-
print(
206-
geomean((normalizedToOrcScalaTimeAtMost %>% filter(implType == "Orc", optLevel == 0, optimized == T, microbenchmark == F))$normalizedTime)
218+
print_expr(
219+
geomean((normalizedToOrcScalaTimeAtMost %>% filter(microbenchmark == F, nCPUs == 24))$orc0Time)
207220
)
208-
print(
209-
geomean((normalizedToOrcScalaTimeAtMost %>% filter(implType == "Scala", microbenchmark == F))$normalizedTime)
221+
print_expr(
222+
geomean((normalizedToOrcScalaTimeAtMost %>% filter(microbenchmark == F, nCPUs == 24))$scalaTime)
210223
)
211224

212-
normalizedToOrc3Time <- times2 %>% mutate(normalizedTime = elapsedTime_mean / orc3Time)
225+
normalizedToOrc3TimeAtMost <- times2 %>% mutate_at(vars(ends_with("Time")), funs(. / if_else(is.na(orc3Time), 10 * 60, orc3Time)))
213226

214-
print(
215-
geomean((normalizedToOrc3Time %>% filter(implType == "Orc", optLevel == 3, optimized == T, microbenchmark == F))$normalizedTime)
227+
print_expr(
228+
geomean((normalizedToOrc3TimeAtMost %>% filter(microbenchmark == F, nCPUs == 24))$orc0Time)
229+
)
230+
print_expr(
231+
geomean((normalizedToOrc3TimeAtMost %>% filter(microbenchmark == F, nCPUs == 24))$scalaTime)
216232
)
217233

218234

219-
# print(
235+
# print_expr(
220236
# geomean((times2 %>% mutate(normalizedTime = elapsedTime_mean / scalaTime) %>% filter(implType == "Orc", optLevel == 3, normalizedTime > 1))$normalizedTime)
221237
# )
222-
# print(
238+
# print_expr(
223239
# geomean((times2 %>% mutate(normalizedTime = elapsedTime_mean / scalaTime) %>% filter(implType == "Orc+Scala", optLevel == 3, normalizedTime > 1))$normalizedTime)
224240
# )
225241

OrcTests/src/orc/test/analysis/porce/scalingAnalysisAndPlotting.R

Lines changed: 17 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
library(knitr)
1111
library(tidyr)
1212
library(stringr)
13+
library(svglite)
1314

1415
scriptDir <- normalizePath(".") # dirname(dirname(sys.frame(1)$ofile))
1516
experimentDataDir <- file.path(dirname(dirname(dirname(dirname(dirname(scriptDir))))), "experiment-data")
@@ -23,7 +24,7 @@ source(file.path(scriptDir, "porce", "utils.R"))
2324

2425
# dataDir <- file.path(experimentDataDir, "PorcE", "strong-scaling", "20180203-a009")
2526
#dataDir <- file.path(localExperimentDataDir, "20180730-a010")
26-
dataDir <- file.path(localExperimentDataDir, "20180802-a001")
27+
dataDir <- file.path(localExperimentDataDir, "20180805-a002")
2728
scalaDataDir <- file.path(localExperimentDataDir, "20180718-a002")
2829

2930
if(!exists("processedData")) {
@@ -60,7 +61,7 @@ processedData <- processedData %>%
6061
addBenchmarkMetadata() %>%
6162
group_by(benchmarkProblemName) %>%
6263
addBaseline(elapsedTime_mean, c(language="Scala", nCPUs=1, isBaseline = T), baseline = elapsedTime_mean_problembaseline) %>%
63-
mutate(elapsedTime_mean_problembaseline = replace_na(elapsedTime_mean_problembaseline, 60*6)) %>%
64+
mutate(elapsedTime_mean_problembaseline = replace_na(elapsedTime_mean_problembaseline, 60*10)) %>%
6465
group_by(benchmarkName) %>%
6566
addBaseline(elapsedTime_mean, c(nCPUs=24), baseline = elapsedTime_mean_selfbaseline) %>%
6667
ungroup()
@@ -312,6 +313,7 @@ overallScalingPlot <- processedData %>%
312313
y = elapsedTime_mean_problembaseline / elapsedTime_mean,
313314
#ymin = elapsedTime_mean_problembaseline / elapsedTime_mean_lowerBound,
314315
#ymax = elapsedTime_mean_problembaseline / elapsedTime_mean_upperBound,
316+
shape = implType,
315317
color = implType,
316318
group = benchmarkName
317319
#linetype = factor(if_else((language == "Orc") & scalaCompute, "Orc+Scala", as.character(language)), levels = c("Orc+Scala", "Orc", "Scala"))
@@ -320,16 +322,21 @@ overallScalingPlot <- processedData %>%
320322
theme_minimal() +
321323
#scale_fill_brewer(palette="Set3") +
322324
#scale_color_brewer(palette="PuBuGn", direction = -1) +
323-
scale_color_manual(values = c("#555555", "#E69F00", "#56B4E9")) + # "#67a9cf", "#1c9099", "#016c59"
324-
# geom_point(data = processedData %>% filter(benchmarkProblemName != "Swaptions"), alpha = 0.5, shape = 4) +
325+
scale_color_manual(name = "Language",
326+
labels = c("Orc", "Orc+Scala", "Scala"),
327+
values = c("#555555", "#E69F00", "#56B4E9")) + # "#67a9cf", "#1c9099", "#016c59"
328+
scale_shape_manual(name = "Language",
329+
labels = c("Orc", "Orc+Scala", "Scala"),
330+
values = c(0, 1, 2)) +
331+
# geom_point(data = processedData %>% filter(benchmarkProblemName != "Swaptions"), alpha = 0.5, shape = 4) +
325332
# geom_point(aes(shape = granularity), processedData, alpha = 0.7) +
333+
#geom_line(aes(y = gcTime_mean), linetype = "dotted") +
326334
geom_line() +
327-
#geom_point() +
335+
geom_point() +
328336
geom_hline(yintercept = 1, alpha = 0.4, color = "blue") +
329337
scale_y_continuous(limits = c(0, NA)) +
330338
scale_x_continuous(breaks = c(1, 12, 24), minor_breaks = c(6, 18)) +
331339
# scale_x_continuous_breaks_from(breaks_from = processedData$nCPUs) +
332-
# scale_shape_discrete(solid = F) +
333340
facet_wrap(~benchmarkProblemName, scales = "free_y", nrow = 1) +
334341
theme(
335342
#legend.justification = c("right", "top"),
@@ -341,14 +348,16 @@ overallScalingPlot <- processedData %>%
341348
legend.spacing = grid::unit(45, "points"),
342349
text = element_text(size=9),
343350
legend.text = element_text(size=8),
344-
strip.text = element_text(size=9)
351+
strip.text = element_text(size=9, angle = 10)
345352
)
346353

347354
print(overallScalingPlot + theme(legend.position = "bottom"))
348355

349356
#print(overallScalingPlot + scale_y_log10() + theme(legend.position = "bottom"))
350357

351-
ggsave(file.path(outputDir, "allScalingPlot.pdf"), overallScalingPlot + theme(legend.position = "bottom"), width = 9, height = 2, units = "in")
358+
ggsave(file.path(outputDir, "allScalingPlot.svg"), device = "svg", overallScalingPlot + theme(legend.position = "bottom"), width = 10, height = 1.9, units = "in")
359+
360+
#ggsave(file.path(outputDir, "allScalingPlot.pdf"), overallScalingPlot + theme(legend.position = "bottom"), width = 12, height = 2.1, units = "in")
352361

353362
# svg( file.path(outputDir, "allScalingPlot-legend.svg"), width = 7.5, height = 2 )
354363
# print(overallScalingPlot + theme(legend.position = "bottom"))

0 commit comments

Comments
 (0)