arma-thesis

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

commit c462cfc958ce284cc36dff05e1f2e95b75a44be9
parent 2ed7351b41bb85471f9bf9a95ec48ba1240d8ffe
Author: Ivan Gankevich <igankevich@ya.ru>
Date:   Fri,  3 Nov 2017 14:28:06 +0300

Run through spell checker.

Diffstat:
arma-thesis-ru.org | 199++++++++++++++++++++++++++++++++++++++++---------------------------------------
1 file changed, 101 insertions(+), 98 deletions(-)

diff --git a/arma-thesis-ru.org b/arma-thesis-ru.org @@ -108,7 +108,7 @@ Отличительной особенностью данной работы является использование во всех экспериментах /трехмерных/ моделей АР и СС и разработка комплекса программ, -реализующего генерацию взволванной морской поверхности и вычисления поля +реализующего генерацию взволнованной морской поверхности и вычисления поля давлений на вычислительных системах с общей (SMP) и распределенной (MPP) памятью, а также гибридных (GPGPU) системах, использующих графические сопроцессоры для ускорения вычислений. @@ -212,7 +212,7 @@ Motion Programme (LAMP), программе для моделирования к точки зрения обратная задача гидродинамики сводится к решению уравнения Лапласа со смешанным ГУ\nbsp{}--- задаче Робена. -Обратная задача возможна, поскольку модель АРСС генерирует гиродинамически +Обратная задача возможна, поскольку модель АРСС генерирует гидродинамически адекватную взволнованную морскую поверхность: распределения интегральных характеристик и дисперсионное соотношение соответствуют реальным волнам\nbsp{}cite:boukhanovsky1997thesis,degtyarev2011modelling. @@ -698,21 +698,21 @@ Motion Programme (LAMP), программе для моделирования к частных производных преобразуется в неявную разностную схему, решаемую итерационным методом, на каждом шаге которого ищется решение трехдиагональной или пятидиагональной СЛАУ методом прогонки (алгоритм Томаса). Асимптотическая -сложность алгоритма составляет \(\mathcal{O}({n}{m})\), где \(n\)\nbsp{}--- количество -точек на сетке взволнованной поверхности, \(m\)\nbsp{}--- число итераций. Несмотря на -широкое распространение, итеративные алгоритмы неэффективно отображаются на -архитектуру параллельных машин; в частности, отображение на сопроцессоры может -включать в себя копирование данных на сопроцессор и обратно на каждой итерации, -что отрицательно сказывается на их производительности. В то же время, наличие -большого количества преобразований Фурье в решении является скорее -преимуществом, чем недостатком. Во-первых, решения, полученные с помощью метода -Фурье, явные, а значит хорошо масштабируются на большое количество параллельно -работающих вычислительных ядер с использованием простейших приемов параллельного -программирования. Во-вторых, для алгоритмов БПФ существуют готовые -оптимизированные реализация для различных архитектур процессоров и сопроцессоров -(GPU, MIC). Эти преимущества обусловили выбор метода Фурье в качестве рабочего -для получения явного аналитического решения задачи определения давлений под -взволнованной морской поверхностью. +сложность алгоритма составляет \(\mathcal{O}({n}{m})\), где \(n\)\nbsp{}--- +количество точек на сетке взволнованной поверхности, \(m\)\nbsp{}--- число +итераций. Несмотря на широкое распространение, итеративные алгоритмы +неэффективно отображаются на архитектуру параллельных машин; в частности, +отображение на сопроцессоры может включать в себя копирование данных на +сопроцессор и обратно на каждой итерации, что отрицательно сказывается на их +производительности. В то же время, наличие большого количества преобразований +Фурье в решении является скорее преимуществом, чем недостатком. Во-первых, +решения, полученные с помощью метода Фурье, явные, а значит хорошо +масштабируются на большое количество параллельно работающих вычислительных ядер +с использованием простейших приемов параллельного программирования. Во-вторых, +для алгоритмов БПФ существуют готовые оптимизированные реализация для различных +архитектур процессоров и сопроцессоров (GPU, MIC). Эти преимущества обусловили +выбор метода Фурье в качестве рабочего для получения явного аналитического +решения задачи определения давлений под взволнованной морской поверхностью. *** Двухмерное поле скоростей :PROPERTIES: @@ -870,9 +870,10 @@ eqref:eq-guessed-sol-2d, получаем окончательное выраж **** Сведение к формулам линейной теории волн. Справедливость полученных формул проверим, подставив в качестве \(\zeta(x,t)\) известные аналитические выражения для плоских волн. Символьные вычисления -преобразований Фурье в этом разделе производились с помощью пакета Mathematica\nbsp{}cite:mathematica10. В линейной теории широко используется предположение о -малости амплитуд волн, что позволяет упростить исходную систему уравнений -eqref:eq-problem-2d до +преобразований Фурье в этом разделе производились с помощью пакета +Mathematica\nbsp{}cite:mathematica10. В линейной теории широко используется +предположение о малости амплитуд волн, что позволяет упростить исходную систему +уравнений eqref:eq-problem-2d до \begin{align*} & \phi_{xx}+\phi_{zz}=0,\\ & \zeta_t = -\phi_z & \text{на }z=\zeta(x,t), @@ -931,9 +932,9 @@ eqref:eq-solution-2d-full до бесконечной глубины не подходит для вычисления потенциала скорости с использованием метода Фурье, т.к. не обладает необходимой для преобразования Фурье симметрией. Однако, для такого случая можно использовать формулу для -конечной глубины, полагая \(h\) равным характерному значению глубины исследуемого -водоема. Для стоячих волн сведение к формулам линейной теории происходит с -аналогичными предположениями. +конечной глубины, полагая \(h\) равным характерному значению глубины +исследуемого водоема. Для стоячих волн сведение к формулам линейной теории +происходит с аналогичными предположениями. *** Трехмерное поле скоростей В трех измерениях исходная система уравнений eqref:eq-problem переписывается как @@ -985,7 +986,7 @@ eqref:eq-solution-2d-full до где \(f_1(x,y)={\zeta_x}/{\SqrtZeta{1+\zeta_x^2+\zeta_y^2}}-\zeta_x\) и \(f_2(x,y)={\zeta_y}/{\SqrtZeta{1+\zeta_x^2+\zeta_y^2}}-\zeta_y\). -Также как и в раделе\nbsp{}[[#sec:pressure-2d]] мы предполагаем, что +Также как и в разделе\nbsp{}[[#sec:pressure-2d]] мы предполагаем, что \(\Sinh{2\pi{u}(z+h)}\approx\SinhX{2\pi{u}(z+h)}\) вблизи свободной поверхности, однако в трехмерном случае этого недостаточно для решения задачи. Для того чтобы получить аналитическую формулу для коэффициентов \(E\), мы должны предположить, @@ -1061,9 +1062,9 @@ eqref:eq-solution-2d-full до \end{equation*} \(H_m\)\nbsp{}--- полином Эрмита, а \(f(y)\)\nbsp{}--- решение уравнения eqref:eq-distribution-transformation. Воспользовавшись полиномиальной -аппроксимацией \(f(y) \approx \sum\limits_i d_i y^i\) и аналитическими выражениями -для полнимов Эрмита, формулу определения коэффициентов можно упростить, -используя следующее равенство: +аппроксимацией \(f(y) \approx \sum\limits_i d_i y^i\) и аналитическими +выражениями для полиномов Эрмита, формулу определения коэффициентов можно +упростить, используя следующее равенство: \begin{equation*} \frac{1}{\sqrt{2\pi}} \int\limits_\infty^\infty @@ -1347,21 +1348,22 @@ legend( Чтобы исключить периодичность из сгенерированной моделью ветрового волнения реализации взволнованной поверхности, для генерации белого шума нужно использовать ГПСЧ с достаточно большим периодом. В качестве такого генератора в -работе используется параллельная реализация вихря Мерсенна\nbsp{}cite:matsumoto1998mersenne с периодом \(2^{19937}-1\). Это позволяет создавать -апериодичные реализации взволнованной морской поверхности для любых сценариев -применения, встречаемых на практике. +работе используется параллельная реализация вихря +Мерсенна\nbsp{}cite:matsumoto1998mersenne с периодом \(2^{19937}-1\). Это +позволяет создавать апериодические реализации взволнованной морской поверхности +для любых сценариев применения, встречаемых на практике. Запуск нескольких ГПСЧ с разными начальными состояниями в параллельных потоках не гарантирует некоррелированность генерируемых последовательностей псевдослучайных чисел, однако, можно воспользоваться алгоритмом динамического -создания вихрей Мерсенна\nbsp{}cite:matsumoto1998dynamic, чтобы дать такую гарантию. -Суть алгоритма заключается в поиске таких матриц начальных состояний +создания вихрей Мерсенна\nbsp{}cite:matsumoto1998dynamic, чтобы дать такую +гарантию. Суть алгоритма заключается в поиске таких матриц начальных состояний генераторов, которые бы дали максимально некоррелированные последовательности псевдослучайных чисел при параллельном запуске нескольких вихрей Мерсенна с -этими начальными состоянями. Поскольку на поиск начальных состояний можно +этими начальными состояниями. Поскольку на поиск начальных состояний можно потратить значительное количество процессорного времени, то вектор состояний создается предварительно для заведомо большего количества параллельных потоков и -сохраняется в файл, который впоследствиии считывается основной программой перед +сохраняется в файл, который впоследствии считывается основной программой перед началом генерации белого шума. *** Алгоритм генерации взволнованной поверхности @@ -1389,7 +1391,7 @@ legend( сигналов\nbsp{}cite:oppenheim1989discrete,svoboda2011efficient,pavel2013algorithms. Суть метода заключается в добавлении интервала равного по размеру интервалу разгона в конец каждой из частей. Затем взволнованная поверхность генерируется в -каждой точки каждой из частей (включая добавленный интервал), интервал в конце +каждой точке каждой из частей (включая добавленный интервал), интервал в конце части \(N\) накладывается на интервал разгона в начале части \(N+1\), и значения в соответствующих точках складываются. @@ -1548,7 +1550,7 @@ for (i in seq(0, 4)) { ниже для высот и длин, примерно одинакова для подъема поверхности и выше для периодов волн. Более низкая степень соответствия длин и высот может быть результатом того, что распределения были получены эмпирически для морских волн, -которые, в основном, являются прогрессиными, и аналогичные распределения для +которые, в основном, являются прогрессивными, и аналогичные распределения для стоячих волн могут отличаться. Более высокая степень соответствия периодов волн является следствием того, что периоды стоячих волн извлекаются более точно, поскольку волн не перемещаются вне моделируемой области взволнованной @@ -1570,7 +1572,7 @@ eqref:eq-solution-2d-full с известными формулами линей **** Отличие от формул линейной теории волн. Для того чтобы получить поля потенциалов скоростей, взволнованная морская -поверхность генерировалась с помощью модели АР с варьированием амлитуды волн. В +поверхность генерировалась с помощью модели АР с варьированием амплитуды волн. В численной реализации волновые числа в преобразованиях Фурье выбирались на интервале от \(0\) до максимального волнового числа, определяемого численно из полученной взволнованной поверхности. Эксперименты проводились для волн малых и @@ -1586,7 +1588,7 @@ eqref:eq-solution-2d-linear линейной теории, качественн область, где сконцентрирована большая часть энергии волны, еще больше приближена к ее гребню. Аналогичный численный эксперимент, в котором из формулы eqref:eq-solution-2d-full были исключены члены, которыми пренебрегают в рамках -линейной теории волн, показал, что полное соотвествие получившихся полей +линейной теории волн, показал, что полное соответствие получившихся полей потенциалов скоростей (насколько это позволяет сделать машинная точность). #+name: fig-potential-field-nonlinear @@ -1639,8 +1641,8 @@ arma.plot_velocity_potential_field_legend( **** Отличие от формул теории волн малой амплитуды. Эксперимент, в котором сравнивались поля потенциалов скоростей, полученные -численно разлиными формулами, показал, что поля скоростей, полученные по формуле -eqref:eq-solution-2d-full и формуле для волн малой амплитуды +численно различными формулами, показал, что поля скоростей, полученные по +формуле eqref:eq-solution-2d-full и формуле для волн малой амплитуды eqref:eq-old-sol-2d, сопоставимы для волн малых амплитуд. В этом эксперименте использовались две реализации взволнованной морской поверхности, полученные по модели АР: одна содержала волны малой амплитуды, другая\nbsp{}--- большой. @@ -1681,8 +1683,8 @@ arma.plot_velocity( [[file:build/large-and-small-amplitude-velocity-field-comparison-ru.pdf]] *** Верификация нелинейного безынерционного преобразования -Для того чтобы измерить влияение НБП на форму результирующей взволнованной -пверхности, было сгенерировано три реализации: +Для того чтобы измерить влияние НБП на форму результирующей взволнованной +поверхности, было сгенерировано три реализации: - реализация с Гауссовым распределением (без НБП), - реализация с распределением на основе ряда Грама---Шарлье (РГШ), и - реализация с асимметричным нормальным распределением (АНР). @@ -1729,9 +1731,9 @@ arma.plot_nonlinear(file.path("build", "nit-standing"), args) | Тип волн | Распред. | \(\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 | +| прогрессивные | Гауссово | | | | | | 2,41 | +| прогрессивные | РГШ | 2,25 | 0,4 | | 0,20 | 2 | 2,75 | +| прогрессивные | АНР | | | 1 | 0,70 | 3 | 1,37 | | стоячие | Гауссово | | | | | | 1,73 | | стоячие | РГШ | 2,25 | 0,4 | | 0,26 | 2 | 1,96 | | стоячие | АНР | | | 1 | 0,70 | 3 | 0,94 | @@ -1777,9 +1779,9 @@ arma.plot_nonlinear(file.path("build", "nit-standing"), args) по одному для каждой составляющей модели, которые сложнее, чем алгоритм для модели ЛХ. -Основаная особенность формулы модели АР\nbsp{}--- авторегресиионные зависимости +Основная особенность формулы модели АР\nbsp{}--- авторегресиионные зависимости между точками взволнованной поверхности по каждому из измерений,\nbsp{}--- -который препятствуют параллельному вычислению каждой точки повехности. Вместо +который препятствуют параллельному вычислению каждой точки поверхности. Вместо этого поверхность разделяется на равные части по каждому из измерений, и для каждой части устанавливаются информационные зависимости, определяющие порядок вычисления. На рис.\nbsp{}[[fig-ar-cubes]] показаны эти зависимости. Здесь стрелка @@ -1807,7 +1809,7 @@ arma.plot_ar_cubes_2d(3, 3, xlabel="Индекс части (X)", ylabel="Инд с отправки всех объектов, содержащих эту информацию, в очередь. После этого параллельные потоки запускаются, каждый поток последовательно ищет первую часть, для которой все зависимости удовлетворены (путем проверки состояния каждой из -частей), извлекает эту часть из очереди, генерирует взволнованную поверзность +частей), извлекает эту часть из очереди, генерирует взволнованную поверхность для этой части и устанавливает состояние завершения. Алгоритм заканчивается, когда очередь становится пустой. Доступ к очереди из разных потоков синхронизируется посредством блокировок. Алгоритм подходит для SMP машин, а для @@ -1816,8 +1818,8 @@ MPP части, от которых зависит данная, должны б Таким образом, параллельный алгоритм модели АР сводится к созданию минималистичного планировщика задач, в котором -- каждая задача соответсвует части взволнованной поверхности, -- порядок выполнения задач определяется авторегрессионными зависиямостями, и +- каждая задача соответствует части взволнованной поверхности, +- порядок выполнения задач определяется авторегрессионными зависимостями, и - очередь обрабатывается простым пулом потоков, в котором каждый поток в цикле извлекает из очереди первую задачу, для которой все зависимые задачи завершены, и выполняет ее. @@ -1889,7 +1891,7 @@ MPP части, от которых зависит данная, должны б которые эффективно вычисляются на современных процессорах, используя последовательность инструкций FMA. Во-вторых, вычисления давлений происходит по явной аналитической формуле, используя несколько БПФ. Поскольку двухмерное БПФ -одного и того же размера постоянно вычисляется на каждом временом срезе, его +одного и того же размера постоянно вычисляется на каждом временном срезе, его коэффициенты (комплексные экспоненты) вычисляются один раз для всех временных срезов, и дальнейшие вычисления включают в себя лишь несколько трансцендентных функций. В случае модели СС, производительность также повышается за счет @@ -1900,7 +1902,7 @@ MPP части, от которых зависит данная, должны б сравнению с моделью ЛХ. #+name: tab-gpulab -#+caption: Конфигурация системы "Gpulab". +#+caption: Конфигурация системы Gpulab. #+attr_latex: :booktabs t | Процессор | AMD FX-8370 | | Память процессора | 16ГБ | @@ -1919,7 +1921,7 @@ MPP части, от которых зависит данная, должны б Вычисление потенциала скорости было реализована на OpenMP, реализация на OpenCL была сделана только для визуализации взволнованной поверхности в реальном времени. Для каждой технологии программа перекомпилировалась, запускалась -несколько раз и замерялась производительность каждой высокоуровневой функции +несколько раз и измерялась производительность каждой высокоуровневой функции посредством системных часов. Результаты тестирования представлены в таб.\nbsp{}[[tab-arma-performance]]. Все @@ -1968,7 +1970,7 @@ MPP части, от которых зависит данная, должны б библиотеки Blitz, которая реализует оптимизированный обход элементов многомерного массива, основанный на заполняющей пространство кривой Гильберта. В отличие от центрального процессора, видеокарта имеет меньшее количество кэшей, -память с высокой пропусскной способностью и большое количество модулей для +память с высокой пропускной способностью и большое количество модулей для операций с плавающей точкой, что является наименее благоприятным сценарием для модели АР. - Формула модели АР не содержит транцендентных функций, которые могли бы @@ -2028,9 +2030,9 @@ arma.print_openmp_vs_opencl(model_names, row_names) | Запись вывода в файл | 0.27 | 0.27 | 0.27 | 0.28 | 0.27 | В отличие от модели АР, модель ЛХ показывает наибольшую производительность на -видеокарте и наименьшую производительность на центарльном процессоре. Причиной +видеокарте и наименьшую производительность на центральном процессоре. Причиной этому служат -- большое количество транцендентных функций в ее формуле, которые компенсируют +- большое количество трансцендентных функций в ее формуле, которые компенсируют высокие задержки памяти, - линейный шаблон доступа к памяти, который позволяет векторизовать вычисления и объединить операции доступа к памяти из разных потоков, и @@ -2039,7 +2041,7 @@ arma.print_openmp_vs_opencl(model_names, row_names) Несмотря на то что видеокарта на тестовой системе более производительна, чем центральный процессор (с точки зрения операций с плавающей точкой в секунду), общая производительность модели ЛХ по сравнению с моделью АР меньше. Причиной -этого служит межленная передача данных между памятью видеоркарты и центрального +этого служит медленная передача данных между памятью видеокарты и центрального процессора. Модель СС быстрее, чем модель ЛХ, но медленнее, чем модель АР. Поскольку свертка @@ -2052,10 +2054,10 @@ clFFT для видеокарты. В данной работе производ НБП занимает меньше времени на видеокарте, чем на центральном процессоре, однако, если принять во внимание время передачи данных между ними, время -становится сопоставимым. Это объясняется большим количеством транцендентных +становится сопоставимым. Это объясняется большим количеством трансцендентных функций, которые необходимо вычислить для каждой точки взволнованной поверхности для преобразования ее координат \(z\). Для каждой точки нелинейное -транцендентное уравнение\nbsp{}eqref:eq-distribution-transformation решается +трансцендентное уравнение\nbsp{}eqref:eq-distribution-transformation решается методом бисекции. Видеокарта выполняет эту задачу в несколько сотен раз быстрее, чем центральный процессор, но тратит много времени на передачу результата обратно в память процессора. Таким образом, единственная возможность @@ -2076,7 +2078,7 @@ clFFT для видеокарты. В данной работе производ отдельный поток, который начинает запись, как только первый временной срез становится доступен, и завершает, после того как основная группа потоков заканчивает вычисления, и последний срез записывается в файл. Суммарное время, -затрачиваемое на ввод/вывод, увеличиватся, но суммарное время работы программы +затрачиваемое на ввод/вывод, увеличиваться, но суммарное время работы программы уменьшается, поскольку ввод/вывод производится параллельно вычислениям (таб.\nbsp{}[[tab-arma-io-performance]]). Использование этого подхода для локальных систем имеет тот же эффект, но выигрыш в производительности меньше. @@ -2169,10 +2171,10 @@ arma.plot_io_events(names) Код, вычисляющий потенциал скорости, был переписан на языке OpenCL и его производительность сравнивалась с реализацией на OpenMP. -Для каждой реализации замерялось время работы выбранных подпрограмм и время +Для каждой реализации измерялось время работы выбранных подпрограмм и время передачи данных между устройствами. Поле потенциала скорости вычислялось для одной точки по оси \(t\), 128 точек по оси \(z\), расположенных под -взволнованной поверзностью, и для каждой точки по оси \(x\) и \(y\) +взволнованной поверхностью, и для каждой точки по оси \(x\) и \(y\) четырехмерной сетки \((t,x,y,z)\). Между запусками программы изменялся размер сетки по оси \(x\). @@ -2189,7 +2191,7 @@ arma.plot_io_events(names) Другие отличия подпрограмм БПФ, влияющие на производительность, не были найдены. -**** Производительность OpenCL-решателя, вычисляющего поле потенциала скорости. +**** Производительность кода OpenCL, вычисляющего поле потенциала скорости. :PROPERTIES: :header-args:R: :results output raw :exports results :END: @@ -2203,16 +2205,16 @@ arma.plot_io_events(names) между процессором и видеокартой занимает \(\approx{}20\%\) общего времени вычисления этого поля. Вычисление \(g_2\) занимает больше всего времени в случае OpenCL и меньше всего времени в случае OpenMP. В обоих реализациях \(g_2\) -вычислятется на центральном процессоре, поскольку готовая подпрограмма -вычисления производной на OpenCL не была найдена. В случае OpenCL результат -вычислений дублируется для каждой точки сетки по оси \(z\), для того чтобы -переменожить все точки одного временного среза в одной подпрограмме OpenCL, а, -затем, копируется в память видеокарты, что негативно сказывается на -производительности. Все тесты запускались на машине с видеокартой, -характеристики которой просуммированы в таб.\nbsp{}[[tab-storm]]. +вычисляется на центральном процессоре, поскольку готовая подпрограмма вычисления +производной на OpenCL не была найдена. В случае OpenCL результат вычислений +дублируется для каждой точки сетки по оси \(z\), для того чтобы перемножить все +точки одного временного среза в одной подпрограмме OpenCL, а, затем, копируется +в память видеокарты, что негативно сказывается на производительности. Все тесты +запускались на машине с видеокартой, характеристики которой просуммированы в +таб.\nbsp{}[[tab-storm]]. #+name: tab-storm -#+caption: Конфигурация вычислительной системы "Storm". +#+caption: Конфигурация вычислительной системы Storm. #+attr_latex: :booktabs t | Процессор | Intel Core 2 Quad Q9550 | | Память процессора | 8ГБ | @@ -2239,9 +2241,9 @@ title(xlab="Размер взволнованной поверхности по Причина разного распределения времени работы между подпрограммами OpenCL и OpenMP та же, что и в случае разной производительности модели АР на центральном процессоре и видеокарте: видеокарта выполняет больше операций с плавающей точкой -в секунду и имеет больше модулей транцендентных функций, чем процессор, что +в секунду и имеет больше модулей трансцендентных функций, чем процессор, что ускоряет вычисление \(g_1\), но в ней отсутствует кэш, который необходим для -оптимизации нерегулярного шиблона доступа к памяти при вычслении \(g_2\). В +оптимизации нерегулярного шаблона доступа к памяти при вычислении \(g_2\). В отличие от модели АР, производительность вычисления многомерной производной на видеокарте легче увеличить ввиду отсутствия информационных зависимостей между точками: в данной работе оптимизация не была проведена ввиду отсутствия готовой @@ -2305,7 +2307,7 @@ OpenGL увеличивает производительность путем и - простые алгоритмы, производительность которых зависит от производительности библиотеки для многомерных массивов и библиотеки для БПФ. Обеспечение основного функционала посредством низкоуровневых библиотек делает -производительность программы портируемой: поддержка новых архитектур процессоров +производительность программы переносимой: поддержка новых архитектур процессоров может быть добавлена путем замены библиотек. Наконец, использование явной формулы позволяет тратить лишь небольшую долю суммарного времени работы программы на вычисление поля потенциала скорости. Если бы такой формулы не было @@ -2414,13 +2416,13 @@ arma.plot_factory_vs_openmp_overlap( процесс, поэтому эти понятия взаимозаменяемы в данной работе. Роль главного и подчиненного назначается резидентным процессам динамически, т.е.\nbsp{}любой физический узел может стать главным или подчиненным, или быть и тем и другим -одновремено. Динамический выбор ролей использует алгоритм выбора лидера, не +одновременно. Динамический выбор ролей использует алгоритм выбора лидера, не требующий периодической отправки широковещательных сообщений всем узлам кластера, вместо этого роль определяется IP-адресом узла. Подробное описание алгоритма приведено в разд.\nbsp{}[[#sec-node-discovery]]. Его сильными сторонами являются масштабируемость на большое количество узлов и низкие накладные расходы, что делает его пригодным для высокопроизводительных вычислений; его -слабой стороной является искусственная зависимость места, занимаего узлом в +слабой стороной является искусственная зависимость места, занимаемого узлом в иерархии, от его IP-адреса, что делает его непригодным для виртуальных сред, где IP-адрес узла может динамически меняться. @@ -2430,7 +2432,7 @@ IP-адрес узла может динамически меняться. новые связи или меняются старые (из-за того что новый узел присоединяется к кластеру или работающий узел выходит из строя), резидентные процессы обмениваются сообщениями, передавая друг другу количеством узлов, находящихся -/за/ соответсвтующей связью в иерархии. Эта информация используется для +/за/ соответствующей связью в иерархии. Эта информация используется для равномерного распределения нагрузки, даже если распределенная программа запускается на подчиненном узле. Кроме того, иерархия уменьшает количество одновременных сетевых соединений между узлами: на каждую связь в иерархии @@ -2439,7 +2441,7 @@ IP-адрес узла может динамически меняться. кластере. Балансировка нагрузки реализована следующим образом. Когда узел \(A\) пытается -стать подиненным узлу \(B\), он отправляет сообщение на соответствующий +стать подчиненным узлу \(B\), он отправляет сообщение на соответствующий IP-адрес, передавая, сколько узлов уже связаны с ним в иерархии (включая себя самого). После того как все связи в иерархии установлены, каждый узел имеет достаточно информации, чтобы сказать, сколько узлов находится за каждой из его @@ -2453,14 +2455,14 @@ IP-адрес, передавая, сколько узлов уже связан т.е.\nbsp{}производится итерации по всем связям текущего узла, включая связь с главным узлом, и, принимая во внимание количество узлов, находящихся за каждой из связей. Таким образом, даже если программа запускается на подчиненном узле, -находящимя в низу иерархии, ее управляющие объекты распределяются равномерно +находящимися внизу иерархии, ее управляющие объекты распределяются равномерно между всеми узлами кластера. Предложенный подход может быть расширен, включив сложную логику в алгоритм распределения нагрузки. Вместе с количеством узлов, находящихся за связью в иерархии, может быть отправлена любая метрика, которая необходима для реализации этой логики. Однако, если эта метрика обновляется чаще, чем изменяется иерархия, -или периодически, то и сообщения с изменениемя будут отправляться чаще. Для того +или периодически, то и сообщения с изменениями будут отправляться чаще. Для того чтобы эти пересылки не повлияли на производительность программ, для них можно использовать отдельную физическую сеть. Также, когда происходит изменение иерархии, управляющие объекты, которые уже отправлены на узлы до этого @@ -2500,7 +2502,7 @@ IP-адрес, передавая, сколько узлов уже связан подпрограмм и классов для приложений, работающих на одном узле (без взаимодействия по сети), а верхний слой предназначен для приложений, работающих на произвольном количестве узлов. Предполагается наличие двух типов сильно -связанных сущностей\nbsp{}--- это /управляющие обеъкты/ (или /объекты/ для +связанных сущностей\nbsp{}--- это /управляющие объекты/ (или /объекты/ для краткости) и /конвейеры/,\nbsp{}--- которые составляют основу программы. Управляющие объекты реализуют логику (порядок выполнения) программы в методах @@ -2705,7 +2707,7 @@ graph G { директива явно вызывается в методе ~act~. Обычно, по окончании выполнения объекта, он направляется к своему родительскому объекту путем установки поля ~principal~ в значение адреса/идентификатора родителя, целевого IP-адреса в -значение исходного IP-адреса и идентификатора процесса в значение идентфикатора +значение исходного IP-адреса и идентификатора процесса в значение идентификатора исходного процесса. После этого управляющий объект становится downstream-объектом, направляется системой на узел, где находится его текущий руководитель, без использования алгоритма балансировки нагрузки. Для @@ -2732,7 +2734,7 @@ downstream-объектов. Это означает, что если решае (главный) управляющий объект изначально запускается только на одном узле, а другие узлы кластеры используются при необходимости. Это позволяет использовать больше узлов для участков кода с большой степенью параллелизма, и меньше для -других участков. Похожий подход применятся во фреймворках для обработки больших +других участков. Похожий подход применяется во фреймворках для обработки больших объемов данных\nbsp{}cite:dean2008mapreduce,vavilapalli2013yarn --- узлы, на которых будет выполняться задача выбираются в зависимости от того, где физически находятся входные файлы. @@ -2876,7 +2878,7 @@ Parallel)\nbsp{}cite:valiant1990bridging, применяемой в систем Конвейер объектов ускоряет программу путем параллельного выполнения блоков кода, работающих с разными вычислительными устройствами: в то время как текущая часть -взолнованной поверхности генерируется на процессоре, предыдущая часть +взволнованной поверхности генерируется на процессоре, предыдущая часть записывается на диск. Такой подход позволяет получить ускорение, потому что различные вычислительные устройства работают асинхронно, и их параллельное использование увеличивает производительность программы. @@ -2918,7 +2920,7 @@ Parallel)\nbsp{}cite:valiant1990bridging, применяемой в систем каждом кластере выбирается руководящий узел, который управляет очередью задач, планирует их запуск на подчиненных узлах и следит за их состоянием. Роль главного узла назначается либо /статически/ системным администратором -опеределенному физическому узлу, либо /динамически/, путем периодического +определенному физическому узлу, либо /динамически/, путем периодического избрания какого-либо из узлов кластера главным. В первом случае отказоустойчивость обеспечивается посредством резервирования дополнительного свободного узла, который выполнит роль главного в случае отказа текущего. Во @@ -2929,7 +2931,7 @@ Parallel)\nbsp{}cite:valiant1990bridging, применяемой в систем главного узла\nbsp{}cite:hunt2010zookeeper,lakshman2010cassandra,divya2013elasticsearch и в общем случае приводит к симметричной архитектуре системе, в которой один и тот -же стек программного обеспечения с одними и теми же настройсками установлен на +же стек программного обеспечения с одними и теми же настройками установлен на каждом узле кластера\nbsp{}cite:boyer2012glusterfs,ostrovsky2015couchbase. Алгоритмы выбора лидера (которые иногда называют алгоритмами /распределенного @@ -3090,7 +3092,7 @@ digraph { **** Результаты тестирования. Для тестирования производительности обнаружения узлов, на каждом физическом узле кластера запускалось несколько резидентных процессов, каждый из которых был -приявязан к отдельному IP-адресу. Количество процессов на одно физическое ядро +привязан к отдельному IP-адресу. Количество процессов на одно физическое ядро варьировалось от 2 до 16. Каждый процесс был привязан к определенному физическому ядру, чтобы уменьшить накладные расходы на миграцию процессов между ядрами. Алгоритм обхода древовидной иерархии имеет низкие требования к @@ -3137,10 +3139,10 @@ digraph { Тест запускался несколько раз, варьируя количество резидентных процессов на физический узел. Эксперимент показал, что обнаружение 512 узлами (8 физических узлов по 64 процесса на узел) друг друга занимает не более двух секунд -(рис.\nbsp{}[[fig-discovery-benchmark]]). Это значение менятся незначительно с +(рис.\nbsp{}[[fig-discovery-benchmark]]). Это значение меняется незначительно с увеличением количества физических узлов. Использование более 8 узлов по 64 процесса на узел приводит к большой колебаниям времени обнаружения, ввиду того -что большое количествао процессов одновременно устанавливает соединение с одним +что большое количества процессов одновременно устанавливает соединение с одним и тем же главным процессов (значение ветвления во всех тестах равнялось 10000), поэтому эти результаты были исключены. @@ -3154,7 +3156,7 @@ bscheduler.plot_discovery( toplabel="ppn") #+end_src -#+caption: Время обнаружения всех резидентных процессов, запущенных на кластере, в зависимости от количества процессов. Пунктирная линия обозначает минимальное и макисмальное значение за все проведенные тесты, "ppn" --- количество резидентных процессов на узел. +#+caption: Время обнаружения всех резидентных процессов, запущенных на кластере, в зависимости от количества процессов. Пунктирная линия обозначает минимальное и максимальное значение за все проведенные тесты, "ppn" --- количество резидентных процессов на узел. #+name: fig-discovery-benchmark #+RESULTS: fig-discovery-benchmark [[file:build/discovery-benchmark-ru.pdf]] @@ -3274,14 +3276,15 @@ IP-адреса: замена отображения IP-адресов на чт Однако, существует возможность продолжить выполнение задачи на меньшем количестве узлов, чем было изначально выделено изначально, реализовав отказоустойчивость на уровне приложения. В этом случае роли руководителя и -подчиненного динамически распределяются между сервисами планировщика задач, -работающими на каждом узле кластера, образуя древовидную иерархию узлов -кластера, а параллельная программа состоит из управляющих объектов, использующих -иерархию узлов для динамического распределения нагрузки и свою собственную -иерархию для перезапуска управляющих объектов в случае сбоя узла. +подчиненного динамически распределяются между резидентными процессами +планировщика задач, работающими на каждом узле кластера, образуя древовидную +иерархию узлов кластера, а параллельная программа состоит из управляющих +объектов, использующих иерархию узлов для динамического распределения нагрузки и +свою собственную иерархию для перезапуска управляющих объектов в случае сбоя +узла. **** Динамическое распределение ролей. -Отказоуйстовчисть параллельной программы\nbsp{}--- это одна из проблем, которая +Отказоустойчивость параллельной программы\nbsp{}--- это одна из проблем, которая должна решаться планировщиком задач обработки больших данных или высокопроизводительных вычислений, однако, большинство планировщиков обеспечивают только отказоустойчивость подчиненных узлов. Такого рода сбои @@ -3296,7 +3299,7 @@ IP-адреса: замена отображения IP-адресов на чт выхода из строя машины, приводящей к выходу из строя всей системы, увеличивают вероятность ошибки оператора. -С этой точки зрения более практичным реализовать отказойстойчивость руководящего +С этой точки зрения более практичным реализовать отказоустойчивость руководящего узла на уровне приложения, но не существует общего зарекомендовавшего себя решения. Большинство реализаций слишком привязаны к конкретному приложению, чтобы стать повсеместно применяемыми. Автор считает, что это происходит из-за @@ -3884,7 +3887,7 @@ title(xlab="Размер взволнованной поверхности", yla - Модель и метод были реализована для систем как с общей, так и с распределенной памятью, и в нескольких тестах показали масштабируемость на различном количество ядер, которая близка к линейной. Модель АР более эффективна с - вчислительной точки зрения на центральном процессоре, нежели на ведиокарте, и + вычислительной точки зрения на центральном процессоре, нежели на ведиокарте, и превосходит по производительности модель ЛХ. **** Перспективы дальнейших исследований.