arma-thesis

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

commit 98512605f8d30ca54a9a5fd2ccf0df30867ef0ea
parent ba4f0f8b14352847b7541258949d3f78d622f959
Author: Ivan Gankevich <igankevich@ya.ru>
Date:   Mon, 13 Nov 2017 15:46:23 +0300

Add subsections to SMP implementation.

Diffstat:
arma-thesis-ru.org | 106++++++++++++++++++++++++++++++++++++++++---------------------------------------
arma-thesis.org | 98++++++++++++++++++++++++++++++++++++++++---------------------------------------
2 files changed, 104 insertions(+), 100 deletions(-)

diff --git a/arma-thesis-ru.org b/arma-thesis-ru.org @@ -1737,6 +1737,7 @@ arma.plot_velocity( * Высокопроизводительный программный комплекс для моделирования морского волнения ** Реализация для систем с общей памятью (SMP) +*** Генерация взволнованной поверхности **** Параллельные алгоритмы для моделей АР, СС и ЛХ. :PROPERTIES: :CUSTOM_ID: sec-parallel @@ -1855,6 +1856,57 @@ arma.plot_ar_cubes_2d(3, 3, xlabel="Индекс части (X)", ylabel="Инд больше вычислительных ресурсов (операций с плавающей точкой в секунду) для трансцендентных функций в формуле. +**** Параллельный алгоритм генерации белого шума +Чтобы исключить периодичность из генерируемой моделью морского волнения +реализации взволнованной поверхности, для генерации белого шума необходимо +использовать ГПСЧ с достаточно большим периодом. В качестве такого генератора в +работе используется параллельная реализация вихря +Мерсенна\nbsp{}cite:matsumoto1998mersenne с периодом \(2^{19937}-1\). Это +позволяет создавать апериодические реализации взволнованной морской поверхности +для любых сценариев применения, встречаемых на практике. + +Запуск нескольких ГПСЧ с разными начальными состояниями в параллельных потоках +не гарантирует некоррелированность генерируемых последовательностей +псевдослучайных чисел, и для предоставления такой гарантии используется алгоритм +динамического создания вихрей Мерсенна\nbsp{}cite:matsumoto1998dynamic. Суть +алгоритма заключается в поиске таких матриц начальных состояний генераторов, +которые бы дали максимально некоррелированные последовательности псевдослучайных +чисел при параллельном запуске нескольких вихрей Мерсенна с этими начальными +состояниями. Поскольку на поиск начальных состояний тратится значительное +количество процессорного времени, то вектор состояний создается предварительно +для заведомо большего количества параллельных потоков и сохраняется в файл, +который впоследствии считывается основной программой перед началом генерации +белого шума. + +**** Устранение интервала разгона. +В модели АР значение подъема взволнованной поверхности в каждой точке зависит от +предыдущих по пространству и времени значений, из-за чего в начале реализации +образуется так называемый /интервал разгона/ +(см.\nbsp{}рис.\nbsp{}[[fig-ramp-up-interval]])\nbsp{}--- промежуток, на котором +реализация не соответствует заданной АКФ. Способ решения этой проблемы зависит +от контекста, в котором производится имитационное моделирование. Если реализация +используется в контексте расчета остойчивости судна без учета маневрирования, то +интервал никак не повлияет результаты эксперимента, поскольку находится на +границе (далеко от исследуемого морского объекта). Альтернативным подходом +является генерация взволнованной поверхности на интервале разгона моделью ЛХ и +генерация остальной реализации с помощью модели АР. Если изучается остойчивость +судна в условиях маневрирования, то интервал проще всего исключить из реализации +(размер интервала примерно равен числу коэффициентов АР по каждому из +измерений). Однако, это приводит к потере большого числа точек, поскольку +исключение происходит по каждому из трех измерений. + +#+name: fig-ramp-up-interval +#+begin_src R :file build/ramp-up-interval-ru.pdf +source(file.path("R", "common.R")) +arma.plot_ramp_up_interval(label="Интервал разгона") +#+end_src + +#+caption[Интервал разгона в начале реализации процесса АР]: +#+caption: Интервал разгона в начале реализации процесса АР. +#+name: fig-ramp-up-interval +#+RESULTS: fig-ramp-up-interval +[[file:build/ramp-up-interval-ru.pdf]] + **** Производительность реализаций на OpenMP и OpenCL. :PROPERTIES: :header-args:R: :results output raw :exports results @@ -2121,6 +2173,7 @@ arma.plot_io_events(names) #+RESULTS: fig-arma-io-events [[file:build/arma-io-events-ru.pdf]] +*** Вычисление поля потенциала скорости **** Параллельное вычисление поля потенциала скорости. Тесты для моделей АР, СС, и ЛХ показали, что вычисление поля потенциала скорости занимает лишь малую долю суммарного времени работы программы, однако, абсолютное @@ -2284,58 +2337,7 @@ OpenGL увеличивает производительность путем и артефактов изображения на экране, которые можно убрать, только перезагрузив компьютер. -**** Параллельный алгоритм генерации белого шума -Чтобы исключить периодичность из генерируемой моделью морского волнения -реализации взволнованной поверхности, для генерации белого шума необходимо -использовать ГПСЧ с достаточно большим периодом. В качестве такого генератора в -работе используется параллельная реализация вихря -Мерсенна\nbsp{}cite:matsumoto1998mersenne с периодом \(2^{19937}-1\). Это -позволяет создавать апериодические реализации взволнованной морской поверхности -для любых сценариев применения, встречаемых на практике. - -Запуск нескольких ГПСЧ с разными начальными состояниями в параллельных потоках -не гарантирует некоррелированность генерируемых последовательностей -псевдослучайных чисел, и для предоставления такой гарантии используется алгоритм -динамического создания вихрей Мерсенна\nbsp{}cite:matsumoto1998dynamic. Суть -алгоритма заключается в поиске таких матриц начальных состояний генераторов, -которые бы дали максимально некоррелированные последовательности псевдослучайных -чисел при параллельном запуске нескольких вихрей Мерсенна с этими начальными -состояниями. Поскольку на поиск начальных состояний тратится значительное -количество процессорного времени, то вектор состояний создается предварительно -для заведомо большего количества параллельных потоков и сохраняется в файл, -который впоследствии считывается основной программой перед началом генерации -белого шума. - -**** Устранение интервала разгона. -В модели АР значение подъема взволнованной поверхности в каждой точке зависит от -предыдущих по пространству и времени значений, из-за чего в начале реализации -образуется так называемый /интервал разгона/ -(см.\nbsp{}рис.\nbsp{}[[fig-ramp-up-interval]])\nbsp{}--- промежуток, на котором -реализация не соответствует заданной АКФ. Способ решения этой проблемы зависит -от контекста, в котором производится имитационное моделирование. Если реализация -используется в контексте расчета остойчивости судна без учета маневрирования, то -интервал никак не повлияет результаты эксперимента, поскольку находится на -границе (далеко от исследуемого морского объекта). Альтернативным подходом -является генерация взволнованной поверхности на интервале разгона моделью ЛХ и -генерация остальной реализации с помощью модели АР. Если изучается остойчивость -судна в условиях маневрирования, то интервал проще всего исключить из реализации -(размер интервала примерно равен числу коэффициентов АР по каждому из -измерений). Однако, это приводит к потере большого числа точек, поскольку -исключение происходит по каждому из трех измерений. - -#+name: fig-ramp-up-interval -#+begin_src R :file build/ramp-up-interval-ru.pdf -source(file.path("R", "common.R")) -arma.plot_ramp_up_interval(label="Интервал разгона") -#+end_src - -#+caption[Интервал разгона в начале реализации процесса АР]: -#+caption: Интервал разгона в начале реализации процесса АР. -#+name: fig-ramp-up-interval -#+RESULTS: fig-ramp-up-interval -[[file:build/ramp-up-interval-ru.pdf]] - -**** Заключение. +*** Выводы Тесты показали, что видеокарта превосходит центральный процессор по производительности в задачах с большим количеством арифметических операций, требующих большое количество операций с плавающей точкой в секунду, однако, diff --git a/arma-thesis.org b/arma-thesis.org @@ -1697,6 +1697,7 @@ arma.plot_velocity( * High-performance software implementation of sea wave simulation ** SMP implementation +*** Wavy surface generation **** Parallel AR, MA and LH model algorithms. :PROPERTIES: :CUSTOM_ID: sec-parallel @@ -1783,7 +1784,7 @@ Padding with noughts is needed to prevent aliasing errors: without it the result would be circular convolution. Despite the fact that MA model algorithm partitions the surface into the same -parts (but possibly of different sizes) as AR model algorithm, the vicinity of +parts (but possibly of different sizes) as AR model algorithm, the absence of autoregressive dependencies between them allows to compute them in parallel without the use of specialised job scheduler. However, this algorithm requires padding parts with noughts to make the result of calculations correspond to the @@ -1810,6 +1811,52 @@ these models, LH model has no information dependencies between parts, but requires more computational resources (floating point operations per seconds) for transcendental functions in its formula. +**** Parallel white noise generation algorithm. +In order to eliminate periodicity from wavy surface generated by sea wave model, +it is imperative to use PRNG with sufficiently large period to generate white +noise. Parallel Mersenne Twister\nbsp{}cite:matsumoto1998mersenne with a period +of \(2^{19937}-1\) is used as a generator in this work. It allows to produce +aperiodic sea wavy surface realisations in any practical usage scenarios. + +There is no guarantee that multiple PRNGs executed in parallel threads with +distinct initial states produce uncorrelated pseudo-random number sequences, and +algorithm of dynamic creation of Mersenne +Twisters\nbsp{}cite:matsumoto1998dynamic is used to provide such guarantee. The +essence of the algorithm is to find matrices of initial generator states, that +give maximally uncorrelated pseudo-random number sequences when Mersenne +Twisters are executed in parallel with these initial states. Since finding such +initial states consumes considerable amount of processor time, vector of initial +states is created beforehand with knowingly larger number of parallel threads +and saved to a file, which is then read before starting white noise generation. + +**** Ramp-up interval elimination. +In AR model value of wavy surface elevation at a particular point depends on +previous in space and time points, as a result the so called /ramp-up interval/ +(see fig.\nbsp{}[[fig-ramp-up-interval]]), in which realisation does not correspond +to specified ACF, forms in the beginning of the realisation. There are several +solutions to this problem which depend on the simulation context. If realisation +is used in the context of ship stability simulation without manoeuvring, ramp-up +interval will not affect results of the simulation, because it is located on the +border (too far away from the studied marine object). Alternative approach is to +generate sea wavy surface on ramp-up interval with LH model and generate the +rest of the realisation with AR model. If ship stability with manoeuvring is +studied, then the interval may be simply discarded from the realisation (the +size of the interval approximately equals the number of AR coefficients in each +dimension). However, this may lead to loss of a very large number of points, +because discarding occurs for each of three dimensions. + +#+name: fig-ramp-up-interval +#+begin_src R :file build/ramp-up-interval.pdf +source(file.path("R", "common.R")) +arma.plot_ramp_up_interval() +#+end_src + +#+caption[Ramp-up interval at the beginning of AR process realisation]: +#+caption: Ramp-up interval at the beginning of AR process realisation. +#+name: fig-ramp-up-interval +#+RESULTS: fig-ramp-up-interval +[[file:build/ramp-up-interval.pdf]] + **** Performance of OpenMP and OpenCL implementations. :PROPERTIES: :header-args:R: :results output raw :exports results @@ -2063,6 +2110,7 @@ arma.plot_io_events(names) #+RESULTS: fig-arma-io-events [[file:build/arma-io-events.pdf]] +*** Velocity potential field computation **** Parallel velocity potential field computation. The benchmarks for AR, MA and LH models showed that velocity potential field computation consume only a fraction of total programme execution time, however, @@ -2219,53 +2267,7 @@ disadvantage of using OpenCL and OpenGL together is the requirement for manual locking of shared buffer: failure to do so results in appearance of screen image artefacts which can be removed only by rebooting the computer. -**** Parallel white noise generation algorithm. -In order to eliminate periodicity from wavy surface generated by sea wave model, -it is imperative to use PRNG with sufficiently large period to generate white -noise. Parallel Mersenne Twister\nbsp{}cite:matsumoto1998mersenne with a period -of \(2^{19937}-1\) is used as a generator in this work. It allows to produce -aperiodic sea wavy surface realisations in any practical usage scenarios. - -There is no guarantee that multiple PRNGs executed in parallel threads with -distinct initial states produce uncorrelated pseudo-random number sequences, and -algorithm of dynamic creation of Mersenne -Twisters\nbsp{}cite:matsumoto1998dynamic is used to provide such guarantee. The -essence of the algorithm is to find matrices of initial generator states, that -give maximally uncorrelated pseudo-random number sequences when Mersenne -Twisters are executed in parallel with these initial states. Since finding such -initial states consumes considerable amount of processor time, vector of initial -states is created beforehand with knowingly larger number of parallel threads -and saved to a file, which is then read before starting white noise generation. - -**** Ramp-up interval elimination. -In AR model value of wavy surface elevation at a particular point depends on -previous in space and time points, as a result the so called /ramp-up interval/ -(see fig.\nbsp{}[[fig-ramp-up-interval]]), in which realisation does not correspond -to specified ACF, forms in the beginning of the realisation. There are several -solutions to this problem which depend on the simulation context. If realisation -is used in the context of ship stability simulation without manoeuvring, ramp-up -interval will not affect results of the simulation, because it is located on the -border (too far away from the studied marine object). Alternative approach is to -generate sea wavy surface on ramp-up interval with LH model and generate the -rest of the realisation with AR model. If ship stability with manoeuvring is -studied, then the interval may be simply discarded from the realisation (the -size of the interval approximately equals the number of AR coefficients in each -dimension). However, this may lead to loss of a very large number of points, -because discarding occurs for each of three dimensions. - -#+name: fig-ramp-up-interval -#+begin_src R :file build/ramp-up-interval.pdf -source(file.path("R", "common.R")) -arma.plot_ramp_up_interval() -#+end_src - -#+caption[Ramp-up interval at the beginning of AR process realisation]: -#+caption: Ramp-up interval at the beginning of AR process realisation. -#+name: fig-ramp-up-interval -#+RESULTS: fig-ramp-up-interval -[[file:build/ramp-up-interval.pdf]] - -**** Conclusions. +*** Summary Benchmarks showed that GPU outperforms CPU in arithmetic intensive tasks, i.e.\nbsp{}tasks requiring high number of floating point operations per second, however, its performance degrades when the volume of data that needs to be