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:
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 |