arma-thesis

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

commit 9ac0a1e788174a88f2476493ad635b4efc4ce2ee
parent bcf4af82c8043085fb84bfa3f61000f12ea9a075
Author: Ivan Gankevich <igankevich@ya.ru>
Date:   Wed, 15 Nov 2017 14:11:52 +0300

Manually align tables. Use localised decimal mark.

Diffstat:
.Rprofile | 1+
R/benchmarks.R | 12++++++++----
R/common.R | 11+++++++++++
arma-thesis-ru.org | 36+++++++++++++++++++++---------------
arma-thesis.org | 5++++-
5 files changed, 45 insertions(+), 20 deletions(-)

diff --git a/.Rprofile b/.Rprofile @@ -3,3 +3,4 @@ require("grDevices") pdf <- cairo_pdf library(ascii) options(asciiType="org") +options(arma.mark=".") diff --git a/R/benchmarks.R b/R/benchmarks.R @@ -1,5 +1,6 @@ source(file.path("build", "arma-benchmarks", "R", "arma.load.R")) source(file.path("build", "arma-benchmarks", "R", "arma.load_events.R")) +source(file.path("R", "common.R")) arma.load_benchmark_data <- function(attempt, framework, models, tags) { data <- data.frame() @@ -54,7 +55,8 @@ arma.print_openmp_vs_opencl <- function(model_names, row_names) { colnames(big_table) <- sapply(colnames(big_table), function (c) get(c, model_names)) # rownames(big_table) <- sapply(rownames(big_table), function (c) paste("~", c, "~", sep="")) print(ascii(c("", "", "", "OpenMP", "", "OpenCL"))) - print(ascii(big_table, include.rownames=FALSE)) + print(ascii(c("", "<r>", "<r>", "<r>", "<r>", "<r>"))) + arma.print_ascii(ascii(big_table, include.rownames=FALSE)) } arma.load_io_benchmark_data <- function(attempt, filesystems, suffix, tags) { @@ -80,7 +82,7 @@ arma.load_io_benchmark_data <- function(attempt, filesystems, suffix, tags) { data } -arma.print_sync_vs_async_io <- function(suffix_names, row_names, top_names, mark=".") { +arma.print_sync_vs_async_io <- function(suffix_names, row_names, top_names) { options(asciiType="org") tags <- list("generate_surface", "write_all") filesystems <- c("xfs", "nfs", "gfs") @@ -99,7 +101,8 @@ arma.print_sync_vs_async_io <- function(suffix_names, row_names, top_names, mark big_table[,"Row.names"] <- sapply(big_table[,"Row.names"], function (c) get(c, row_names)) colnames(big_table) <- sapply(colnames(big_table), function (c) get(c, suffix_names)) print(ascii(c("", "", "", top_names[[1]], "", "", top_names[[2]]))) - print(ascii(big_table, include.rownames=FALSE, decimal.mark=mark)) + print(ascii(c("", "<r>", "<r>", "<r>", "<r>", "<r>", "<r>"))) + arma.print_ascii(ascii(big_table, include.rownames=FALSE)) } arma.plot_io_events <- function (names) { @@ -265,7 +268,8 @@ arma.print_table_for_realtime_data <- function (data, routine_names, column_name all_data[all_data$routine=="harts_copy_to_host", "openmp"] <- NA all_data$routine <- sapply(all_data$routine, function (c) get(c, routine_names)) all_data <- setNames(all_data, column_names) - ascii(all_data, include.rownames=FALSE, digits=4) + print(ascii(c("", "<r>", "<r>"))) + arma.print_ascii(ascii(all_data, include.rownames=FALSE, digits=4)) } arma.load_bscheduler_data <- function (all_test_cases) { diff --git a/R/common.R b/R/common.R @@ -270,3 +270,14 @@ arma.plot_factory_vs_openmp_overlap <- function(...) { text(factory_pts$t, factory_y, labels=factory_pts$mark, pos=c(3, 1, 3, 1)) title(xlab=args$xlab) } + +# a workaround for a bug in ascii package +# which does not honour "decimal.mark" argument +arma.print_ascii <- function (obj) { + decimal.mark <- options("arma.mark") + if (is.null(decimal.mark)) { + decimal.mark <- "." + } + replacement <- paste('\\1', decimal.mark, '\\2', sep='') + cat(gsub('([0-9]+)\\.([0-9]+)', replacement, capture.output(obj$show.org())), sep="\n") +} diff --git a/arma-thesis-ru.org b/arma-thesis-ru.org @@ -1004,9 +1004,9 @@ arma.plot_nonlinear(file.path("build", "nit-standing"), args) #+caption: распределений волновых аппликат. \(N\)\nbsp{}--- количество #+caption: коэффициентов аппроксимации АКФ. #+attr_latex: :booktabs t +| | | <r> | <r> | <r> | <r> | | <r> | | Тип волн | Распред. | \(\gamma_1\) | \(\gamma_2\) | \(\alpha\) | Ошибка | \(N\) | Высота волн | |---------------+----------+--------------+--------------+------------+--------+-------+-------------| -| | | <r> | <r> | <r> | <r> | | <r> | | прогрессивные | Гауссово | | | | | | 2,41 | | прогрессивные | РГШ | 2,25 | 0,4 | | 0,20 | 2 | 2,75 | | прогрессивные | АНР | | | 1 | 0,70 | 3 | 1,37 | @@ -2035,6 +2035,7 @@ OpenMP, реализация на OpenCL была сделана только д #+name: tab-arma-performance #+begin_src R :results output org :exports results source(file.path("R", "benchmarks.R")) +options(arma.mark=",") model_names <- list( ar.x="АР", ma.x="СС", @@ -2062,15 +2063,16 @@ arma.print_openmp_vs_opencl(model_names, row_names) #+attr_latex: :booktabs t #+RESULTS: tab-arma-performance | | | | OpenMP | | OpenCL | +| | <r> | <r> | <r> | <r> | <r> | | \orgcmidrule{2-4}{5-6}Подпрограмма | АР | СС | ЛХ | АР | ЛХ | |------------------------------------+------+------+--------+--------+--------| -| Определение коэффициентов | 0.02 | 0.01 | 0.19 | 0.01 | 1.19 | -| Проверка модели | 0.08 | 0.10 | | 0.08 | | -| Генерация поверхности | 1.26 | 5.57 | 350.98 | 769.38 | 0.02 | -| НБП | 7.11 | 7.43 | | 0.02 | | -| Копирование данных с GPU | | | | 5.22 | 25.06 | -| Выч. потенциалов скорости | 0.05 | 0.05 | 0.06 | 0.03 | 0.03 | -| Запись вывода в файл | 0.27 | 0.27 | 0.27 | 0.28 | 0.27 | +| Определение коэффициентов | 0,02 | 0,01 | 0,19 | 0,01 | 1,19 | +| Проверка модели | 0,08 | 0,10 | | 0,08 | | +| Генерация поверхности | 1,26 | 5,57 | 350,98 | 769,38 | 0,02 | +| НБП | 7,11 | 7,43 | | 0,02 | | +| Копирование данных с GPU | | | | 5,22 | 25,06 | +| Выч. потенциалов скорости | 0,05 | 0,05 | 0,06 | 0,03 | 0,03 | +| Запись вывода в файл | 0,27 | 0,27 | 0,27 | 0,28 | 0,27 | В отличие от модели АР, модель ЛХ показывает наибольшую производительность на видеокарте и наименьшую производительность на центральном процессоре. Причиной @@ -2131,6 +2133,7 @@ arma.print_openmp_vs_opencl(model_names, row_names) #+name: tab-arma-io-performance #+begin_src R source(file.path("R", "benchmarks.R")) +options(arma.mark=",") suffix_names <- list( xfs.x="XFS", xfs.y="XFS", @@ -2145,7 +2148,7 @@ row_names <- list( generate_surface="Генерация поверхности", write_all="Запись вывода в файл" ) -arma.print_sync_vs_async_io(suffix_names, row_names, top_names, mark=",") +arma.print_sync_vs_async_io(suffix_names, row_names, top_names) #+end_src #+name: tab-arma-io-performance @@ -2156,10 +2159,11 @@ arma.print_sync_vs_async_io(suffix_names, row_names, top_names, mark=",") #+attr_latex: :booktabs t #+RESULTS: tab-arma-io-performance | | | | I | | | II | +| | <r> | <r> | <r> | <r> | <r> | <r> | | \orgcmidrule{2-4}{5-7}Подпрограмма | XFS | NFS | GlusterFS | XFS | NFS | GlusterFS | |------------------------------------+------+------+-----------+------+------+-----------| -| Генерация поверхности | 1.26 | 1.26 | 1.33 | 1.33 | 3.30 | 11.06 | -| Запись вывода в файл | 0.28 | 2.34 | 10.95 | 0.00 | 0.00 | 0.00 | +| Генерация поверхности | 1,26 | 1,26 | 1,33 | 1,33 | 3,30 | 11,06 | +| Запись вывода в файл | 0,28 | 2,34 | 10,95 | 0,00 | 0,00 | 0,00 | #+name: fig-arma-io-events #+header: :width 6 :height 7 :results output graphics @@ -2310,6 +2314,7 @@ OpenMP та же, что и в случае разной производите #+name: tab-arma-realtime #+begin_src R source(file.path("R", "benchmarks.R")) +options(arma.mark=",") routine_names <- list( harts_g1="Функция \\(g_1\\)", harts_g2="Функция \\(g_2\\)", @@ -2328,12 +2333,13 @@ arma.print_table_for_realtime_data(data, routine_names, column_names) #+caption: \(OX\) равен 16384). #+attr_latex: :booktabs t #+RESULTS: tab-arma-realtime +| | <r> | <r> | | Подпрограмма | OpenMP | OpenCL | |--------------------------------+--------+--------| -| Функция \(g_1\) | 4.6730 | 0.0038 | -| Функция \(g_2\) | 0.0002 | 0.8253 | -| БПФ | 2.8560 | 0.3585 | -| Копирование данных с видекарты | | 2.6357 | +| Функция \(g_1\) | 4,6730 | 0,0038 | +| Функция \(g_2\) | 0,0002 | 0,8253 | +| БПФ | 2,8560 | 0,3585 | +| Копирование данных с видекарты | | 2,6357 | Как и ожидалось, совместное использование одного буфера контекстами OpenCL и OpenGL увеличивает производительность путем исключения копирования данных между diff --git a/arma-thesis.org b/arma-thesis.org @@ -2009,6 +2009,7 @@ arma.print_openmp_vs_opencl(model_names, row_names) #+attr_latex: :booktabs t #+RESULTS: tab-arma-performance | | | | OpenMP | | OpenCL | +| | <r> | <r> | <r> | <r> | <r> | | \orgcmidrule{2-4}{5-6}Subroutine | AR | MA | LH | AR | LH | |----------------------------------+------+------+--------+--------+--------| | Determine coefficients | 0.02 | 0.01 | 0.19 | 0.01 | 1.19 | @@ -2086,7 +2087,7 @@ row_names <- list( generate_surface="Generate wavy surface", write_all="Write output to files" ) -arma.print_sync_vs_async_io(suffix_names, row_names, top_names, mark=".") +arma.print_sync_vs_async_io(suffix_names, row_names, top_names) #+end_src #+name: tab-arma-io-performance @@ -2096,6 +2097,7 @@ arma.print_sync_vs_async_io(suffix_names, row_names, top_names, mark=".") #+attr_latex: :booktabs t #+RESULTS: tab-arma-io-performance | | | | I | | | II | +| | <r> | <r> | <r> | <r> | <r> | <r> | | \orgcmidrule{2-4}{5-7}Subroutine | XFS | NFS | GlusterFS | XFS | NFS | GlusterFS | |----------------------------------+------+------+-----------+------+------+-----------| | Generate wavy surface | 1.26 | 1.26 | 1.33 | 1.33 | 3.30 | 11.06 | @@ -2260,6 +2262,7 @@ arma.print_table_for_realtime_data(data, routine_names, column_names) #+caption: for wavy surface (OX size equals 16384). #+attr_latex: :booktabs t #+RESULTS: tab-arma-realtime +| | <r> | <r> | | Subroutine | OpenMP | OpenCL | |--------------------+--------+--------| | \(g_1\) function | 4.6730 | 0.0038 |