arma-thesis

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

commit a2073f2593b92696ef6a579c75e2c3bb7b671aa3
parent 171e65f9f4756dd529e01097327ccd95ad5bfd99
Author: Ivan Gankevich <igankevich@ya.ru>
Date:   Wed, 18 Jan 2017 14:25:10 +0300

Copy pipeline mapping.

Diffstat:
phd-diss-ru.org | 376+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++--------------------
phd-diss.org | 2++
2 files changed, 285 insertions(+), 93 deletions(-)

diff --git a/phd-diss-ru.org b/phd-diss-ru.org @@ -25,103 +25,245 @@ (setq org-latex-image-default-width nil) #+end_src -** Plot distributions :noexport: -#+begin_src gnuplot :exports none -set loadpath GPVAL_PWD."/gnuplot" -system "mkdir -p build" -cd "build" - -load 'style.gnuplot' -#load 'style-paper.gnuplot' - -set terminal svg fixed enhanced size 1920/5,900/3 font 'Old Standard, 12' dashed rounded -set key top center Left reverse width -10 maxrows 2 -set xlabel 'z' offset 0,0.33 -set ylabel 'f(z)' offset 2,0 - -set xrange [-3:3] -set ytics 0,0.1 -set yrange [0:0.6] - -skew_normal_1(z, skewness, kurtosis) = (24 + 4*z*(-3 + z**2)* \ - skewness + (3 - 6*z**2 + z**4)* kurtosis)/(24*(exp((z**2)/2)*sqrt(2*pi))) - -#print skew_normal_1(1, 0.6, 1.0) -# regular gamma γ - -set output 'skew-normal-1.svg' -plot \ -skew_normal_1(x, 0, 0) with lines ls 1 title '𝛾_1=0, 𝛾_2=0', \ -skew_normal_1(x, 0.52, 0) with lines ls 2 title '𝛾_1=0.52, 𝛾_2=0', \ -skew_normal_1(x, 0, 0.7) with lines ls 3 title '𝛾_1=0, 𝛾_2=0.7', \ -skew_normal_1(x, 0.52, 0.7) with lines ls 4 title '𝛾_1=0.52, 𝛾_2=0.7' -system "inkscape --without-gui --export-eps=skew-normal-1.eps skew-normal-1.svg - -skew_normal_2(z, alpha) = \ - erfc( -((z*alpha)/sqrt(2)) ) / \ - (exp((z**2)/2)*sqrt(2*pi)) - -skewness(alpha) = \ - (sqrt(2) * (4 - pi) * (alpha**3)) \ - / \ - (sqrt(pi + (pi-2) * (alpha**2))**3) - -kurtosis(alpha) = \ - (8*(-3 + pi)*(alpha**4))/ \ - ((pi + (-2 + pi)*(alpha**2))**2) - -set terminal svg fixed enhanced size 1920/4,900/3 font 'Times, 12' dashed rounded -set key top left Left reverse maxcols 1 maxrows 4 -set yrange [0:0.8] -set output 'skew-normal-2.svg' -alphas="0.00 0.87 2.25 4.90" -a(i) = word(alphas, i) -plot for [i=1:words(alphas)] \ -skew_normal_2(x, a(i)) with lines ls i \ -title 'α='.a(i).', 𝛾_1='.sprintf('%.2f',skewness(a(i))).', 𝛾_2='.sprintf('%.2f',kurtosis(a(i))) -system "inkscape --without-gui --export-eps=skew-normal-2.eps skew-normal-2.svg - -exit +** Produce data for Q-Q and ACF plots +#+begin_src sh :exports none :results verbatim +root=$(pwd) +for testname in propagating_wave standing_wave +do + wd=$root/build/$testname + rm -rf $wd + mkdir -p $wd + cd $wd + arma -c $root/config/$testname.arma 2>&1 +done #+end_src #+RESULTS: +#+begin_example +Input file = /home/igankevich/workspace/phd-diss/config/propagating_wave.arma +ACF grid size = (20,10,10) +ACF grid patch size = (0.526316,0.555556,0.555556) +Output grid size = (200,40,40) +Output grid patch size = (1,1,1) +AR order = (10,10,10) +Do least squares = 0 +ACF function = propagating_wave +Model = MA +MA algorithm = fixed_point_iteration +Verification scheme = manual +ACF variance = 5 +fixed_point_iteration:Iteration=0, var_wn=2.70831 +fixed_point_iteration:Iteration=1, var_wn=1.93791 +fixed_point_iteration:Iteration=2, var_wn=1.54801 +fixed_point_iteration:Iteration=3, var_wn=1.31202 +fixed_point_iteration:Iteration=4, var_wn=1.15328 +fixed_point_iteration:Iteration=5, var_wn=1.0386 +fixed_point_iteration:Iteration=6, var_wn=0.951442 +fixed_point_iteration:Iteration=7, var_wn=0.882674 +fixed_point_iteration:Iteration=8, var_wn=0.82688 +fixed_point_iteration:Iteration=9, var_wn=0.780623 +fixed_point_iteration:Iteration=10, var_wn=0.74161 +fixed_point_iteration:Iteration=11, var_wn=0.708244 +fixed_point_iteration:Iteration=12, var_wn=0.679374 +fixed_point_iteration:Iteration=13, var_wn=0.654145 +fixed_point_iteration:Iteration=14, var_wn=0.63191 +fixed_point_iteration:Iteration=15, var_wn=0.612168 +fixed_point_iteration:Iteration=16, var_wn=0.594523 +fixed_point_iteration:Iteration=17, var_wn=0.578663 +fixed_point_iteration:Iteration=18, var_wn=0.564333 +fixed_point_iteration:Iteration=19, var_wn=0.551325 +fixed_point_iteration:Iteration=20, var_wn=0.539469 +fixed_point_iteration:Iteration=21, var_wn=0.528623 +fixed_point_iteration:Iteration=22, var_wn=0.518666 +fixed_point_iteration:Iteration=23, var_wn=0.509497 +fixed_point_iteration:Iteration=24, var_wn=0.50103 +fixed_point_iteration:Iteration=25, var_wn=0.493191 +fixed_point_iteration:Iteration=26, var_wn=0.485916 +fixed_point_iteration:Iteration=27, var_wn=0.479148 +fixed_point_iteration:Iteration=28, var_wn=0.472841 +fixed_point_iteration:Iteration=29, var_wn=0.466951 +fixed_point_iteration:Iteration=30, var_wn=0.461442 +fixed_point_iteration:Iteration=31, var_wn=0.456279 +fixed_point_iteration:Iteration=32, var_wn=0.451435 +fixed_point_iteration:Iteration=33, var_wn=0.446882 +fixed_point_iteration:Iteration=34, var_wn=0.442597 +fixed_point_iteration:Iteration=35, var_wn=0.43856 +fixed_point_iteration:Iteration=36, var_wn=0.434752 +fixed_point_iteration:Iteration=37, var_wn=0.431155 +fixed_point_iteration:Iteration=38, var_wn=0.427755 +fixed_point_iteration:Iteration=39, var_wn=0.424538 +fixed_point_iteration:Iteration=40, var_wn=0.42149 +fixed_point_iteration:Iteration=41, var_wn=0.418601 +fixed_point_iteration:Iteration=42, var_wn=0.415859 +fixed_point_iteration:Iteration=43, var_wn=0.413256 +fixed_point_iteration:Iteration=44, var_wn=0.410782 +fixed_point_iteration:Iteration=45, var_wn=0.40843 +fixed_point_iteration:Iteration=46, var_wn=0.406191 +fixed_point_iteration:Iteration=47, var_wn=0.404059 +fixed_point_iteration:Iteration=48, var_wn=0.402029 +fixed_point_iteration:Iteration=49, var_wn=0.400092 +fixed_point_iteration:Iteration=50, var_wn=0.398246 +fixed_point_iteration:Iteration=51, var_wn=0.396483 +fixed_point_iteration:Iteration=52, var_wn=0.3948 +fixed_point_iteration:Iteration=53, var_wn=0.393193 +fixed_point_iteration:Iteration=54, var_wn=0.391656 +fixed_point_iteration:Iteration=55, var_wn=0.390188 +fixed_point_iteration:Iteration=56, var_wn=0.388782 +fixed_point_iteration:Iteration=57, var_wn=0.387438 +fixed_point_iteration:Iteration=58, var_wn=0.386151 +fixed_point_iteration:Iteration=59, var_wn=0.384918 +fixed_point_iteration:Iteration=60, var_wn=0.383738 +fixed_point_iteration:Iteration=61, var_wn=0.382606 +fixed_point_iteration:Iteration=62, var_wn=0.381522 +fixed_point_iteration:Iteration=63, var_wn=0.380482 +fixed_point_iteration:Iteration=64, var_wn=0.379485 +fixed_point_iteration:Iteration=65, var_wn=0.378528 +fixed_point_iteration:Iteration=66, var_wn=0.37761 +fixed_point_iteration:Iteration=67, var_wn=0.376729 +fixed_point_iteration:Iteration=68, var_wn=0.375882 +fixed_point_iteration:Iteration=69, var_wn=0.37507 +fixed_point_iteration:Iteration=70, var_wn=0.374289 +fixed_point_iteration:Iteration=71, var_wn=0.373539 +fixed_point_iteration:Iteration=72, var_wn=0.372818 +fixed_point_iteration:Iteration=73, var_wn=0.372126 +fixed_point_iteration:Iteration=74, var_wn=0.37146 +fixed_point_iteration:Iteration=75, var_wn=0.37082 +fixed_point_iteration:Iteration=76, var_wn=0.370204 +fixed_point_iteration:Iteration=77, var_wn=0.369612 +fixed_point_iteration:Iteration=78, var_wn=0.369042 +fixed_point_iteration:Iteration=79, var_wn=0.368494 +fixed_point_iteration:Iteration=80, var_wn=0.367966 +fixed_point_iteration:Iteration=81, var_wn=0.367458 +fixed_point_iteration:Iteration=82, var_wn=0.366969 +fixed_point_iteration:Iteration=83, var_wn=0.366499 +fixed_point_iteration:Iteration=84, var_wn=0.366046 +fixed_point_iteration:Iteration=85, var_wn=0.36561 +fixed_point_iteration:Iteration=86, var_wn=0.365189 +fixed_point_iteration:Iteration=87, var_wn=0.364785 +fixed_point_iteration:Iteration=88, var_wn=0.364395 +fixed_point_iteration:Iteration=89, var_wn=0.364019 +fixed_point_iteration:Iteration=90, var_wn=0.363657 +fixed_point_iteration:Iteration=91, var_wn=0.363309 +fixed_point_iteration:Iteration=92, var_wn=0.362973 +fixed_point_iteration:Iteration=93, var_wn=0.362649 +fixed_point_iteration:Iteration=94, var_wn=0.362337 +fixed_point_iteration:Iteration=95, var_wn=0.362036 +fixed_point_iteration:Iteration=96, var_wn=0.361746 +fixed_point_iteration:Iteration=97, var_wn=0.361466 +fixed_point_iteration:Iteration=98, var_wn=0.361197 +fixed_point_iteration:Iteration=99, var_wn=0.360937 +fixed_point_iteration:Iteration=100, var_wn=0.360686 +fixed_point_iteration:Iteration=101, var_wn=0.360444 +fixed_point_iteration:Iteration=102, var_wn=0.360211 +fixed_point_iteration:Iteration=103, var_wn=0.359986 +fixed_point_iteration:Iteration=104, var_wn=0.359769 +fixed_point_iteration:Iteration=105, var_wn=0.35956 +fixed_point_iteration:Iteration=106, var_wn=0.359358 +fixed_point_iteration:Iteration=107, var_wn=0.359163 +fixed_point_iteration:Iteration=108, var_wn=0.358975 +fixed_point_iteration:Iteration=109, var_wn=0.358794 +fixed_point_iteration:Iteration=110, var_wn=0.358619 +fixed_point_iteration:Iteration=111, var_wn=0.35845 +fixed_point_iteration:Iteration=112, var_wn=0.358288 +fixed_point_iteration:Iteration=113, var_wn=0.35813 +fixed_point_iteration:Iteration=114, var_wn=0.357979 +fixed_point_iteration:Iteration=115, var_wn=0.357832 +fixed_point_iteration:Iteration=116, var_wn=0.357691 +fixed_point_iteration:Iteration=117, var_wn=0.357555 +fixed_point_iteration:Iteration=118, var_wn=0.357423 +fixed_point_iteration:Iteration=119, var_wn=0.357296 +fixed_point_iteration:Iteration=120, var_wn=0.357173 +fixed_point_iteration:Iteration=121, var_wn=0.357055 +fixed_point_iteration:Iteration=122, var_wn=0.356941 +fixed_point_iteration:Iteration=123, var_wn=0.356831 +fixed_point_iteration:Iteration=124, var_wn=0.356724 +fixed_point_iteration:Iteration=125, var_wn=0.356621 +fixed_point_iteration:Iteration=126, var_wn=0.356522 +fixed_point_iteration:Iteration=127, var_wn=0.356426 +fixed_point_iteration:Iteration=128, var_wn=0.356334 +fixed_point_iteration:Iteration=129, var_wn=0.356244 +fixed_point_iteration:Iteration=130, var_wn=0.356158 +fixed_point_iteration:Iteration=131, var_wn=0.356075 +fixed_point_iteration:Iteration=132, var_wn=0.355994 +fixed_point_iteration:Iteration=133, var_wn=0.355917 +fixed_point_iteration:Iteration=134, var_wn=0.355842 +fixed_point_iteration:Iteration=135, var_wn=0.355769 +fixed_point_iteration:Iteration=136, var_wn=0.355699 +fixed_point_iteration:Iteration=137, var_wn=0.355632 +fixed_point_iteration:Iteration=138, var_wn=0.355567 +fixed_point_iteration:Iteration=139, var_wn=0.355504 +fixed_point_iteration:Iteration=140, var_wn=0.355443 +fixed_point_iteration:Iteration=141, var_wn=0.355384 +fixed_point_iteration:Iteration=142, var_wn=0.355327 +fixed_point_iteration:Iteration=143, var_wn=0.355273 +fixed_point_iteration:Iteration=144, var_wn=0.35522 +fixed_point_iteration:Iteration=145, var_wn=0.355169 +fixed_point_iteration:Iteration=146, var_wn=0.355119 +fixed_point_iteration:Iteration=147, var_wn=0.355072 +fixed_point_iteration:Iteration=148, var_wn=0.355026 +fixed_point_iteration:Iteration=149, var_wn=0.354981 +fixed_point_iteration:Iteration=150, var_wn=0.354938 +fixed_point_iteration:Iteration=151, var_wn=0.354897 +fixed_point_iteration:Iteration=152, var_wn=0.354856 +fixed_point_iteration:Iteration=153, var_wn=0.354818 +fixed_point_iteration:Iteration=154, var_wn=0.35478 +fixed_point_iteration:Iteration=155, var_wn=0.354744 +fixed_point_iteration:Iteration=156, var_wn=0.354709 +fixed_point_iteration:Iteration=157, var_wn=0.354676 +fixed_point_iteration:Iteration=158, var_wn=0.354643 +fixed_point_iteration:Iteration=159, var_wn=0.354612 +fixed_point_iteration:Iteration=160, var_wn=0.354581 +fixed_point_iteration:Iteration=161, var_wn=0.354552 +fixed_point_iteration:Iteration=162, var_wn=0.354524 +fixed_point_iteration:Iteration=163, var_wn=0.354496 +fixed_point_iteration:Iteration=164, var_wn=0.35447 +fixed_point_iteration:Iteration=165, var_wn=0.354444 +fixed_point_iteration:Iteration=166, var_wn=0.35442 +fixed_point_iteration:Iteration=167, var_wn=0.354396 +fixed_point_iteration:Iteration=168, var_wn=0.354373 +fixed_point_iteration:Iteration=169, var_wn=0.35435 +fixed_point_iteration:Iteration=170, var_wn=0.354329 +fixed_point_iteration:Iteration=171, var_wn=0.354308 +fixed_point_iteration:Iteration=172, var_wn=0.354288 +fixed_point_iteration:Iteration=173, var_wn=0.354269 +fixed_point_iteration:Iteration=174, var_wn=0.35425 +fixed_point_iteration:Iteration=175, var_wn=0.354232 +fixed_point_iteration:Iteration=176, var_wn=0.354214 +fixed_point_iteration:Iteration=177, var_wn=0.354198 +fixed_point_iteration:Iteration=178, var_wn=0.354181 +fixed_point_iteration:Iteration=179, var_wn=0.354165 +fixed_point_iteration:Iteration=180, var_wn=0.35415 +fixed_point_iteration:Iteration=181, var_wn=0.354136 +fixed_point_iteration:Iteration=182, var_wn=0.354121 +fixed_point_iteration:Iteration=183, var_wn=0.354108 +fixed_point_iteration:Iteration=184, var_wn=0.354094 +fixed_point_iteration:Iteration=185, var_wn=0.354082 +fixed_point_iteration:Iteration=186, var_wn=0.354069 +fixed_point_iteration:Iteration=187, var_wn=0.354057 +fixed_point_iteration:Iteration=188, var_wn=0.354046 +fixed_point_iteration:Iteration=189, var_wn=0.354034 +fixed_point_iteration:Iteration=190, var_wn=0.354024 +fixed_point_iteration:Iteration=191, var_wn=0.354013 +fixed_point_iteration:Iteration=192, var_wn=0.354003 +fixed_point_iteration:Iteration=193, var_wn=0.353994 +WN variance = 0.353994 +Input file = /home/igankevich/workspace/phd-diss/config/standing_wave.arma +ACF grid size = (10,10,10) +ACF grid patch size = (0.277778,0.555556,0.555556) +Output grid size = (200,40,40) +Output grid patch size = (1,1,1) +AR order = (7,7,7) +Do least squares = 0 +ACF function = standing_wave +Model = AR +MA algorithm = fixed_point_iteration +Verification scheme = manual +ACF variance = 5 +WN variance = 0.00261323 +Zeta size = (193,33,33) +NaN: 29, -nan, 1.798e+36, -1.04284e+38, inf, -1.798e+36, -1.798e+36 +#+end_example -** Plot velocities :noexport: -#+begin_src gnuplot :exports none -set loadpath GPVAL_PWD."/gnuplot" GPVAL_PWD."/data/velocity" -system "mkdir -p build" -cd "build" - -set terminal svg size 320, 200 font "Open Sans Regular, 12" linewidth 1 enhanced rounded dashed - -load 'linestyle.gnuplot' - -unset border -set border 3 -set xtics nomirror out offset 0,0.5 -set ytics nomirror out offset 0.5,0 - -set xrange [0:90] -set yrange [-2:4] -set xtics 0,30 -set ytics -2,2,4 -set xlabel 'x' offset 0,1 -set ylabel 'u(x)' offset 1.75,0 - -set output 'high-amp-nocolor.svg' -plot 'high-amp' title 'u_1(x)' ls 1 smooth csplines, \ - 'high-amp-0' title 'u_2(x)' ls 2 smooth csplines -system "inkscape --without-gui --export-eps=high-amp-nocolor.eps high-amp-nocolor.svg - -set output 'low-amp-nocolor.svg' -plot 'low-amp' title 'u_1(x)' ls 1 smooth csplines, \ - 'low-amp-0' title 'u_2(x)' ls 2 smooth csplines -system "inkscape --without-gui --export-eps=low-amp-nocolor.eps low-amp-nocolor.svg - -exit -#+end_src - -#+RESULTS: * Введение **** Актуальность темы. Программы, моделирующие поведение судна на морских волнах, широко применяются @@ -1628,6 +1770,27 @@ eqref:eq:old-sol-2d, сопоставимы для волн малых ампл ** Модель вычислений *** Основополагающие принципы модели *** Отображение алгоритма генерации взволнованной поверхности на вычислительную модель +Модель АРСС реализована в программном комплексе, работающем по принципу +вычислительного конвейера, в котором каждое звено применяет фильтр к выходным +данным предыдущего звена. Такая архитектура позволяет распределить различные +звенья конвейера по узлам вычислительного кластера, т.е. реализовать параллелизм +по операциям, а внутри каждого звена применить параллелизм по данным. На +[[fig:pipeline]] представлена схема конвейера обработки данных, в которой +прямоугольниками со скругленными углами обозначены звенья конвейера, обычными +прямоугольниками --- массивы данных, передаваемые от одного звена к другому, а +стрелками --- направление передачи данных. Некоторые звенья разделены на +/секции/, каждая из которых обрабатывает отдельную часть массива объектов из +предметной области задачи. Если звенья соединены без использования /барьера/ +(горизонтальная или вертикальная полоса), то передача объектов между такими +звеньями происходит параллельно с вычислениями, по мере их готовности. Секции +работают параллельно на нескольких ядрах процессора (нескольких узлах кластера). +Таким образом, между множеством ядер процессора, секций конвейера и объектами +устанавливается сюръективное отображение, т.е. на одном ядре процессора может +работать несколько секций конвейера, каждая из которых может обрабатывать +несколько частей данных последовательно, но одна секция не может работать сразу +на нескольких ядрах, а объект не может обрабатываться сразу несколькими секциями +конвейера. + #+name: fig:pipeline #+begin_src dot :exports results :file build/pipeline-ru.pdf digraph { @@ -1734,6 +1897,32 @@ digraph { #+RESULTS: fig:pipeline [[file:build/pipeline-ru.pdf]] +Конвейер объектов можно считать развитием модели BSP (Bulk Synchronous +Parallel), широко применяемой в системах обработки графов +cite:malewicz2010pregel,seo2010hama. Преимущество конвейера заключается в том, +что передача данных между звеньями, происходящая параллельно с вычислениями, +позволяет исключить глобальную синхронизацию между последовательно идущим +этапами вычислений, что, в свою очередь, позволяет эффективно распределить +объекты по узлам кластера. В то же время, в модели BSP глобальная синхронизация +происходит после каждого шага. + +Поскольку передача данных между звеньями конвейера происходит параллельно с +вычислениями, то на одном и том же конвейере можно запустить сразу несколько +приложений (генерировать сразу несколько взволнованных морских поверхностей с +разными характеристиками). Обычно такой запуск производится либо в параллельных +процессах, что может привести к перегрузке системы при недостаточном количестве +процессорных ядер, либо через очередь задач, что не позволит получить +максимальную производительность, поскольку процессорные ядра в таких очередях +выделяются полностью под задачу. На практике оказывается, что +высокопроизводительные приложения не всегода загружают процессор на максимум, +тратя время на синхронизацию параллельных процессов и запись данных в файл. +Использование конвейера в таком случае позволит на одном и том же множестве +процессов запустить сразу несколько расчетов и эффективно использовать все +устройства компьютера, насколько это позволяет задача. Например, во время записи +в файл одной задачей может производиться расчет на процессоре другой задачей. +Это минимизирует время простоя процессора и других устройств компьютера и +повышает общую пропускную способность кластера. + ** Реализация для систем с общей памятью (SMP) *** Алгоритм распределения нагрузки *** Результаты тестирования @@ -1814,6 +2003,7 @@ digraph { | <<<МНК>>> | метод наименьших квадратов | | <<<ФПР>>> | функция плотности распределения | | <<<ФР>>> | функция распределения | +| <<<BSP>>> | Bulk Synchronous Parallel | #+begin_export latex diff --git a/phd-diss.org b/phd-diss.org @@ -1751,6 +1751,7 @@ work. communication of cluster nodes limiting it to adjacent nodes. - No explicit synchronisation. - Local communications between adjacent nodes in the hierarchy. + *** Mapping wavy surface generation algorithm on computational model #+name: fig:pipeline #+begin_src dot :exports results :file build/pipeline.pdf @@ -1892,6 +1893,7 @@ digraph { | <<<LS>>> | least squares | | <<<PDF>>> | probability density function | | <<<CDF>>> | cumulative distribution function | +| <<<BSP>>> | Bulk Synchronous Parallel | #+begin_export latex \input{postamble}