arma-thesis

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

commit 52b6312ac9f689a89879013dd499bc1821decaf1
parent 2492728a7f9059ec7b76edd45848b8b40728c483
Author: Ivan Gankevich <igankevich@ya.ru>
Date:   Mon,  6 Feb 2017 11:31:38 +0300

Translate pipeline graph and reference it in the text.

Diffstat:
phd-diss-ru.org | 111++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++-
phd-diss.org | 4++--
2 files changed, 112 insertions(+), 3 deletions(-)

diff --git a/phd-diss-ru.org b/phd-diss-ru.org @@ -1979,7 +1979,7 @@ cite:malewicz2010pregel,seo2010hama. Конвейер позволяет иск параграфе. Для каждого устройства используется отдельный конвейер. Существуют конвейеры для параллельной обработки, обработки по расписанию (периодические и отложенные задачи) и промежуточный конвейер для обработки управляющих объектов -на узлах кластера. +на узлах кластера (см. рис. [[fig:subord-ppl]]). По принципу работу механизм управляющих объектов и конвейеров напоминает механизм работы процедур и стеков вызовов, с тем лишь преимуществом, что методы @@ -1994,6 +1994,115 @@ cite:malewicz2010pregel,seo2010hama. Конвейер позволяет иск реализовать пассивное ожидание и вызывают правильные методы, анализируя внутреннее состояние объектов. +#+name: fig:subord-ppl +#+begin_src dot :exports results :file build/subord-ppl-ru.pdf +graph G { + + node [fontsize=14,margin="0.055,0",shape=box] + graph [nodesep="0.25",ranksep="0.25",rankdir="LR"] + edge [arrowsize=0.66] + + subgraph cluster_daemon { + label="Родительский процесс" + style=filled + color=lightgrey + + factory [label="Фабрика"] + parallel_ppl [label="Параллельный\nконвейер"] + io_ppl [label="Конвейер\nввода/вывода"] + sched_ppl [label="Конвейер\nдля таймера"] + net_ppl [label="Конвейер для\nсетевых устройств"] + proc_ppl [label="Конвейер\nдля процессов"] + + upstream [label="Пул потоков upstream"] + downstream [label="Пул потоков downstream"] + } + + factory--parallel_ppl + factory--io_ppl + factory--sched_ppl + factory--net_ppl + factory--proc_ppl + + subgraph cluster_hardware { + label="Вычислительные устройства" + style=filled + color=lightgrey + + cpu [label="CPU"] + core0 [label="Ядро 0"] + core1 [label="Ядро 1"] + core2 [label="Ядро 2"] + core3 [label="Ядро 3"] + + storage [label="Устройства\nхранения"] + disk0 [label="Диск 0"] + + network [label="Сетевые\nкарты"] + nic0 [label="СК 0"] + + timer [label="Таймер"] + + } + + core0--cpu + core1--cpu + core2--cpu + core3--cpu + + disk0--storage + nic0--network + + parallel_ppl--upstream + parallel_ppl--downstream + + upstream--{core0,core1,core2,core3} [style="dashed"] + downstream--core0 [style="dashed"] + + io_ppl--core0 [style="dashed"] + io_ppl--disk0 [style="dashed"] + sched_ppl--core0 [style="dashed"] + sched_ppl--timer [style="dashed"] + net_ppl--core0 [style="dashed"] + net_ppl--nic0 [style="dashed"] + proc_ppl--core0 [style="dashed"] + + subgraph cluster_children { + style=filled + color=white + + subgraph cluster_child0 { + label="Дочерний процесс 0" + style=filled + color=lightgrey + + app0_factory [label="Фабрика"] + app0 [label="Конвейер\nдочернего процесса"] + } + + subgraph cluster_child1 { + label="Дочерний процесс 1" + style=filled + color=lightgrey + + app1_factory [label="Фабрика"] + app1 [label="Конвейер\nдочернего процесса"] + } + } + + proc_ppl--app0 + proc_ppl--app1 + + app0_factory--app0 [constraint=false] + app1_factory--app1 [constraint=false] + +} +#+end_src + +#+caption: Отображение конвейеров родительского и дочернего процессов на вычислительные устройства. +#+RESULTS: fig:subord-ppl +[[file:build/subord-ppl-ru.pdf]] + *** Основополагающие принципы модели Модель конвейера обработки данных строится по следующим принципам, следование которым обеспечивает максимальную эффективность программы. diff --git a/phd-diss.org b/phd-diss.org @@ -1903,7 +1903,7 @@ thread pool that processes kernels in accordance with rules outlined in the previous paragraph. A separate pipeline is used for each device: There are pipelines for parallel processing, schedule-based processing (periodic and delayed tasks), and a proxy pipeline for processing of kernels on other cluster -nodes. +nodes (see figure [[fig:subord-ppl]]). In principle, kernels and pipelines machinery reflect the one of procedures and call stacks, with the advantage that kernel methods are called asynchronously @@ -1916,7 +1916,6 @@ replace active wait for completion of subordinate kernels with passive one. Pipelines, in turn, allow implementing passive wait, and call correct kernel methods by analysing their internal state. - #+name: fig:subord-ppl #+begin_src dot :exports results :file build/subord-ppl.pdf graph G { @@ -2024,6 +2023,7 @@ graph G { } #+end_src +#+caption: Mapping of parent and child process pipelines to compute devices. #+RESULTS: fig:subord-ppl [[file:build/subord-ppl.pdf]]