arma-thesis

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

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

Remove old section.

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

diff --git a/arma-thesis-ru.org b/arma-thesis-ru.org @@ -2314,95 +2314,6 @@ OpenGL увеличивает производительность путем и или не содержала бы интегралы в виде преобразований Фурье, на вычисление поля потенциала скорости затрачивалось бы гораздо больше времени. -**** Производительность алгоритма распределения нагрузки. :noexport: -Программная реализация генерации взволнованной поверхности сбалансирована с -точки зрения нагрузки на процессорные ядра, однако, как показывают тесты, -характеризуется высокой нагрузкой на устройства хранения. До проведения -тестирования генерация взволнованной поверхности была реализована с -использованием OpenMP для параллельных вычислений, и была переписана с -использованием POSIX потоков для того чтобы реализовать алгоритм распределения -нагрузки. Производительность двух реализаций сравнивалась на платформе, -конфигурация которой приведена в табл.\nbsp{}[[tab-multicore-specs]]. - -#+name: tab-multicore-specs -#+caption: Конфигурация многоядерной системы. -#+attr_latex: :booktabs t -| Компонента | Подробности | -|-------------------------------+----------------------------------| -| Язык программирования | C++11 | -| Библиотека потоков | C++11 STL threads | -| Библиотека атомарных операций | C++11 STL atomic | -| Подпрограммы замера времени | ~clock_gettime(CLOCK_MONOTONIC)~ | -| | ~/usr/bin/time -f \%e~ | -| Компилятор | GCC 4.8.2 | -| Опции компиляции | ~-std=c++11 -O2 -march=native~ | -| Операционная система | Debian 3.2.51-1 x86_64 | -| Файловая система | ext4 | -| Процессор | Intel Core 2 Quad Q9650 | -| Частота процессора (ГГц) | 3.00 | -| Количество ядер | 4 | -| Объем оперативной памяти (ГБ) | 8 | -| Диск | Seagate ST3250318AS | -| Скорость диска (об./мин.) | 7200 | - -Эксперимент состоял в запуске двух программных реализаций на многоядерной -машине, изменяя размер поверхности. Размер пула потоков процессора и пула -потоков ввода/вывода оставался неизменным во время эксперимента. Пул потоков -ввода/вывода состоял из одного потока, а количество потоков процессора равнялось -количеству физических ядер процессора. - -В эксперименте алгоритм распределения нагрузки показал большую эффективность по -сравнению с реализацией без него. Чем больше размер генерируемой поверхности, -тем больше разрыв в производительности (рис.\nbsp{}[[fig-factory-performance]]), что -является следствием наложения вычислительной фазы и фазы вывода данных друг на -друга (рис.\nbsp{}[[fig-factory-overlap]]). В реализации OpenMP фаза вывода данных -начинается только тогда, когда заканчивается вычислительная фаза, в то время как -использование алгоритма распределения нагрузки приводит почти к одновременному -завершению обеих фаз. Таким образом, /выполнение параллельных изнутри, -последовательных фаз в режиме конвейера более эффективно, чем их -последовательное выполнение/, и это позволяет сбалансировать нагрузку на -различные устройства, задействованные в вычислениях. - -#+name: fig-factory-performance -#+header: :width 5 :height 4 -#+begin_src R :file build/factory-vs-openmp-ru.pdf -source(file.path("R", "common.R")) -arma.plot_factory_vs_openmp( - xlab="Размер реализации", - ylab="Время, с.", - power=6 -) -#+end_src - -#+caption: Сравнение производительности реализаций программы на OpenMP и Factory. -#+name: fig-factory-performance -#+RESULTS: fig-factory-performance -[[file:build/factory-vs-openmp-ru.pdf]] - -#+name: fig-factory-overlap -#+header: :width 7 :height 4 -#+begin_src R :file build/factory-vs-openmp-overlap-ru.pdf -source(file.path("R", "common.R")) -par(mar=c(5, 6, 0, 1), pty="m") -arma.plot_factory_vs_openmp_overlap( - xlab="Время, с.", - labels=c("Factory", "OpenMP"), - scale=10**9 -) -#+end_src - -#+caption: Наложение параллельных вычислений на \([G_0,G_1]\) и записи данных на диск на \([W_0,W_1]\). В реализации OpenMP наложение отсутствует. -#+name: fig-factory-overlap -#+RESULTS: fig-factory-overlap -[[file:build/factory-vs-openmp-overlap-ru.pdf]] - -Предложенный алгоритм распределения нагрузки на многоядерную систему позволяет -получить прирост производительности для приложений, считывающих и записывающих -большой объем данных на диск, но может быть использован также и в других -случаях. Основная идея алгоритма состоит в определении типа нагрузки и поиске -подходящего устройства для перенаправления нагрузки на него. Таким образом любое -устройство помимо дисков может быть использовано. - ** Отказоустойчивый планировщик пакетных задач *** Архитектура системы **** Физический уровень.