commit 3cab78887b36ec8436bb72b99019cfff817df14f
parent f951693c77c446c05d84950fb8c2353eba376a3f
Author: Ivan Gankevich <igankevich@ya.ru>
Date: Wed, 18 Jan 2017 17:12:01 +0300
Plot performance comparison in R.
Diffstat:
4 files changed, 61 insertions(+), 1 deletion(-)
diff --git a/R/common.R b/R/common.R
@@ -121,3 +121,19 @@ arma.plot_ramp_up_interval <- function(label="Ramp-up interval") {
to <- trans3d(0, my/2, max(zeta$z)*0.05, pmat=res)
arrows(from$x, from$y, to$x, to$y, lwd=2, angle=10, length=0.1, col="red")
}
+
+arma.plot_factory_vs_openmp <- function(...) {
+ args <- list(...)
+ perf <- read.csv(file.path("data", "performance", "factory-vs-openmp.csv"))
+ scale <- 10 ** args$power
+ x <- perf$nt * perf$nx * perf$ny / scale
+ plot.new()
+ plot.window(xlim=range(x),ylim=range(perf[c("openmp", "factory")]))
+ pts <- pretty(x)
+ axis(1, at=pts, labels=sapply(pts, function(x) {as.expression(bquote(.(x) %.% 10 ** .(args$power)))}))
+ axis(2)
+ box()
+ lines(x, perf$openmp, lty="solid")
+ lines(x, perf$factory, lty="dashed")
+ title(xlab=args$xlab, ylab=args$ylab)
+}
diff --git a/data/performance/factory-vs-openmp.csv b/data/performance/factory-vs-openmp.csv
@@ -0,0 +1,11 @@
+nt,nx,ny,openmp,factory
+2000,32,32,3.20,2.31
+4000,32,32,6.40,4.46
+6000,32,32,10.75,7.35
+8000,32,32,12.43,8.62
+10000,32,32,15.57,11.38
+12000,32,32,18.76,13.33
+14000,32,32,21.96,15.52
+16000,32,32,25.19,17.80
+18000,32,32,28.34,20.12
+20000,32,32,31.44,22.53
diff --git a/phd-diss-ru.org b/phd-diss-ru.org
@@ -2062,10 +2062,28 @@ cite:degtyarev2011effi, поэтому эксперимент заключалс
дисковую подсистему.
#+name: fig:factory-performance
-#+caption: Сравнение производительности реализаций программы на OpenMP и на разработанной технологии.
+#+begin_src R :results output graphics :exports results :file build/factory-vs-openmp-ru.pdf
+dev.off()
+cairo_pdf("build/factory-vs-openmp-ru.pdf")
+source(file.path("R", "common.R"))
+arma.plot_factory_vs_openmp(
+ xlab="Размер реализации",
+ ylab="Время, с.",
+ power=6
+)
+#+end_src
+
+#+caption: Сравнение производительности реализаций программы на OpenMP и Factory.
+#+RESULTS: fig:factory-performance
+[[file:build/factory-vs-openmp-ru.pdf]]
#+name: fig:factory-overlap
+#+begin_src R :results output graphics :exports results :file build/factory-overlap-ru.pdf
+#+end_src
+
#+caption: Наложение параллельных вычислений на $[G_0,G_1]$ и записи данных на диск на $[W_0,W_1]$. В реализации OpenMP наложение отсутствует.
+#+RESULTS: fig:factory-overlap
+[[file:build/factory-overlap-ru.pdf]]
Несмотря на то, что технология OpenMP содержит примитивы для создания
конвейеров, соединить конвейером две распараллеленные фазы программы можно
diff --git a/phd-diss.org b/phd-diss.org
@@ -1874,6 +1874,21 @@ digraph {
*** Evaluation
**** Performance of MPI, OpenMP, OpenCL implementations.
**** Performance of load balancing algorithm.
+
+#+name: fig:factory-performance
+#+begin_src R :results output graphics :exports results :file build/factory-vs-openmp.pdf
+source(file.path("R", "common.R"))
+arma.plot_factory_vs_openmp(
+ xlab="Realisation size",
+ ylab="Time, s",
+ power=6
+)
+#+end_src
+
+#+caption: Performance comparison of OpenMP and Factory implementations.
+#+RESULTS: fig:factory-performance
+[[file:build/factory-vs-openmp.pdf]]
+
** MPP implementation
*** Cluster node discovery algorithm
*** Fail over algorithm