arma-thesis

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

commit b4350a568951955f33f7fd9b3be36622cc6c27e4
parent ba51e702b05ca28befad11c6ba1ff959554738fc
Author: Ivan Gankevich <igankevich@ya.ru>
Date:   Wed,  1 Nov 2017 19:27:45 +0300

Remove old sections.

Diffstat:
arma-thesis-ru.org | 122-------------------------------------------------------------------------------
1 file changed, 0 insertions(+), 122 deletions(-)

diff --git a/arma-thesis-ru.org b/arma-thesis-ru.org @@ -2312,128 +2312,6 @@ OpenGL увеличивает производительность путем и или не содержала бы интегралы в виде преобразований Фурье, на вычисление поля потенциала скорости затрачивалось бы гораздо больше времени. -**** Алгоритм распределения нагрузки. :noexport: -Наиболее простым и широко применяемым подходом к распределению нагрузки на -вычислительную систему является разбиение данных на равные части (или разбиение -задачи на однородные подзадачи) с последующим их равномерным распределением -между отдельными ядрами процессора и узлами кластера, однако такой подход не -всегда работает эффективно. Во-первых, часто общее количество частей, на которые -разбиваются входные данные, диктуется не архитектурой и конфигурацией -вычислительной системы, а самой задачей, и такое распределение не всегда -эффективно с точки зрения вычислительной машины: количество частей оказывается -либо слишком большим по сравнению с количеством процессоров, работающих -параллельно, что ведет к увеличению накладных расходов на обмен данными, либо -слишком маленьким, что не позволяет использовать все доступные вычислительные -ядра. Во-вторых, накладываемые решаемой задачей ограничения могут не позволить -разделить входные данные на равные части, что может стать причиной дисбаланса в -загрузке ядер процессора. В-третьих, в вычислительной системе в вычислениях -участвуют помимо процессора сразу несколько компонент (таких как векторные -сопроцессоры и устройства хранения), то время решения конкретной задачи зависит -от производительности всех задействованных устройств. Каким же образом сделать -алгоритм распределения нагрузки более эффективным, принимая во внимание разный -размер частей, на которые разделяются входные данные, и учитывая все устройства, -задействованные в вычислениях? - -Алгоритм распределения нагрузки состоит из двух этапов. На первом этапе алгоритм -размещает часть входных данных (или подзадачу), обернутую в управляющий объект, -в соответствующем пуле управляющих объектов: для каждого устройства используется -отдельный пул управляющих объектов и сопряженный с ним пул потоков. На втором -этапе, управляющий объект извлекается из пула одним из потоков и обрабатывается. -Благодаря отдельным пулам потоков все устройства работают параллельно, уменьшая -тем самым время простоя оборудования по сравнению с использованием всех -устройств из одного потока. - -Для того чтобы учесть неоднородность частей, на которые разбиваются входные -данные, и неоднородность выполняемых задач, необходимо предсказать время -выполнения каждой из задач. Соответствующее исследование сделано в\nbsp{}cite:degtyarev2016balance, поскольку реализация модели АРСС включает в себя, в -основном, однородные задачи. - -Таким образом, распределение нагрузки осуществляется в два этапа: на первом -этапе задача в форме урпавляющего объекта направляется на подходящее устройство, -а на втором этапе она направляется в один из потоков из соответсвующего -устройству пула. Неоднородность управляющих объектов может быть учтена путем -предсказания времени их выполнения, однако такие объекты не встречаются в -реализации модели АРСС. - -**** Производительность реализаций на MPI, OpenMP и OpenCL. :noexport: -:PROPERTIES: -:header-args:R: :results output org -:END: -Программная реализация состояла в создании и отладке прототипа программы и в -последующем написании компоненты виртуального полигона на языке более низкого -уровня. При этом тесты показали, что одной высокопроизводительной -многопроцессорной машины достаточно для создания типовых реализаций морского -волнения. Также использование видеокарт в качестве векторных ускорителей -эффективно только в случае расчета давлений, в то время как генерация волновой -поверхности выполняется быстрее на скалярном процессоре. - -Создание программной реализации происходило в два этапа: на первом этапе был -создан и отлажен прототип в программной среде -Mathematica\nbsp{}cite:mathematica10, а на втором этапе логика программы была -переписана на более низкоуровневом языке C++, и для получения эффективно -работающего параллельного кода были проведены эксперименты с рядом библиотек. С -помощью этих библиотек были реализованы функции генерации взволнованной морской -поверхности, а также процедура расчета гидродинамических давлений под -сгенерированной поверхностью. Тестирование производилось на вычислительных -машинах кластера РЦ ВЦ СПбГУ (см.\nbsp{}табл.\nbsp{}[[tab-autoreg-testbed]]) и -позволило получить два основных результата. Во-первых, использование видеокарт -неэффективно при генерации волновой поверхности -(см.\nbsp{}табл.\nbsp{}[[tab-autoreg-performance]]), что обусловлено сравнительно -небольшим количеством арифметических операций по отношению к количеству операций -с памятью устройства, а также отсутствием трансцендентных функций в реализации -алгоритма. Во-вторых, для генерации одной реализации взволнованной морского -поверхности одной многопроцессорной машины достаточно для эффективного и -быстрого решения задачи (см.\nbsp{}рис.\nbsp{}[[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\nbsp{}cite:fabri2009cgal и для статистической -проверки интегральных характеристик реализации взволнованной поверхности -использовалась библиотека GSL\nbsp{}cite:gsl2008scientific. В случае GotoBLAS -эффективность библиотеки показана в работах\nbsp{}cite:goto2008high,goto2008anatomy, -для других библиотек эффективность не является важной, и они были выбраны, -исходя из удобства их использования. - - **** Производительность алгоритма распределения нагрузки. :noexport: Программная реализация генерации взволнованной поверхности сбалансирована с точки зрения нагрузки на процессорные ядра, однако, как показывают тесты,