commit d49441d8a9cdadddd0483ae68a1e1faa69ba5514
parent 98736ce56f970375386ae402929845c5ef80404a
Author: Ivan Gankevich <igankevich@ya.ru>
Date: Fri, 20 Jan 2017 13:22:47 +0300
Copy the rest of the SMP section.
Diffstat:
phd-diss-ru.org | | | 118 | +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-------------- |
phd-diss.org | | | 43 | +++++++++++++++++++++++-------------------- |
2 files changed, 120 insertions(+), 41 deletions(-)
diff --git a/phd-diss-ru.org b/phd-diss-ru.org
@@ -2007,7 +2007,80 @@ cite:zotkin1999job.
производительность устройств.
*** Результаты тестирования
-**** Производительности реализаций на MPI, OpenMP и OpenCL.
+**** Производительность реализаций на MPI, OpenMP и OpenCL.
+Программная реализация состояла в создании и отладке прототипа программы и в
+последующем написании компоненты виртуального полигона на языке более низкого
+уровня. При этом тесты показали, что одной высокопроизводительной
+многопроцессорной машины достаточно для создания типовых реализаций морского
+волнения. Также использование видеокарт в качестве векторных ускорителей
+эффективно только в случае расчета давлений, в то время как генерация волновой
+поверхности выполняется быстрее на скалярном процессоре cite:degtyarev2011effi.
+
+Создание программной реализации происходило в два этапа: на первом этапе был
+создан и отлажен прототип в программной среде Mathematica cite:mathematica10, а
+на втором этапе логика программы была переписана на более низкоуровневом языке
+C++, и для получения эффективно работающего параллельного кода были проведены
+эксперименты с рядом библиотек. С помощью этих библиотек были реализованы
+функции генерации взволнованной морской поверхности, а также процедура расчета
+гидродинамических давлений под сгенерированной поверхностью. Тестирование
+производилось на вычислительных машинах кластера РЦ ВЦ СПбГУ (см.
+[[tab:autoreg-testbed]]) и позволило получить два основных результата. Во-первых,
+использование видеокарт неэффективно при генерации волновой поверхности (см.
+[[tab:autoreg-performance]]), что обусловлено сравнительно небольшим количеством
+арифметических операций по отношению к количеству операций с памятью устройства,
+а также отсутствием трансцендентных функций в реализации алгоритма
+cite:degtyarev2011effi. Во-вторых, для генерации одной реализации взволнованной
+морского поверхности одной многопроцессорной машины достаточно для эффективного
+и быстрого решения задачи (см. [[fig:autoreg-performance]]). По результатам
+тестирования стандарт OpenMP был выбран в качестве основного, как наиболее
+эффективный и наиболее подходящий для расчетов на многопроцессорной системе.
+
+#+name: fig:autoreg-performance
+#+caption: Скорость генерации взволнованной поверхности на многопроцессорной системе для типовых размеров реализации (сверху). Масштабируемость (относительное ускорение при увеличении количества процессоров) программной реализации на многопроцессорной системе для типовых размеров реализации (снизу). Временная протяженность 512 с.
+#+begin_figure
+[[file:graphics/speed.eps]]
+[[file:graphics/speedup.eps]]
+#+end_figure
+
+#+name: tab:autoreg-testbed
+#+caption: Конфигурация оборудования.
+#+attr_latex: :booktabs t
+| Вычислительная машина | HP SL390s G7 |
+|-----------------------+--------------------------------------|
+| Процессор | 2$\times$Intel X5650 (всего 12 ядер) |
+| Оперативная память | 96ГБ RAM |
+| Операционная система | CentOS 5.6 (Linux) |
+
+#+name: tab:autoreg-performance
+#+caption: Время (с.) генерации взволнованной морской поверхности различными программными реализациями авторегрессионной модели.
+#+attr_latex: :booktabs t :align cllllll
+| | ЛХ | ЛХ | ЛХ | АР | АР | АР |
+| Размер | OpenCL | OpenMP | MPI | OpenCL | OpenMP | MPI |
+|--------+--------+--------+-------+--------+--------+-------|
+| 400000 | 0.82 | 40.44 | 32.60 | 1.80 | 0.800 | 0.750 |
+| 440000 | 0.90 | 44.59 | 35.78 | 1.92 | 0.100 | 0.930 |
+| 480000 | 0.99 | 48.49 | 38.93 | 2.29 | 0.970 | 0.126 |
+| 520000 | 1.07 | 52.65 | 41.92 | 2.43 | 0.118 | 0.117 |
+| 560000 | 1.15 | 56.45 | 45.00 | 2.51 | 0.117 | 0.161 |
+| 600000 | 1.23 | 60.85 | 48.80 | 2.54 | 0.123 | 0.132 |
+| 640000 | 1.31 | 65.07 | 53.02 | 2.73 | 0.123 | 0.160 |
+| 680000 | 1.40 | 68.90 | 54.92 | 2.80 | 0.138 | 0.136 |
+| 720000 | 1.48 | 72.49 | 58.42 | 2.88 | 0.144 | 0.173 |
+| 760000 | 1.56 | 76.86 | 61.41 | 3.47 | 0.156 | 0.155 |
+| 800000 | 1.64 | 81.03 | 66.42 | 3.25 | 0.166 | 0.174 |
+
+Кроме выбора стандарта параллельных вычислений на время работы программы влияет
+выбор библиотек типовых вычислительных методов, и эффективность этих библиотек
+была показана тестированием их разработчиками. В качестве библиотеки для
+матричных операций (расчета коэффициентов авторегрессионной модели) была выбрана
+GotoBLAS и основанная на ней LAPACK, для непрерывной аппроксимации поля волновых
+чисел использовалась библиотека CGAL cite:fabri2009cgal и для статистической
+проверки интегральных характеристик реализации взволнованной поверхности
+использовалась библиотека GSL cite:gsl2008scientific. В случае GotoBLAS
+эффективность библиотеки показана в работах cite:goto2008high,goto2008anatomy,
+для других библиотек эффективность не является важной, и они были выбраны,
+исходя из удобства их использования.
+
**** Производительность алгоритма распределения нагрузки.
Программа, реализующая генерацию взволнованнной поверхности сбалансированна с
точки зрения нагрузки на процессорные ядра, однако, как показали тесты,
@@ -2170,26 +2243,29 @@ arma.plot_factory_vs_openmp_overlap(
* Список сокращений и условных обозначений
#+attr_latex: :booktabs t :align lp{0.8\linewidth}
-| <<<MPP>>> | Massively Parallel Processing, класс вычислительных систем с разделенной памятью |
-| <<<SMP>>> | Symmetric Multi-Processing, класс вычислительных систем с общей памятью |
-| <<<АКФ>>> | автоковариационная функция |
-| <<<БПФ>>> | быстрое преобразование Фурье |
-| <<<ГПСЧ>>> | генератор псевдослучайных чисел |
-| <<<ГУ>>> | граничное условие |
-| <<<ДУЧП>>> | дифференциальное уравнение в частных производных |
-| <<<НБП>>> | нелинейное безынерционное преобразование |
-| <<<АР>>> | процесс авторегрессии |
-| <<<АРСС>>> | процесс авторегрессии скользящего среднего |
-| <<<СС>>> | процесс скользящего среднего |
-| <<<ЛХ>>> | модель Лонге---Хиггинса |
-| <<<LAMP>>> | Large Amplitude Motion Programme, программа для моделирования качки судна на морских волнах |
-| <<<ЦПТ>>> | центральная предельная теорема |
-| <<<ПМ>>> | аппроксимация Пирсона---Московица для спектра морского волнения |
-| <<<ЮУ>>> | система уравнений Юла---Уокера |
-| <<<МНК>>> | метод наименьших квадратов |
-| <<<ФПР>>> | функция плотности распределения |
-| <<<ФР>>> | функция распределения |
-| <<<BSP>>> | Bulk Synchronous Parallel |
+| <<<MPP>>> | Massively Parallel Processing, класс вычислительных систем с разделенной памятью |
+| <<<SMP>>> | Symmetric Multi-Processing, класс вычислительных систем с общей памятью |
+| <<<АКФ>>> | автоковариационная функция |
+| <<<БПФ>>> | быстрое преобразование Фурье |
+| <<<ГПСЧ>>> | генератор псевдослучайных чисел |
+| <<<ГУ>>> | граничное условие |
+| <<<ДУЧП>>> | дифференциальное уравнение в частных производных |
+| <<<НБП>>> | нелинейное безынерционное преобразование |
+| <<<АР>>> | процесс авторегрессии |
+| <<<АРСС>>> | процесс авторегрессии скользящего среднего |
+| <<<СС>>> | процесс скользящего среднего |
+| <<<ЛХ>>> | модель Лонге---Хиггинса |
+| <<<LAMP>>> | Large Amplitude Motion Programme, программа для моделирования качки судна на морских волнах |
+| <<<ЦПТ>>> | центральная предельная теорема |
+| <<<ПМ>>> | аппроксимация Пирсона---Московица для спектра морского волнения |
+| <<<ЮУ>>> | система уравнений Юла---Уокера |
+| <<<МНК>>> | метод наименьших квадратов |
+| <<<ФПР>>> | функция плотности распределения |
+| <<<ФР>>> | функция распределения |
+| <<<BSP>>> | Bulk Synchronous Parallel |
+| <<<OpenCL>>> | Open Computing Language |
+| <<<OpenMP>>> | Open Multi-Processing |
+| <<<MPI>>> | Message Passing Interface |
#+begin_export latex
diff --git a/phd-diss.org b/phd-diss.org
@@ -1916,26 +1916,29 @@ arma.plot_factory_vs_openmp_overlap(
* List of acronyms and symbols
#+attr_latex: :booktabs t :align lp{0.8\linewidth}
-| <<<MPP>>> | Massively Parallel Processing, computers with distributed memory |
-| <<<SMP>>> | Symmetric Multi-Processing, computers with shared memory |
-| <<<ACF>>> | auto-covariate function |
-| <<<FFT>>> | fast Fourier transform |
-| <<<PRNG>>> | pseudo-random number generator |
-| <<<BC>>> | boundary condition |
-| <<<PDE>>> | partial differential equation |
-| <<<NIT>>> | non-linear inertia-less transform |
-| <<<AR>>> | auto-regressive process |
-| <<<ARMA>>> | auto-regressive moving-average process |
-| <<<MA>>> | moving average process |
-| <<<LH>>> | Longuet---Higgins model |
-| <<<LAMP>>> | Large Amplitude Motion Programme, a programme that simulates ship behaviour in ocean waves |
-| <<<CLT>>> | central limit theorem |
-| <<<PM>>> | Pierson---Moskowitz ocean wave spectrum approximation |
-| <<<YW>>> | Yule---Walker equations |
-| <<<LS>>> | least squares |
-| <<<PDF>>> | probability density function |
-| <<<CDF>>> | cumulative distribution function |
-| <<<BSP>>> | Bulk Synchronous Parallel |
+| <<<MPP>>> | Massively Parallel Processing, computers with distributed memory |
+| <<<SMP>>> | Symmetric Multi-Processing, computers with shared memory |
+| <<<ACF>>> | auto-covariate function |
+| <<<FFT>>> | fast Fourier transform |
+| <<<PRNG>>> | pseudo-random number generator |
+| <<<BC>>> | boundary condition |
+| <<<PDE>>> | partial differential equation |
+| <<<NIT>>> | non-linear inertia-less transform |
+| <<<AR>>> | auto-regressive process |
+| <<<ARMA>>> | auto-regressive moving-average process |
+| <<<MA>>> | moving average process |
+| <<<LH>>> | Longuet---Higgins model |
+| <<<LAMP>>> | Large Amplitude Motion Programme, a programme that simulates ship behaviour in ocean waves |
+| <<<CLT>>> | central limit theorem |
+| <<<PM>>> | Pierson---Moskowitz ocean wave spectrum approximation |
+| <<<YW>>> | Yule---Walker equations |
+| <<<LS>>> | least squares |
+| <<<PDF>>> | probability density function |
+| <<<CDF>>> | cumulative distribution function |
+| <<<BSP>>> | Bulk Synchronous Parallel |
+| <<<OpenCL>>> | Open Computing Language |
+| <<<OpenMP>>> | Open Multi-Processing |
+| <<<MPI>>> | Message Passing Interface |
#+begin_export latex
\input{postamble}