SlideShare a Scribd company logo
1 of 16
Download to read offline
Расчет минимального времени выполнения задач
при оптимальном распределении нагрузки между
процессорами
Андрей Карпов, февраль 2008
Аннотация
В статье кратко рассмотрены методы расчета минимального времени выполнения задач при оптимальном
распределении нагрузки между процессорами. Приведенные методы могут применяться для однородных и
неоднородных вычислительных систем.
Читателю
Данный документ является частью серии статей, посвященных вопросам создания качественных и
эффективных программных решений для современных 64-битных многоядерных систем. Ознакомиться с
другими статьями вы можете на сайте http://www.viva64.com.
Введение
Несмотря на огромную вычислительную мощность современных компьютеров, существуют задачи, решение
которых в последовательном режиме занимает много времени. Время решения подобных задач можно
существенно сократить, если использовать для расчётов возможности современных многоядерных
процессоров. Для того, чтобы в полной мере использовать преимущества, предоставляемые
многоядерностью, необходимо переработать алгоритмы решения задач с учётом возможности параллельной
обработки данных несколькими процессорами одновременно. Не менее важно распределить вычисления
таким образом, чтобы каждый процессор использовался наиболее полно, а суммарное время решения задачи
стремилось к минимуму. В статье обзорно рассмотрены методы расчета минимального времени выполнения
задач при их оптимальном распределении между вычислительными узлами. Учтены ситуации, когда на одной
системе выполняются несколько параллельных задач, занимая часть ресурсов вычислительных узлов. В этом
случае система считается гетерогенной (неоднородной), по отношению к интересующей нас программе.
1. Независимые вычисления одинаковой трудности на гомогенных вычислительных
узлах
Пусть имеется N независимых вычислений одинаковой трудности. Необходимо распределить их между P
процессорами, которые имеют одинаковую вычислительную мощность (рисунок 1).
Естественным решением этой задачи является назначение каждому процессору вычислений.
Рисунок 1. Распределение независимых вычислений одинаковой трудности на гомогенных вычислительных
узлах.
Однако данное решение приемлемо только в том случае, если N делится на P без остатка . В
противном случае, остается от 1 до неназначенных вычислений. Будет ошибкой назначить все оставшиеся
вычисления какому-либо одному процессору, так как в этом случае время окончания всех вычислений будет
равно . Правильнее распределить оставшиеся вычисления по одному на каждый из
процессоров. При этом время окончания всех вычислений будет равно . Очевидно,
что , поэтому второй способ может оказаться значительно выгоднее.
2. Независимые вычисления одинаковой трудности на гетерогенных
вычислительных узлах
Пусть имеется N независимых вычислений одинаковой трудности. Необходимо распределить их между P
процессорами, которые имеют различные вычислительные мощности (рисунок 2).
Рисунок 2. Распределение независимых вычислений одинаковой трудности на гетерогенных вычислительных
узлах.
Время, затрачиваемое процессором с вычислительной мощностью на выполнение одного вычисления
равно . Таким образом, необходимо разбить вычисления на P групп по вычислений в каждой так,
чтобы время окончания всех вычислений было минимально, т.е.:
3. Независимые вычисления различной трудности на гомогенных вычислительных
узлах
Пусть имеется N независимых вычислений различной трудности . Необходимо распределить их
между P процессорами, которые имеют одинаковую вычислительную мощность (рисунок 3).
Рисунок 3. Распределение независимых вычислений различной трудности на гомогенных вычислительных
узлах.
Чтобы время окончания всех вычислений было минимальным, необходимо, чтобы все P процессоров были
загружены наиболее равномерно, то есть каждому из процессоров было назначены вычисления примерно
одинакового объёма.
Таким образом задача сводится к следующему: необходимо разбить вычисления на P групп по вычислений
в каждой , так чтобы:
где — трудность j-го вычисления в -й группе.
4. Независимые вычисления различной трудности на гетерогенных вычислительных
узлах
Пусть имеется N независимых вычислений различной трудности (рисунок 4).
Рисунок 4. Распределение независимых вычислений различной трудности на гетерогенных вычислительных
узлах.
Время, затрачиваемое процессором с вычислительной мощностью на выполнение одного вычисления
сложностью равно Чтобы время окончания всех вычислений было минимальным, необходимо, чтобы
все процессоры закончили вычисления примерно в одно и то же время.
Таким образом, задача сводится к следующему: необходимо разбить вычисления на P групп по вычислений
в каждой , так чтобы:
где — трудность j-го вычисления в -й группе.
5. Зависимые вычисления одинаковой трудности на гомогенных вычислительных
узлах
Пусть имеется N зависимых вычислений, таких, что вычисление k-го шага для i-го вычисления требует
результата k-го шага для (i-1)-го вычисления, т.е. с сохранением порядка следования
элементов таким образом, чтобы: где — — мощность подмножества .
6. Зависимые вычисления одинаковой трудности на гетерогенных вычислительных
узлах
Пусть имеется N зависимых вычислений, таких, что вычисление k-го шага для i-го вычисления требует
результата k-го шага для (i-1)-го вычисления, т.е. .
Задачу распределения вычислений по процессорам в этом случае можно сформулировать следующим
образом:
Упорядоченное множество вычислений C необходимо разбить на P непересекающихся упорядоченных
подмножеств с сохранением порядка следования элементов таким образом, чтобы:
где — мощность подмножества . То есть максимальная разница во времени выполнения вычислений в
соседних подмножествах должна быть минимальна.
7. Зависимые вычисления различной трудности на гомогенных вычислительных
узлах
Пусть имеется N зависимых вычислений, таких, что вычисление k-го шага для i-го вычисления требует
результата k-го шага для (i-1)-го вычисления, т.е. Пусть также имеется P процессоров, которые
имеют одинаковые вычислительные мощности.
Задачу распределения вычислений по процессорам в этом случае можно сформулировать следующим
образом: Упорядоченное множество вычислений C необходимо разбить на P непересекающихся
упорядоченных подмножеств с сохранением порядка следования элементов таким образом, чтобы:
где — трудность вычислений, входящих в подмножество
8. Зависимые вычисления различной трудности на гетерогенных вычислительных
узлах
Пусть имеется N зависимых вычислений, таких, что вычисление k-го шага для i-го вычисления требует
результата k-го шага для (i-1)-го вычисления, т.е. . Задача распределения вычислений по
процессорам в этом случае формулируется следующим образом - упорядоченное множество вычислений C
необходимо разбить на P непересекающихся упорядоченных подмножеств с сохранением порядка
следования элементов таким образом, чтобы:
где — трудность вычислений, входящих в подмножество
Дополнительные ресурсы:
 Якобовский М.В., Суков С.А. Динамическая балансировка загрузки // Материалы конференции
"Высокопроизводительные вычисления и их приложения", г. Черноголовка, 2000, С. 34-39.
 Иванников В.П., Ковалевский Н.С., Метельский В.М. О минимальном времени реализации
распределенных конкурирующих процессов в синхронных режимах. // Программирование. 2000, N 5, с.
44-52.
 Таненбаум Э. Распределенные системы. Принципы и парадигмы. - СПб.: Питер, 2003. - 877 с.
 Букатов А. А., Дацюк В. Н., Жегуло А. И. Программирование многопроцессорных вычислительных систем.
Ростов-на-Дону. Издательство ООО "ЦВВР", 2003, 208 с.
 Немнюгин С.А., Стесик О.Л. Параллельное программирование для многопроцессорных вычислительных
систем. - СПб.: БХВ-Петербург, 2002. - 400с.
Об авторе
Карпов Андрей Николаевич, http://www.viva64.com
Занимается вопросами создания программных решений в области повышения качества и быстродействия
ресурсоемких приложений. Является одним из разработчиков статического анализатора Viva64 для
верификации 64-битного программного обеспечения. Участвует в разработке открытой библиотеки VivaCore
для работы с Си/Си++ кодом.

More Related Content

What's hot

Multiprocessor Programming Intro (lecture 1)
Multiprocessor Programming Intro (lecture 1)Multiprocessor Programming Intro (lecture 1)
Multiprocessor Programming Intro (lecture 1)
Dmitry Tsitelov
 
Использование Time-Stamp Counter для измерения времени выполнения кода на пр...
Использование Time-Stamp Counter для измерения времени выполнения кода  на пр...Использование Time-Stamp Counter для измерения времени выполнения кода  на пр...
Использование Time-Stamp Counter для измерения времени выполнения кода на пр...
Mikhail Kurnosov
 
Introduction in CUDA (1-3)
Introduction in CUDA (1-3)Introduction in CUDA (1-3)
Introduction in CUDA (1-3)
Alexander Mezhov
 
Лекция 3: Векторизация кода (Code vectorization, SIMD, SSE, AVX)
Лекция 3: Векторизация кода (Code vectorization, SIMD, SSE, AVX)Лекция 3: Векторизация кода (Code vectorization, SIMD, SSE, AVX)
Лекция 3: Векторизация кода (Code vectorization, SIMD, SSE, AVX)
Mikhail Kurnosov
 

What's hot (17)

Интервью с Анатолием Кузнецовым, автором библиотеки BitMagic C++ Library
Интервью с Анатолием Кузнецовым, автором библиотеки BitMagic C++ LibraryИнтервью с Анатолием Кузнецовым, автором библиотеки BitMagic C++ Library
Интервью с Анатолием Кузнецовым, автором библиотеки BitMagic C++ Library
 
Multiprocessor Programming Intro (lecture 1)
Multiprocessor Programming Intro (lecture 1)Multiprocessor Programming Intro (lecture 1)
Multiprocessor Programming Intro (lecture 1)
 
Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, paral...
Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, paral...Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, paral...
Лекция 5. Основы параллельного программирования (Speedup, Amdahl's law, paral...
 
Семинар 1. Многопоточное программирование на OpenMP (часть 1)
Семинар 1. Многопоточное программирование на OpenMP (часть 1)Семинар 1. Многопоточное программирование на OpenMP (часть 1)
Семинар 1. Многопоточное программирование на OpenMP (часть 1)
 
Лекция 4. Векторизация кода (Code vectorization: SSE, AVX)
Лекция 4. Векторизация кода (Code vectorization: SSE, AVX)Лекция 4. Векторизация кода (Code vectorization: SSE, AVX)
Лекция 4. Векторизация кода (Code vectorization: SSE, AVX)
 
Использование Time-Stamp Counter для измерения времени выполнения кода на пр...
Использование Time-Stamp Counter для измерения времени выполнения кода  на пр...Использование Time-Stamp Counter для измерения времени выполнения кода  на пр...
Использование Time-Stamp Counter для измерения времени выполнения кода на пр...
 
Лекция 2. Оптимизация ветвлений и циклов (Branch prediction and loop optimiz...
Лекция 2. Оптимизация ветвлений и циклов (Branch prediction and loop optimiz...Лекция 2. Оптимизация ветвлений и циклов (Branch prediction and loop optimiz...
Лекция 2. Оптимизация ветвлений и циклов (Branch prediction and loop optimiz...
 
Лекция 3. Оптимизация доступа к памяти (Memory access optimization, cache opt...
Лекция 3. Оптимизация доступа к памяти (Memory access optimization, cache opt...Лекция 3. Оптимизация доступа к памяти (Memory access optimization, cache opt...
Лекция 3. Оптимизация доступа к памяти (Memory access optimization, cache opt...
 
Introduction in CUDA (1-3)
Introduction in CUDA (1-3)Introduction in CUDA (1-3)
Introduction in CUDA (1-3)
 
Векторизация кода (семинар 1)
Векторизация кода (семинар 1)Векторизация кода (семинар 1)
Векторизация кода (семинар 1)
 
Архитектура и программирование потоковых многоядерных процессоров для научных...
Архитектура и программирование потоковых многоядерных процессоров для научных...Архитектура и программирование потоковых многоядерных процессоров для научных...
Архитектура и программирование потоковых многоядерных процессоров для научных...
 
Simd
SimdSimd
Simd
 
Семинар 11. Параллельное программирование на MPI (часть 4)
Семинар 11. Параллельное программирование на MPI (часть 4)Семинар 11. Параллельное программирование на MPI (часть 4)
Семинар 11. Параллельное программирование на MPI (часть 4)
 
CUDA Best Practices (2-3)
CUDA Best Practices (2-3)CUDA Best Practices (2-3)
CUDA Best Practices (2-3)
 
Семинар 5. Многопоточное программирование на OpenMP (часть 5)
Семинар 5. Многопоточное программирование на OpenMP (часть 5)Семинар 5. Многопоточное программирование на OpenMP (часть 5)
Семинар 5. Многопоточное программирование на OpenMP (часть 5)
 
CUDA-Aware MPI
CUDA-Aware MPICUDA-Aware MPI
CUDA-Aware MPI
 
Лекция 3: Векторизация кода (Code vectorization, SIMD, SSE, AVX)
Лекция 3: Векторизация кода (Code vectorization, SIMD, SSE, AVX)Лекция 3: Векторизация кода (Code vectorization, SIMD, SSE, AVX)
Лекция 3: Векторизация кода (Code vectorization, SIMD, SSE, AVX)
 

Viewers also liked

Brandon Seteven Mejia R acondicionamiento fisico 11-01 Colegio:bravo paez
Brandon Seteven Mejia R acondicionamiento fisico   11-01 Colegio:bravo paezBrandon Seteven Mejia R acondicionamiento fisico   11-01 Colegio:bravo paez
Brandon Seteven Mejia R acondicionamiento fisico 11-01 Colegio:bravo paez
jhasbleidyptte
 
20150610 febelmar privacy matters eu regulation
20150610 febelmar privacy matters eu regulation20150610 febelmar privacy matters eu regulation
20150610 febelmar privacy matters eu regulation
Febelmar
 

Viewers also liked (15)

Brandon Seteven Mejia R acondicionamiento fisico 11-01 Colegio:bravo paez
Brandon Seteven Mejia R acondicionamiento fisico   11-01 Colegio:bravo paezBrandon Seteven Mejia R acondicionamiento fisico   11-01 Colegio:bravo paez
Brandon Seteven Mejia R acondicionamiento fisico 11-01 Colegio:bravo paez
 
Febelmar neuro event haystack October 8 2015
Febelmar neuro event haystack October 8 2015Febelmar neuro event haystack October 8 2015
Febelmar neuro event haystack October 8 2015
 
Aqr more 150526_febelmar
Aqr more 150526_febelmarAqr more 150526_febelmar
Aqr more 150526_febelmar
 
Resource Recommendation System
Resource Recommendation SystemResource Recommendation System
Resource Recommendation System
 
The static code analysis rules for diagnosing potentially unsafe construction...
The static code analysis rules for diagnosing potentially unsafe construction...The static code analysis rules for diagnosing potentially unsafe construction...
The static code analysis rules for diagnosing potentially unsafe construction...
 
20150610 febelmar privacy matters eu regulation
20150610 febelmar privacy matters eu regulation20150610 febelmar privacy matters eu regulation
20150610 febelmar privacy matters eu regulation
 
2016 09 29 febelmar advertising effectiveness intro
2016 09 29 febelmar advertising effectiveness intro2016 09 29 febelmar advertising effectiveness intro
2016 09 29 febelmar advertising effectiveness intro
 
Параллельные алгоритмы обработки данных
Параллельные алгоритмы обработки данныхПараллельные алгоритмы обработки данных
Параллельные алгоритмы обработки данных
 
Como recuperar a una mujer las 7 estrategias explosivas
Como recuperar a una mujer las 7 estrategias explosivasComo recuperar a una mujer las 7 estrategias explosivas
Como recuperar a una mujer las 7 estrategias explosivas
 
Правила статического анализа кода для диагностики потенциально опасных констр...
Правила статического анализа кода для диагностики потенциально опасных констр...Правила статического анализа кода для диагностики потенциально опасных констр...
Правила статического анализа кода для диагностики потенциально опасных констр...
 
Ipsos implicit politicians neuro event October 8 2015
Ipsos implicit  politicians neuro event October 8 2015Ipsos implicit  politicians neuro event October 8 2015
Ipsos implicit politicians neuro event October 8 2015
 
2016 09 29 kantar tns navigating the touchpoint revolution
2016 09 29 kantar tns navigating the touchpoint revolution2016 09 29 kantar tns navigating the touchpoint revolution
2016 09 29 kantar tns navigating the touchpoint revolution
 
GfK facial coding Febelmar neuro event October 8 2015
GfK facial coding   Febelmar neuro event October 8 2015GfK facial coding   Febelmar neuro event October 8 2015
GfK facial coding Febelmar neuro event October 8 2015
 
Bbi plus plan bk eng pg1 28 r2 lr
Bbi plus plan bk eng pg1 28 r2 lrBbi plus plan bk eng pg1 28 r2 lr
Bbi plus plan bk eng pg1 28 r2 lr
 
2016 09 29 ipsos fine tuning your multi touchpoint campaign to maximize impact
2016 09 29 ipsos fine tuning your multi touchpoint campaign to maximize impact2016 09 29 ipsos fine tuning your multi touchpoint campaign to maximize impact
2016 09 29 ipsos fine tuning your multi touchpoint campaign to maximize impact
 

Similar to Расчет минимального времени выполнения задач при оптимальном распределении нагрузки между процессорами

Обработка приватных данных на публичных вычислительных сетях
Обработка приватных данных на публичных вычислительных сетяхОбработка приватных данных на публичных вычислительных сетях
Обработка приватных данных на публичных вычислительных сетях
Dmitry Protopopov
 
якобовский - введение в параллельное программирование (1)
якобовский - введение в параллельное программирование (1)якобовский - введение в параллельное программирование (1)
якобовский - введение в параллельное программирование (1)
Michael Karpov
 
C++ весна 2014 лекция 2
C++ весна 2014 лекция 2C++ весна 2014 лекция 2
C++ весна 2014 лекция 2
Technopark
 
Лекция 7: Многопоточное программирование: часть 3 (OpenMP)
Лекция 7: Многопоточное программирование: часть 3 (OpenMP)Лекция 7: Многопоточное программирование: часть 3 (OpenMP)
Лекция 7: Многопоточное программирование: часть 3 (OpenMP)
Mikhail Kurnosov
 
Лекция 7: Фибоначчиевы кучи (Fibonacci heaps)
Лекция 7: Фибоначчиевы кучи (Fibonacci heaps)Лекция 7: Фибоначчиевы кучи (Fibonacci heaps)
Лекция 7: Фибоначчиевы кучи (Fibonacci heaps)
Mikhail Kurnosov
 
27
2727
27
JIuc
 
20090720 hpc exercise1
20090720 hpc exercise120090720 hpc exercise1
20090720 hpc exercise1
Michael Karpov
 
Лекция 6: Многопоточное программирование: часть 2 (Speedup, Amdahl's law, POS...
Лекция 6: Многопоточное программирование: часть 2 (Speedup, Amdahl's law, POS...Лекция 6: Многопоточное программирование: часть 2 (Speedup, Amdahl's law, POS...
Лекция 6: Многопоточное программирование: часть 2 (Speedup, Amdahl's law, POS...
Mikhail Kurnosov
 

Similar to Расчет минимального времени выполнения задач при оптимальном распределении нагрузки между процессорами (20)

лекция 7
лекция 7лекция 7
лекция 7
 
Tbb лр1
Tbb   лр1Tbb   лр1
Tbb лр1
 
Обработка приватных данных на публичных вычислительных сетях
Обработка приватных данных на публичных вычислительных сетяхОбработка приватных данных на публичных вычислительных сетях
Обработка приватных данных на публичных вычислительных сетях
 
Работа с Big Data
Работа с Big Data Работа с Big Data
Работа с Big Data
 
01 готовимся к экзамену по информатике. теория. задачи 2002
01  готовимся к экзамену по информатике. теория. задачи 200201  готовимся к экзамену по информатике. теория. задачи 2002
01 готовимся к экзамену по информатике. теория. задачи 2002
 
Вечный вопрос измерения времени
Вечный вопрос измерения времениВечный вопрос измерения времени
Вечный вопрос измерения времени
 
якобовский - введение в параллельное программирование (1)
якобовский - введение в параллельное программирование (1)якобовский - введение в параллельное программирование (1)
якобовский - введение в параллельное программирование (1)
 
C++ весна 2014 лекция 2
C++ весна 2014 лекция 2C++ весна 2014 лекция 2
C++ весна 2014 лекция 2
 
Разработка ресурсоемких приложений в среде Visual C++
Разработка ресурсоемких приложений в среде Visual C++Разработка ресурсоемких приложений в среде Visual C++
Разработка ресурсоемких приложений в среде Visual C++
 
РЕАЛИЗАЦИЯ РАДИАЛЬНО-БАЗИСНОЙ НЕЙРОННОЙ СЕТИ НА МАССИВНО-ПАРАЛЛЕЛЬНОЙ АРХИТЕК...
РЕАЛИЗАЦИЯ РАДИАЛЬНО-БАЗИСНОЙ НЕЙРОННОЙ СЕТИ НА МАССИВНО-ПАРАЛЛЕЛЬНОЙ АРХИТЕК...РЕАЛИЗАЦИЯ РАДИАЛЬНО-БАЗИСНОЙ НЕЙРОННОЙ СЕТИ НА МАССИВНО-ПАРАЛЛЕЛЬНОЙ АРХИТЕК...
РЕАЛИЗАЦИЯ РАДИАЛЬНО-БАЗИСНОЙ НЕЙРОННОЙ СЕТИ НА МАССИВНО-ПАРАЛЛЕЛЬНОЙ АРХИТЕК...
 
Параллельные и распределенные вычисления
Параллельные и распределенные вычисленияПараллельные и распределенные вычисления
Параллельные и распределенные вычисления
 
Лекция 7: Многопоточное программирование: часть 3 (OpenMP)
Лекция 7: Многопоточное программирование: часть 3 (OpenMP)Лекция 7: Многопоточное программирование: часть 3 (OpenMP)
Лекция 7: Многопоточное программирование: часть 3 (OpenMP)
 
Лекция 7: Фибоначчиевы кучи (Fibonacci heaps)
Лекция 7: Фибоначчиевы кучи (Fibonacci heaps)Лекция 7: Фибоначчиевы кучи (Fibonacci heaps)
Лекция 7: Фибоначчиевы кучи (Fibonacci heaps)
 
27
2727
27
 
20090720 hpc exercise1
20090720 hpc exercise120090720 hpc exercise1
20090720 hpc exercise1
 
лекция 11
лекция 11лекция 11
лекция 11
 
01 вводная
01 вводная01 вводная
01 вводная
 
Многопроцессорным компьютерам - параллельные программы!
Многопроцессорным компьютерам -  параллельные программы!Многопроцессорным компьютерам -  параллельные программы!
Многопроцессорным компьютерам - параллельные программы!
 
Лекция 6: Многопоточное программирование: часть 2 (Speedup, Amdahl's law, POS...
Лекция 6: Многопоточное программирование: часть 2 (Speedup, Amdahl's law, POS...Лекция 6: Многопоточное программирование: часть 2 (Speedup, Amdahl's law, POS...
Лекция 6: Многопоточное программирование: часть 2 (Speedup, Amdahl's law, POS...
 
сортировка слияниями
сортировка слияниямисортировка слияниями
сортировка слияниями
 

Расчет минимального времени выполнения задач при оптимальном распределении нагрузки между процессорами

  • 1. Расчет минимального времени выполнения задач при оптимальном распределении нагрузки между процессорами Андрей Карпов, февраль 2008
  • 2. Аннотация В статье кратко рассмотрены методы расчета минимального времени выполнения задач при оптимальном распределении нагрузки между процессорами. Приведенные методы могут применяться для однородных и неоднородных вычислительных систем. Читателю Данный документ является частью серии статей, посвященных вопросам создания качественных и эффективных программных решений для современных 64-битных многоядерных систем. Ознакомиться с другими статьями вы можете на сайте http://www.viva64.com.
  • 3. Введение Несмотря на огромную вычислительную мощность современных компьютеров, существуют задачи, решение которых в последовательном режиме занимает много времени. Время решения подобных задач можно существенно сократить, если использовать для расчётов возможности современных многоядерных процессоров. Для того, чтобы в полной мере использовать преимущества, предоставляемые многоядерностью, необходимо переработать алгоритмы решения задач с учётом возможности параллельной обработки данных несколькими процессорами одновременно. Не менее важно распределить вычисления таким образом, чтобы каждый процессор использовался наиболее полно, а суммарное время решения задачи стремилось к минимуму. В статье обзорно рассмотрены методы расчета минимального времени выполнения задач при их оптимальном распределении между вычислительными узлами. Учтены ситуации, когда на одной системе выполняются несколько параллельных задач, занимая часть ресурсов вычислительных узлов. В этом случае система считается гетерогенной (неоднородной), по отношению к интересующей нас программе.
  • 4. 1. Независимые вычисления одинаковой трудности на гомогенных вычислительных узлах Пусть имеется N независимых вычислений одинаковой трудности. Необходимо распределить их между P процессорами, которые имеют одинаковую вычислительную мощность (рисунок 1). Естественным решением этой задачи является назначение каждому процессору вычислений. Рисунок 1. Распределение независимых вычислений одинаковой трудности на гомогенных вычислительных узлах.
  • 5. Однако данное решение приемлемо только в том случае, если N делится на P без остатка . В противном случае, остается от 1 до неназначенных вычислений. Будет ошибкой назначить все оставшиеся вычисления какому-либо одному процессору, так как в этом случае время окончания всех вычислений будет равно . Правильнее распределить оставшиеся вычисления по одному на каждый из процессоров. При этом время окончания всех вычислений будет равно . Очевидно, что , поэтому второй способ может оказаться значительно выгоднее.
  • 6. 2. Независимые вычисления одинаковой трудности на гетерогенных вычислительных узлах Пусть имеется N независимых вычислений одинаковой трудности. Необходимо распределить их между P процессорами, которые имеют различные вычислительные мощности (рисунок 2). Рисунок 2. Распределение независимых вычислений одинаковой трудности на гетерогенных вычислительных узлах.
  • 7. Время, затрачиваемое процессором с вычислительной мощностью на выполнение одного вычисления равно . Таким образом, необходимо разбить вычисления на P групп по вычислений в каждой так, чтобы время окончания всех вычислений было минимально, т.е.:
  • 8. 3. Независимые вычисления различной трудности на гомогенных вычислительных узлах Пусть имеется N независимых вычислений различной трудности . Необходимо распределить их между P процессорами, которые имеют одинаковую вычислительную мощность (рисунок 3). Рисунок 3. Распределение независимых вычислений различной трудности на гомогенных вычислительных узлах.
  • 9. Чтобы время окончания всех вычислений было минимальным, необходимо, чтобы все P процессоров были загружены наиболее равномерно, то есть каждому из процессоров было назначены вычисления примерно одинакового объёма. Таким образом задача сводится к следующему: необходимо разбить вычисления на P групп по вычислений в каждой , так чтобы: где — трудность j-го вычисления в -й группе.
  • 10. 4. Независимые вычисления различной трудности на гетерогенных вычислительных узлах Пусть имеется N независимых вычислений различной трудности (рисунок 4). Рисунок 4. Распределение независимых вычислений различной трудности на гетерогенных вычислительных узлах.
  • 11. Время, затрачиваемое процессором с вычислительной мощностью на выполнение одного вычисления сложностью равно Чтобы время окончания всех вычислений было минимальным, необходимо, чтобы все процессоры закончили вычисления примерно в одно и то же время. Таким образом, задача сводится к следующему: необходимо разбить вычисления на P групп по вычислений в каждой , так чтобы: где — трудность j-го вычисления в -й группе.
  • 12. 5. Зависимые вычисления одинаковой трудности на гомогенных вычислительных узлах Пусть имеется N зависимых вычислений, таких, что вычисление k-го шага для i-го вычисления требует результата k-го шага для (i-1)-го вычисления, т.е. с сохранением порядка следования элементов таким образом, чтобы: где — — мощность подмножества .
  • 13. 6. Зависимые вычисления одинаковой трудности на гетерогенных вычислительных узлах Пусть имеется N зависимых вычислений, таких, что вычисление k-го шага для i-го вычисления требует результата k-го шага для (i-1)-го вычисления, т.е. . Задачу распределения вычислений по процессорам в этом случае можно сформулировать следующим образом: Упорядоченное множество вычислений C необходимо разбить на P непересекающихся упорядоченных подмножеств с сохранением порядка следования элементов таким образом, чтобы: где — мощность подмножества . То есть максимальная разница во времени выполнения вычислений в соседних подмножествах должна быть минимальна.
  • 14. 7. Зависимые вычисления различной трудности на гомогенных вычислительных узлах Пусть имеется N зависимых вычислений, таких, что вычисление k-го шага для i-го вычисления требует результата k-го шага для (i-1)-го вычисления, т.е. Пусть также имеется P процессоров, которые имеют одинаковые вычислительные мощности. Задачу распределения вычислений по процессорам в этом случае можно сформулировать следующим образом: Упорядоченное множество вычислений C необходимо разбить на P непересекающихся упорядоченных подмножеств с сохранением порядка следования элементов таким образом, чтобы: где — трудность вычислений, входящих в подмножество
  • 15. 8. Зависимые вычисления различной трудности на гетерогенных вычислительных узлах Пусть имеется N зависимых вычислений, таких, что вычисление k-го шага для i-го вычисления требует результата k-го шага для (i-1)-го вычисления, т.е. . Задача распределения вычислений по процессорам в этом случае формулируется следующим образом - упорядоченное множество вычислений C необходимо разбить на P непересекающихся упорядоченных подмножеств с сохранением порядка следования элементов таким образом, чтобы: где — трудность вычислений, входящих в подмножество
  • 16. Дополнительные ресурсы:  Якобовский М.В., Суков С.А. Динамическая балансировка загрузки // Материалы конференции "Высокопроизводительные вычисления и их приложения", г. Черноголовка, 2000, С. 34-39.  Иванников В.П., Ковалевский Н.С., Метельский В.М. О минимальном времени реализации распределенных конкурирующих процессов в синхронных режимах. // Программирование. 2000, N 5, с. 44-52.  Таненбаум Э. Распределенные системы. Принципы и парадигмы. - СПб.: Питер, 2003. - 877 с.  Букатов А. А., Дацюк В. Н., Жегуло А. И. Программирование многопроцессорных вычислительных систем. Ростов-на-Дону. Издательство ООО "ЦВВР", 2003, 208 с.  Немнюгин С.А., Стесик О.Л. Параллельное программирование для многопроцессорных вычислительных систем. - СПб.: БХВ-Петербург, 2002. - 400с. Об авторе Карпов Андрей Николаевич, http://www.viva64.com Занимается вопросами создания программных решений в области повышения качества и быстродействия ресурсоемких приложений. Является одним из разработчиков статического анализатора Viva64 для верификации 64-битного программного обеспечения. Участвует в разработке открытой библиотеки VivaCore для работы с Си/Си++ кодом.