Принципи побудови паралельних обчислювальних систем
Важливість створення удосконалених алгоритмівМожливість об'єднувати безліч комп'ютерів, що знаходяться в територіально розподілених точках, в єдиний обчислювальний ресурс багаторазово підсилює міць і швидкодію об'єднаного обчислювального комплексу. Однак цього замало, у багатьох випадках ефективність найчастіше залежить від алгоритму обчислювального процесу: якщо почати обчислення, запрограмовані за звичайним порядком послідовних обчислень, то обчислення не будуть прискорені, оскільки незавантажені ресурси будуть просто простоювати. Отже, в даному випадку потрібен особливий алгоритм, який дозволить задіяти всі обчислювальні ресурси і в кілька разів підвищити їх ефективність.[1] Основні рівні розпаралелюванняПрограмний рівеньНа цьому найвищому рівню одночасно ( або щонайменше розподілено за часом) виконуються комплектні програми. Машина, що виконує ці програми, не повинна бути паралельною, досить того, що в ній наявна багатозадачна операційна система (наприклад, реалізована як система розподілу часу). В цій системі кожному користувачеві відповідно до його пріоритету планувальник виділяє відрізок часу різної тривалості. Користувач одержує ресурси центрального процесорного блоку тільки впродовж короткого часу, а потім стає в чергу на обслуговування. У тому випадку, коли в комп'ютері недостатня кількість процесорів для вcix користувачів (або процесів), що, як правило, найбільш імовірно, в системі моделюється паралельне обслуговування користувачів за допомогою "квазіпаралельних" процесів. Рівень процедурНа цьому рівні різні розділи однієї і тієї самої програми мають виконуватися паралельно. Ці розділи називаються "процесами" i відповідають приблизно послідовним процедурам. Проблеми поділяються на суттєво незалежні частини так, щоб по можливості рідше виконувати операції обміну даними між процесами, які потребують відносно великих витрат часу. В різних галузях застосування стає ясно, що цей рівень паралельності в жодному разі не обмежується розпаралелюванням послідовних програм. існує великий ряд проблем, які потребують паралельних структур цього типу навіть тоді, коли так само, як i на програмному рівні, у користувача є тільки один процесор. Застосування (основне) - загальне паралельне оброблення інформації, де застосовується поділ вирішуваної проблеми на паралельні задачі - частини, які вирішуються багатьма процесорами з метою підвищення обчислювальної продуктивності. Рівень арифметичних виразівАрифметичні вирази виконуються паралельно покомпонентно, причому в суттєво простіших синхронних методах. Якщо, наприклад, йдеться про арифметичний вираз складання матриць, то він синхронно розпаралелюється дуже просто тому, що кожному процесорові підпорядковується один елемент матриці. При застосуванні n*n процесорних елементів можна одержати суму двох матриць порядку n*n за час виконання однієї операції складання (за винятком часу, потрібного на зчитування та запис даних). Цьому рівню притаманні засоби векторизації та так званої паралельності даних. Останнє поняття пов'язане з детальністю розпаралелювання, а саме - з його поширенням на оброблювані дані. Майже кожному елементу даних тут підпорядковується свій процесор, завдяки чому ті дані, що в машині фон Неймана були пасивними. перетворюються на “активні обчислювальні пристрої”.[2] На цьому рівні відбувається паралельне виконання бітових операцій в межах одного слова . Паралельність на рівні бітів можна знайти в будь-якому працюючому мікропроцесорі. Наприклад, у 8-розрядному арифметико-логічному пристрої побітова обробка виконується паралельними апаратними засобами. Паралелізм на рівні потоківОдне з рішень даної проблеми пов'язане з реалізацією концепції паралелізму на рівні потоків (Паралелізм завдань - TLP). Якщо запущене на виконання завдання не в змозі завантажити роботою всі функціональні пристрої, то можна дозволити процесору виконувати більш ніж одну задачу, створюючи тим самим другий потік, щоб він завантажив простоюючий пристрій. Тут є аналогія з багатозадачною операційною системою(ОС): щоб процесор не простоював, коли завдання перебувають у стані очікування (наприклад, завершення введення-виведення), ОС перемикається на виконання іншої задачі. Найбільш ефективною на сьогодні стала архітектура з одночасним виконанням потоків (Simultaneous Multi-Threading[en] - SMT). У такій ситуації на кожному новому такті на виконання в який-небудь виконавчий пристрій може направлятися команда будь-якого потоку - залежно від обчислювального алгоритму. Особливості паралелізму на рівні потоківРозпаралелювання на рівні потоків TLP, на відміну від ILP, управляється програмно. Віртуальна багатопоточність створюється в результаті виділення в одному фізичному процесорі двох або більше логічних процесорів. Класичним прикладом такого підходу стала технологія Hyper-Threading (НТ) компанії Intel. Внаслідок того, що протягом такту, як правило, не всі виконавчі модулі процесора задіяні, їх можна завантажити паралельним потоком завдань. Зрозуміло, що вдвічі продуктивність не збільшиться, оскільки паралельні потоки використовують загальні пам'ять, кеш і т.д. (до того ж виникають втрати через синхронізації і розпаралелювання інструкцій), але вона в цілому зростає на 35-50%. Мінусом використання технології TLP є виникнення конфліктів, коли одному потоку потрібні результати виконання іншого договору, що призводить до очікування і зростанню кількості тактів, необхідних для виконання інструкцій. Розподіленні обчисленняУ загальному випадку розподілені обчислення (Distributed Computing) - це спосіб вирішення трудомістких обчислювальних завдань з великим обсягом однотипних обчислень або пов'язаних з колосальними кількостями оброблюваних даних. Такі обчислення проводяться з використанням багатоядерних або багатопроцесорних систем на одному комп'ютері або на двох і більше звичайних комп'ютерах, об'єднаних в мережу. Розподілені обчислення є окремим випадком паралельних обчислень, тому необхідно, щоб вирішити завдання була сегментована, а конкретно, розділена на підзадачі, які можуть обчислюватися паралельно. При цьому для розподілених обчислень доводиться також враховувати можливе розходження в обчислювальних ресурсах, які будуть доступні для розрахунку різних підзадач. Однак не всяку завдання можна розділити, прискоривши її рішення за допомогою розподілених обчислень. Принципи формування паралелізмуПаралельні обчислення - це такі процеси обробки даних, коли кілька однотипних або різних операцій можуть виконуватися одночасно на одному обчислювальному пристрої або на декількох комп'ютерах, об'єднаних в локальну мережу. Реалізацію паралельних обчислень можна тільки при виконанні певних принципів побудови архітектури обчислювального середовища. Розглянутий нижче метод побудови алгоритму розпаралелювання орієнтований в значній мірі на обчислювальні системи з розподіленою пам'яттю, коли необхідні інформаційні взаємодії реалізуються по виділених каналах зв'язку між процесорами. Однак цей метод з не меншим успіхом можна застосовувати і для розробки паралельних алгоритмів для систем зі спільною пам'яттю, в цьому випадку інформаційні взаємодії здійснюються операціями доступу до загальних ресурсів.[3] Основні принципи побудови архітектури обчислюваного середовища
Режими виконання незалежних частин програмиПри організації паралельних обчислень можливо кілька режимів виконання незалежних частин програми
Розробка паралельних методів обчисленьРозробка алгоритмів паралельних обчислень є складною науково-технічної завданням, оскільки крім чисто математичних питань побудови алгоритмів і дослідження їх збіжності слід обов'язково враховувати архітектуру обчислювального пристрою, для якого розробляється той чи інший алгоритм. Природно, що є деякі базові вимоги до розробки алгоритмів. Обов'язкові кроки в організації паралельних обчислень
Особливості розподілу підзадачОчевидно, що розподіляти підзадачі потрібно так, щоб обсяг обчислень для кожного завантаження процесора був приблизно однаковим (балансування навантаження). Крім цього, розподіл підзадач повинно бути таким, щоб кількість комунікаційних взаємодій було мінімальним. Потрібно оцінити ефективність розроблюваного алгоритму. Для цієї мети слід визначити значення таких, наприклад, показників якості спроектованих паралельних обчислень, як прискорення обчислень, ступінь збалансованості завантаження процесорів, масштабованість наборів підзадач і т.д. Після цього загальну схему складеного алгоритму піддають детальної програмної опрацюванні, щоб "розмістити" програми вирішення підзадач по процесорах відповідно до ви - лайливої схемою розпаралелювання. Далі програми запускають для виконання, при цьому виконання програми для кожного масиву підзадач називається процесом. Для реалізації комунікаційних взаємодій процеси повинні мати канали передачі повідомлень і засобу обміну даними. Як правило, кожен процесор виділяється для вирішення певної підзадачі, однак якщо підзадач більше, ніж процесорів, то на один процесор слід запускати кілька підзадач, дотримуючись по можливості збалансованість загальної завантаження. Така ситуація виникає найчастіше на початковому етапі розпаралелювання, коли працездатність модельного алгоритму перевіряють на одному процесорі в режимі поділу часу. Розподіл підзадач між процесорами є завершальним етапом розробки паралельного методу обчислень. Управління розподілом навантаження (користувацька балансування) можлива тільки для обчислювальних систем з розподіленою пам'яттю; для багатопроцесорних систем зі спільною пам'яттю розподіл навантаження зазвичай проводиться автоматично. Області застосування і задачі паралельної обробкиЄ коло обчислювальних задач, що вимагає більших обчислювальних ресурсів. Для задач необхідно:
При наявності хоча б однієї з наведених вимог використання паралельної обробки доцільне. Задачі в яких застосовується паралельна обробка
ПриміткиПосилання |
Portal di Ensiklopedia Dunia