- •Тема 1. Вступ в паралельні та розподілені обчислення.
- •Поняття паралелізму.
- •Два узагальнені підходи до досягнення паралельності.
- •3. Переваги паралельних обчислень
- •4. Найпростіша модель розпаралелення
- •Переваги розподілених обчислень.
- •6. Найпростіші моделі розподілених обчислень.
- •7. Мульти-агентні розподілені обчислення.
- •8. Основні етапи проектування паралельних та розподілених алгоритмів.
- •8.1. Декомпозиція
- •8.2. Зв'язок
- •8.3. Синхронізація
- •9. Базові рівні програмного паралелізму
- •9.1. Паралелізм на рівні інструкцій
- •9.2. Паралелізм на рівні підпрограм
- •9.3. Паралелізм на рівні об'єктів
- •9.4. Паралелізм на рівні програм
- •Тема 2. Архітектура паралельних обчислювальних систем.
- •Класифікація паралельних комп’ютерів та систем
- •Векторно-конвеєрні комп’ютери
- •Паралельні комп’ютери з спільною пам’яттю
- •Паралельні комп’ютери з розподіленою пам’яттю
- •Концепція grid або метакомп’ютеринг
- •Тема 3. Основні моделі паралельних та розподілених обчислень.
- •Основні типи паралельних програм.
- •Ітеративний паралелізм.
- •3. Рекурсивний паралелізм
- •4. Модель „виробники-споживачі"
- •5. Паралельна парадигма „клієнт - сервер"
- •6. Паралельна модель „взаємодіючі рівні"
- •Тема 4: Засоби розробки паралельних програм.
- •1.Основні підходи до розробки паралельних програм
- •2.Використання бібліотеки паралельного програмування pthreads
- •Навчальний приклад: Pthreads
- •3. Бібліотека паралельного програмування OpenMp
- •4. Бібліотека паралельного програмування мрі
- •Система програмування mpi
- •Властивості та класифікація процесу.
- •Незалежні та взаємодіючі обчислювальні процеси.
- •Види задач синхронізації паралельних процесів.
- •Синхронізація за допомогою блокування пам’яті.
- •Алгоритм деккера.
- •Команда “перевірка” та “встановлення”.
- •Використання семафорів для синхронізації та впорядкування паралельних процесів.
- •Монітороподібні засоби синхронізації паралельних процесів.
- •Поштові ящики.
- •Конвеєри.
- •Черги повідомлень.
Опорний конспект лекцій
з дисципліни
„Технології розподілених систем та паралельних обчислень”
Розробив: _______ к.т.н., доцент
Турченко В.О.
Тема 1. Вступ в паралельні та розподілені обчислення.
Поняття паралелізму.
Два узагальнені підходи до досягнення паралельності.
Переваги паралельних обчислень.
Найпростіша модель розпаралелення.
Переваги розподілених обчислень.
Найпростіші моделі розподілених обчислень.
Мульти-агентні розподілені обчислення.
Основні етапи проектування паралельних та розподілених алгоритмів.
Базові рівні програмного паралелізму.
Поняття паралелізму.
Дві події називають одночасними, якщо вони відбуваються протягом одного і того ж тимчасового інтервалу. Якщо декілька завдань виконуються протягом одного і того ж тимчасового інтервалу, то говорять, що вони виконуються паралельно. Для нас термін паралельно не завжди означає "точно в один момент". Наприклад, два завдання можуть виконуватися паралельно протягом однієї і тієї ж секунди, але при цьому кожна з них виконується в різні долі цієї секунди. Так, перше завдання може відпрацювати в першу десяту частину секунди і припинитися, потім друга може відпрацювати в наступну десяту частину секунди і припинитися, після чого перше завдання може відновити виконання протягом третьої частки секунди, і т.д. Таким чином, ці завдання можуть виконуватися по черзі, але оскільки тривалість секунди з погляду людини вельми коротка, то здається , що вони виконуються одночасно. Поняття одночасності (паралельності) можна розповсюдити і на довші інтервали часу. Так, дві програми, що виконують деяке завдання протягом однієї і тієї ж години, поступово наближаючись до своєї кінцевої мети протягом цієї години, можуть (або можуть не) працювати точно в одні і ті ж моменти часу. Ми говоримо, що дані дві програми для цієї години виконуються паралельно, або одночасно. Іншими словами, завдання , які існують в один і той же час і виконуються протягом одного і того ж інтервалу часу, є паралельними. Паралельні завдання можуть виконуватися в одно- або багатопроцесорному середовищі. У однопроцесорному середовищі паралельні завдання існують в один і той же час і виконуються протягом одного і того ж інтервалу часу за рахунок контекстного перемикання. У багатопроцесорному середовищі , якщо вільна достатня кількість процесорів, паралельні завдання можуть виконуватися в одні і ті ж моменти часу протягом одного і того ж періоду часу. Основний чинник , що впливає на ступінь прийнятності для паралелізму того або іншого інтервалу часу, визначається конкретною програмою.
Мета технологій паралелізму — забезпечити умови, що дозволяють комп'ютерним програмам робити більший об'єм роботи за той же інтервал часу. Тому проектування програм повинне орієнтуватися не на виконання одного завдання в деякий проміжок часу, а на одночасне виконання декількох завдань , на які заздалегідь повинна бути розбита програма. Можливі ситуації, коли метою є не виконання більшого об'єму роботи протягом того ж інтервалу часу, а спрощення рішення з погляду програмування. Іноді має сенс думати про рішення проблеми як про безліч паралельно виконуваних завдань. Наприклад (якщо узяти для порівняння, наприклад, життєву ситуацію), проблему зниження ваги краще всього представити у вигляді двох паралельно виконуваних завдань : дієта і фізичне навантаження. Інакше кажучи, для вирішення цієї проблеми передбачається застосування строгої дієти і фізичних вправ в один і той же інтервал часу (необов'язково точно в одні і ті ж моменти часу). Звичайно не дуже корисно (або ефективно) виконувати одну підзадачу в один період часу, а іншу - абсолютно в іншій. Саме паралельність обох процесів дає природну форму шуканого рішення проблеми. Іноді до паралельності вдаються, щоб збільшити швидкодію програми або наблизити момент її завершення. В інших випадках паралельність використовується для збільшення продуктивності програми (об'єму виконуваної нею роботи) за той же період часу при вторинності швидкості її роботи. Наприклад, для деяких Web-сайтів важливо якомога довше утримувати користувачів. Тому тут має значення не те, наскільки швидко відбуватиметься підключення (реєстрація) і відключення користувачів, а скільки користувачів цей сайт зможе одночасно обслуговувати. Отже, мета проектування програмного забезпечення такого сайту — обробляти максимальну кількість підключень як можна більший проміжок часу. Нарешті , паралельність спрощує саме програмне забезпечення. Часто складну послідовність операцій можна спростити, організувавши її у вигляді ряду невеликих паралельно виконуваних операцій. Незалежно від приватної мети (прискорення роботи програм, обробка збільшеного навантаження або спрощення реалізації програми), наша головна мета - удосконалити програмне забезпечення, скориставшись принципом паралельності.
