Введение
1 Планирование в системах динамического распараллеливания программ 11
1.1 Задача динамического планирования 15
1.2 Локальность исполнения 18
1.3 Методы планирования 19
1.4 Автоматизированное динамическое распараллеливание программ . 20
1.4.1 MPI 20
1.4.2 Cilk 22
1.4.3 Charm++ 25
1.4.4 GUM 28
1.4.5 Т-подход 31
1.4.6 Программный комплекс NewTS 35
2 Планирование исполнения параллельных программ 36
2.1 Модель процесса исполнения Т-программы 39
2.2 Жадные планы исполнения 43
2.3 Модель с различной производительностью узлов 53
2.4 Распределенное планирование 63
2.5 Балансирующий планировщик 72
2.6 Планировщик Fishing 73
2.6.1 Алгоритм планировщика Fishing 73
2.6.2 Выбор узла для запроса задачи 74
2.6.3 Выбор узла для запроса задачи в распределенной системе . 75
2.7 Режим неблокирующего исполнения 76
2.8 Выводы 77
3 Включение задач 79
3.1 Пример мелкозернистой программы 79
3.2 Методы включения задач 81
3.2.1 Ленивое порождение задач 81
3.2.2 Ленивый RPC 82
3.2.3 Метод включения, основанный на анализе загрузки 83
3.3 Механизмы включения задач в NewTS 83
3.3.1 Корректность включения задач 85
3.4 Реализация включения задач в NewTS 86
3.4.1 Препроцессор NewTS 86
3.4.2 Включение задач 88
3.4.3 Корректное включение задач 88
3.4.4 Оптимизация включения задач 90
3.4.5 Дальнейшая оптимизация 94
3.4.6 Автоматический выбор гранулы параллелизма 96
4 Программная реализация планировщиков NewTS 99
4.1 Очередь задач 99
4.2 Интерфейс планировщика 100
4.3 Интерфейс модуля планирования 101
4.4 Реализация балансирующего планировщика 102
4.5 Реализация планировщика Fishing 103
5 Практические испытания планировщиков NewTS 106
5.1 Тестовая программа ЕР 107
5.2 Программа RT 110
5.3 Программный комплекс Vortex Ill
5.4 Модельная программа prgdemo 114
5.5 Зависимость от числа задач 115
5.6 Параметры планировщика Fishing 118
5.7 Режим неблокирующего исполнения 121
5.8 Испытания на неоднородной системе 125
5.9 Выводы


