- •Питання:
- •Області застосування і задачі паралельної обробки
- •5. Рівні розпаралелювання
- •Рівень процедур
- •6. Паралельні операції
- •7. Основні принципи паралелізму (розпаралелення)
- •8. Класифікація структур паралельної обробки
- •Тема №2 “Методи оцінки продуктивності паралельних алгоритмів і систем” Питання:
- •2. Фактори, що необхідно враховувати при оцінці продуктивності
- •3. Методи оцінки продуктивності паралельних систем
- •4. Характеристики продуктивності паралельних алгоритмів.
- •Масштабність (Scaleup)
- •Визначення для варіантів програми, що мають різну величину
- •5. Порівняння mimd і simd структур за продуктивністю
- •Висновки
- •2. Прості мережі Петрі
- •3. Розширені мережі Петрі
- •4. Приклади реалізації мереж Петрі
- •Тема 4: Розробка паралельного алгоритму
- •1. Паралелізм даних
- •2. Паралелізм задач
- •3. Етапи розробки паралельного алгоритму
- •1. Паралелізм даних
- •2. Паралелізм задач
- •3. Етапи розробки паралельного алгоритму
- •Тема №5: Структури зв’язку між процесорами
- •2. Шинні мережі
- •3. Мережі з комутаторами
- •4. Структури, що забезпечують зв'язок типу "пункт-пункт"
- •5. Методи комутацій
- •Питання:
- •2. Масивно - паралельні системи (mpp)
- •Симетричні мультипроцесорні системи (smp)
- •Системи з неоднорідним доступом до пам'яті (numa)
- •Паралельні векторні системи (pvp)
- •Кластерні системи
- •Тема №7: Схеми паралельних алгоритмів задач. Питання:
- •1. Схеми алгоритмів задач
- •2. Алгоритми перемноження матриці на матрицю і їх реалізація на структурах типу: кільцева, 2d (решітка), 3d (куб)
- •Схеми алгоритмів задач
- •2. Алгоритми перемноження матриці на матрицю і їх реалізація на структурах типу: кільцева, 2d (решітка), 3d (куб)
- •7. Збір результатів у с
- •2.Scatter b координати 3. Broadcast підматриць a
- •4. Broadcast 5. Обчислення підматриць b добутків (підматриць в c)
- •6. Збір результатів в c
- •2. Scatter b 3. Broadcast підматриць з а
- •4. Broadcast підматриць з у 5. Обчислення добутків підматриць у с)
- •6. Reduce (підсумовування)добутків 7. Gather c (збір результатів)
- •Тема №8: Мови паралельного програмування Питання:
- •2. Класифікація мов і систем паралельного програмування
- •3. Особливості організації паралельної програми
- •4. Технології паралельного програмування Message Passing Interface (mpi)
- •5. Операції обміну повідомленнями
- •Висновки
- •Література
- •Додатки Додаток а
- •Додаток б концепції паралельної обробки Співпрограми
- •Fork (розгалуження, виникнення паралельних процесів) I Join (об’єднання)
- •Процеси
- •Дистанційний виклик
- •Неявна паралельність
- •Проблеми асинхронної паралельності
- •Несумісні дані
- •Втрачена модифікація даних
- •Блокування
- •Балансування завантаження
- •Проблеми синхронної паралельності
- •Індексовані векторні операції
- •Відображення віртуальних процесорів на фізичні процесори
- •Зменшення пропускної спроможності під час підключення периферійної апаратури
- •Ширина частотної смуги комутаційних мереж.
- •Робота в режимі багатьох користувачів і толерантність до помилок.
- •Організація паралельних обчислень Навчальний посібник
- •Розподілені обчислення
- •[Ред.]Список проектів розподілених обрахунків
- •[Ред.]Список українських проектів розподілених обчислень
- •[Ред.]Біологія та медицина
- •[Ред.]Математика та криптографія
- •[Ред.]Природничі науки
- •[Ред.]пз для організації розподілених обчислень
- •[Ред.]Дивіться також
- •[Ред.]Ресурси інтернету
- •Паралельні та розподілені обчислення
- •[Ред.]Симетрична багатопроцесорність
- •[Ред.]Розподілені обчислення
- •[Ред.]Кластерні обчислення
- •[Ред.]Масово паралельні обчислення
- •[Ред.]Обчислення Ґрід
- •[Ред.]Спеціальні паралельні комп'ютери
- •[Ред.]Посилання
- •Основні етапи проектування паралельних та розподілених алгоритмів
- •8.1. Декомпозиція
- •8.2. Зв'язок
- •8.3. Синхронізація
2. Алгоритми перемноження матриці на матрицю і їх реалізація на структурах типу: кільцева, 2d (решітка), 3d (куб)
Множення матриці на вектор і матриці на матрицю є базовими макроопераціями для багатьох задач лінійної алгебри, наприклад ітераційних методів розв’язання систем лінійних рівнянь і т.п. Тому приведені алгоритми тут можна розглядати як фрагменти в алгоритмах цих методів. Розглянемо три алгоритми множення матриці на матрицю. Розмаїтість варіантів алгоритмів виникає із-за розмаїтості обчислювальних систем і розмаїтості розмірів задач. Розглядаються і різні варіанти завантаження даних у систему: завантаження даних через один комп'ютер; і завантаження даних безпосередньо кожним комп'ютером з дискової пам'яті. Якщо завантаження даних здійснюється через один комп'ютер, то дані зчитуються цим комп'ютером з дискової пам'яті, розрізаються на частини, які розсилаються іншим комп'ютерам. Але дані можуть бути підготовлені і заздалегідь, тобто заздалегідь розрізані вроздріб і кожна частина записана на диск у виді окремого файлу зі своїм ім'ям; потім кожен комп'ютер безпосередньо зчитує з диска, призначений для нього файл.
Алгоритм 1- Перемноження матриці на матрицю на кільцевій структурі
Задано дві вихідні матриці A і B. Обчислюється добуток C = А х B, де А - матриця n1 х n2, і B - матриця n2 х n3. Матриця результатів C має розмір n1 х n3. Вихідні матриці попередньо розрізані на смуги, смуги записані на дискову пам'ять окремими файлами зі своїми іменами і доступні всім комп'ютерам. Матриця результатів повертається в нульовий процес.
Реалізація алгоритму виконується на кільці з p1 комп'ютерів. Матриці розрізані як показане на рис. 7.1: матриця А розрізана на p1 горизонтальних смуг, матриця B розрізана на p1 вертикальних смуг, і матриця результату C розрізана на p1 смуги. Тут передбачається, що в пам'ять кожного комп'ютера завантажується і може знаходитися тільки одна смуга матриці А і одна смуга матриці B.
Рис. 7.1 Розрізування даних для паралельного алгоритму добутку двох матриць при обчисленні на кільці комп'ютерів. Виділені смуги розташовані в одному комп'ютері.
Оскільки за умовою в комп'ютерах знаходиться по одній смузі матриць, то смуги матриці B (або смуги матриці A) необхідно "прокрутити" по кільцю комп'ютерів повз смуги матриці A (матриці B). Кожний зсув смуг уздовж кільця і відповідна операція множення наведена на рис.7.2 у виді окремого кроку. На кожному з таких кроків обчислюється тільки частина смуги. Процес i обчислює на j-м кроці добуток i-й горизонтальної смуги матриці A j-ї вертикальної смуги матриці B, добуток отриманий у підматриці(i,j) матриці C.
Обчислення відбувається в такій послідовності.
1. Кожен комп'ютер зчитує з дискової пам’яті відповідну йому смугу матриці А. Нульова смуга повинна зчитуватися нульовим комп'ютером, перша смуга - першим комп'ютером і т.д., остання смуга - зчитується останнім комп'ютером. На рис. 7.2 смуги матриці А і B пронумеровані.
2. Кожен комп'ютер зчитує з дискової пам’яті відповідну йому смугу матриці B. У даному випадку нульова смуга повинна зчитуватися нульовим комп'ютером, перша смуга - першим комп'ютером і т.д., остання смуга - зчитується останнім комп'ютером.
3. Обчислювальний крок 1. Кожен процес обчислює одну підматрицю добутку. Вертикальні смуги матриці B зсуваються уздовж кільця комп'ютерів.
4. Обчислювальний крок 2. Кожен процес обчислює одну підматрицю добутку. Вертикальні смуги матриці B зсуваються уздовж кільця комп'ютерів. І т.д.
5. Обчислювальний крок p1-1. Кожен процес обчислює одну підматрицю добутку. Вертикальні смуги матриці B зсуваються уздовж кільця комп'ютерів.
6. Обчислювальний крок p1. Кожен процес обчислює одну підматрицю добутку. Вертикальні смуги матриці B зсуваються уздовж кільця комп'ютерів.
7. Матриця C збирається в нульовому комп'ютері.
1. scatter A 2. scatter B