arma-thesis

git clone https://git.igankevich.com/arma-thesis.git
Log | Files | Refs | LICENSE

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:
R/common.R | 16++++++++++++++++
data/performance/factory-vs-openmp.csv | 11+++++++++++
phd-diss-ru.org | 20+++++++++++++++++++-
phd-diss.org | 15+++++++++++++++
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