arma-thesis

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

commit 9cfb110214ad5ae89252656d36036877ccab5213
parent 8313823ac515cea7e020c55fdf013690505023a5
Author: Ivan Gankevich <igankevich@ya.ru>
Date:   Thu, 26 Jan 2017 18:34:34 +0300

Sync LB algo p3-4.

Diffstat:
bib/refs.bib | 16++++++++++++++++
phd-diss-ru.org | 60+++++++++++++++++++-----------------------------------------
phd-diss.org | 19+++++++++++++++++++
3 files changed, 54 insertions(+), 41 deletions(-)

diff --git a/bib/refs.bib b/bib/refs.bib @@ -1691,4 +1691,20 @@ year={2013}, pages={1-6}, doi={10.1109/CSITechnol.2013.6710358}, art_number={6710358}, +} + +@inbook{degtyarev2016balance, + author={Degtyarev, Alexander and Gankevich, Ivan}, + editor={Gavrilova, L. Marina and Tan, Kenneth C. J.}, + title={Balancing Load on a Multiprocessor System with Event-Driven Approach}, + bookTitle={Transactions on Computational Science XXVII}, + year={2016}, + publisher={Springer Berlin Heidelberg}, + address={Berlin, Heidelberg}, + pages={35--52}, + isbn={978-3-662-50412-3}, + doi={10.1007/978-3-662-50412-3_3}, + url={http://dx.doi.org/10.1007/978-3-662-50412-3_3}, + language={english}, + category={hpc} } \ No newline at end of file diff --git a/phd-diss-ru.org b/phd-diss-ru.org @@ -2061,49 +2061,27 @@ cite:malewicz2010pregel,seo2010hama. Конвейер позволяет иск размер частей, на которые разделяются входные данные, и учитывая все устройства, задействованные в вычислениях? -Для учета производительности всех компонент вычислительной системы и -неоднородности различных частей, на которые делятся входные и выходные данные, -распределение нагрузки можно провести в два этапа. На первом этапе часть входных -данных (или подзадача) направляется на соответствующее устройство, на которое -предполагается произвести нагрузку, например, видеокарту или процессор; если же -предполагается произвести нагрузку на устройство хранения, то подзадача -направляется на процессор или процессорное ядро, специально выделенное под такой -тип нагрузки. На втором этапе, когда тип устройства уже выбран, подзадача -распределяется на одно из доступных в системе устройств данного типа. Несмотря -на то, что на этом этапе подсистема в большинстве случаев является однородной -(состоящей из устройств одного типа), для учета неоднородных подзадач необходим -алгоритм распределения, который бы учитывал размер частей, на которые делится -задача. - -Такой алгоритм можно построить на основе алгоритма "заполнения" (англ. -backfill), который широко применяется для распределения нагрузки на узлы -вычислительного кластера, но для его эффективной работы в случае -многопроцессорной системы нужно произвести определенные модификации. Для расчета -времени решения задачи на кластере не существует надежного метода, и часто это -время задается вручную перед отправкой задачи в очередь cite:zotkin1999job, что -неприемлемо в случае многопроцессорной системы, и поэтому время решения -отдельных подзадач необходимо предсказать. Для получения надежного предсказания -можно воспользоваться любым подходящим статистическим методом и использовать -время выполнения предыдущих подзадач в качестве исходных данных. Для учета -неоднородной производительности устройств можно воспользоваться тем же методом, -только в качестве исходных данных взять производительность устройства на -предыдующих задачах (количество задач, завершенных в единицу времени). Чтобы -сократить накладные расходы, метод должен быть достаточно простым, и поэтому в -тестах был использовано осреднение $N$ последних значений характеристики. -Использование статистических методов в случае многопроцессорной системы -оправдано, поскольку в отличие от задач, решаемых на кластерах, время решения -подзадач достаточно мало, чтобы статистические методы работали эффективно. В -случае же кластерных систем ввиду очень большого времени решения одной задачи -использование статистических методов не может дать надежный результат, и -алгоритм "заполнения" работает эффективно для небольших задач -cite:zotkin1999job. +Алгоритм распределения нагрузки состоит из двух этапов. На первом этапе алгоритм +размещает часть входных данных (или подзадачу), обернутую в управляющий объект, +в соответствующем пуле управляющих объектов: для каждого устройства используется +отдельный пул управляющих объектов и сопряженный с ним пул потоков. На втором +этапе, управляющий объект извлекается из пула одним из потоков и обрабатывается. +Благодаря отдельным пулам потоков все устройства работают параллельно, уменьшая +тем самым время простоя оборудования по сравнению с использованием всех +устройств из одного потока. + +Для того чтобы учесть неоднородность частей, на которые разбиваются входные +данные, и неоднородность выполняемых задач, необходимо предсказать время +выполнения каждой из задач. Соответствующее исследование сделано в +cite:degtyarev2016balance, поскольку реализация модели АРСС включает в себя, в +основном, однородные задачи. Таким образом, распределение нагрузки осуществляется в два этапа: на первом -этапе задача направляется на соответствующее ее типу нагрузки устройство, а на -втором этапе она направляется на одно из выбранных устройств по алгоритму -распределения. Сам же алгоритм является алгоритмом "заполнения" с модификациями, -позволяющими автоматически предсказывать время выполнения задачи и -производительность устройств. +этапе задача в форме урпавляющего объекта направляется на подходящее устройство, +а на втором этапе она направляется в один из потоков из соответсвующего +устройству пула. Неоднородность управляющих объектов может быть учтена путем +предсказания времени их выполнения, однако такие объекты не встречаются в +реализации модели АРСС. *** Результаты тестирования **** Производительность реализаций на MPI, OpenMP и OpenCL. diff --git a/phd-diss.org b/phd-diss.org @@ -1975,6 +1975,25 @@ performance of all the components involved. So, how to make load balancing algorithm more efficient in the presence of non-homogeneous input data parts and take into account all the devices involved in the computation? +The load balancing algorithm consists of two stages. In the first stage, the +algorithm places input data part (or a subtask) wrapped in a kernel into an +appropriate kernel pool: there is a separate pool for each device and an +associated thread pool. In the second stage, a kernel is retrieved from the pool +by one of the threads and processed. Due to separate thread pools all devices +work in parallel to each other, lowering overall system resources downtime +compared to using all devices from a single thread. + +In order to take into account non-homogeneous input data parts or tasks, one may +predict execution time of each task. Relevant study is done in +cite:degtyarev2016balance since ARMA model implementation includes mostly +homogeneous tasks. + +So, load balancing is done in two stages: in the first stage the task wrapped in +the kernel is routed to the appropriate device and in the second stage the +kernel is routed to one of the thread from the device thread pool. +Non-homogeneous kernels may be handled by predicting their execution time, but +such kernels are not present in ARMA model implementation. + *** Evaluation **** Performance of MPI, OpenMP, OpenCL implementations. **** Performance of load balancing algorithm.