commit 66bc238d84598cacaec371a8aea4833d5d0c467c
parent 8670c09717bb2fd3dfd6a2e0f0c60b6545533e13
Author: Ivan Gankevich <igankevich@ya.ru>
Date: Wed, 1 Nov 2017 15:37:48 +0300
Edit p1.
Diffstat:
2 files changed, 45 insertions(+), 25 deletions(-)
diff --git a/arma-thesis-ru.org b/arma-thesis-ru.org
@@ -1902,13 +1902,13 @@ MPP части, от которых зависит данная, должны б
#+name: tab-gpulab
#+caption: Конфигурация системы "Gpulab".
#+attr_latex: :booktabs t
-| Процессор | AMD FX-8370 |
-| Память | 16ГБ |
-| Видеокарта | GeForce GTX 1060 |
-| Память видеокарты | 6ГБ |
-| Жесткий диск | WDC WD40EZRZ-00WN9B0, 5400об/мин |
-| Количество процессорных ядер | 4 |
-| Количество потоков на ядро | 2 |
+| Процессор | AMD FX-8370 |
+| Память процессора | 16ГБ |
+| Видеокарта | GeForce GTX 1060 |
+| Память видеокарты | 6ГБ |
+| Жесткий диск | WDC WD40EZRZ-00WN9B0, 5400об./мин. |
+| Количество процессорных ядер | 4 |
+| Количество потоков на ядро | 2 |
Программа АРСС использует несколько библиотек математических функций, численных
алгоритмов и примитивов визуализации (перечисленных в таб.\nbsp{}[[tab-arma-libs]]),
@@ -2194,15 +2194,32 @@ arma.plot_io_events(names)
:header-args:R: :results output raw :exports results
:END:
+Эксперименты показали, что реализация OpenCL превосходит OpenMP по
+производительности в 10--15 раз (рис.\nbsp{}[[fig-arma-realtime-graph]]), однако,
+распределение времени работы между подпрограммами отличается
+(таб.\nbsp{}[[tab-arma-realtime]]). В случае процессора больше всего времени
+тратится на вычисление \(g_1\), а в случае видеокарты время вычисления \(g_1\)
+сопоставимо с \(g_2\). Копирование результирующего поля потенциала скорости
+между процессором и видеокартой занимает \(\approx{}20\%\) общего времени
+вычисления этого поля. Вычисление \(g_2\) занимает больше всего времени в случае
+OpenCL и меньше всего времени в случае OpenMP. В обоих реализациях \(g_2\)
+вычислятется на центральном процессоре, поскольку готовая подпрограмма
+вычисления производной на OpenCL не была найдена. В случае OpenCL результат
+вычислений дублируется для каждой точки сетки по оси \(z\), для того чтобы
+переменожить все точки одного временного среза в одной подпрограмме OpenCL, а,
+затем, копируется в память видеокарты, что негативно сказывается на
+производительности. Все тесты запускались на машине с видеокартой,
+характеристики которой просуммированы в таб.\nbsp{}[[tab-storm]].
+
#+name: tab-storm
#+caption: Конфигурация вычислительной системы "Storm".
#+attr_latex: :booktabs t
-| CPU | Intel Core 2 Quad Q9550 |
-| RAM | 8Gb |
-| GPU | AMD Radeon R7 360 |
-| GPU memory | 2GB |
-| HDD | Seagate Barracuda, 7200 rpm |
-| No. of CPU cores | 4 |
+| Процессор | Intel Core 2 Quad Q9550 |
+| Память процессора | 8ГБ |
+| Видеокарта | AMD Radeon R7 360 |
+| Память видеокарты | 2ГБ |
+| Жесткий диск | Seagate Barracuda, 7200 об./мин. |
+| Количество процессорных ядер | 4 |
#+name: fig-arma-realtime-graph
#+header: :results output graphics
@@ -2219,6 +2236,8 @@ title(xlab="Размер взволнованной поверхности по
#+RESULTS: fig-arma-realtime-graph
[[file:build/realtime-performance-ru.pdf]]
+
+
#+name: tab-arma-realtime
#+begin_src R
source(file.path("R", "benchmarks.R"))
diff --git a/arma-thesis.org b/arma-thesis.org
@@ -2147,18 +2147,19 @@ found.
:END:
The experiments showed that OpenCL outperforms OpenMP implementation by a factor
-of 10--15 (fig.\nbsp{}[[fig-arma-realtime-graph]]), however, distribution of time
-between computation stages is different for each implementation
-(table\nbsp{}[[tab-arma-realtime]]). The major time consumer on CPU is \(g_1\),
-whereas in GPU its running time is comparable to \(g_2\). Copying the resulting
-velocity potential field between CPU and GPU consumes \(\approx{}20\%\) of
-solver execution time. \(g_2\) consumes the most of the execution time for
-OpenCL solver, and \(g_1\) for OpenMP solver. In both implementations \(g_2\) is
-computed on CPU, but for GPU implementation the result is duplicated for each
-\(z\) grid point in order to perform multiplication of all \(XYZ\) planes along
-\(z\) dimension in single OpenCL kernel, and, subsequently copied to GPU memory
-which severely hinders the overall performance. All benchmarks were run on a
-machine equipped with a GPU, characteristics of which are summarised in
+of 10--15 (fig.\nbsp{}[[fig-arma-realtime-graph]]), however, distribution of running
+time between subroutines is different (table\nbsp{}[[tab-arma-realtime]]). For CPU
+the most of the time is spent to compute \(g_1\), whereas for GPU time spent to
+compute \(g_1\) is comparable to \(g_2\). Copying the resulting velocity
+potential field between CPU and GPU consumes \(\approx{}20\%\) of the total
+field computation time. Computing \(g_2\) consumes the most of the execution
+time for OpenCL and the least of the time for OpenMP. In both implementations
+\(g_2\) is computed on CPU, because subroutine for derivative computation in
+OpenCL was not found. For OpenCL the result is duplicated for each \(z\) grid
+point in order to perform multiplication of all \(XYZ\) planes along \(z\)
+dimension in single OpenCL kernel, and, subsequently copied to GPU memory which
+has negative impact on performance. All benchmarks were run on a machine
+equipped with a GPU, characteristics of which are summarised in
table\nbsp{}[[tab-storm]].
#+name: tab-storm