Карпенко а
Багатопроцесорні системи (MIMD-системи).
Обчислювальні кластери.
Як ми вже відзначали обчислювальний кластер - це MIMD-система (мультікомпьютер), що складається з безлічі окремих комп'ютерів (вузлів обчислювального кластера), об'єднаних єдиною комунікаційним середовищем. Кожен вузол має свою локальну оперативну пам'ять. При цьому загальної фізичної оперативної пам'яті для вузлів, як правило, не існує. Комунікаційне середовище обчислювальних кластерів зазвичай дозволяє вузлам взаємодіяти між собою тільки за допомогою передачі повідомлень. В цілому, обчислювальний кластер слід розглядати як єдину апаратно-програмну систему, що має єдину комунікаційну систему, єдиний центр управління і планування завантаження.
Вузли обчислювального кластера можуть функціонувати під управлінням різних операційних систем. Однак найчастіше використовуються стандартні UNIX-подібні системи. Зауважимо, що точки зору розробки прикладних паралельних програм немає будь-яких принципових відмінностей між однорідними обчислювальними кластерами і MPP-системами.
Обчислювальні кластери класифікуються, насамперед, за характером вузлових процесорів (див. Рис. 1).
Класифікація обчислювальних кластерів за типом вузлових процесорів.
Як вузлів обчислювального кластера зазвичай використовують персональні комп'ютери, робочі станції і SMP-сервера. Якщо в якості вузла кластера використовуються SMP-система, то такий обчислювальний кластер називається SMP-кластером.
Якщо в якості вузлів обчислювального кластера використовуються персональні ЕОМ або робочі станції, то звичайною є ситуація, коли під час вирішення завдання на кластері на вузлах цього кластера продовжують виконуватися послідовні завдання користувачів. В результаті відносна продуктивність вузлів кластера змінюється випадковим чином і в широких межах. Рішенням проблеми було б написання самоадаптірующейся користувальницької програми. Однак ефективне рішення цієї задачі є досить проблематичним. Ситуація ускладнюється, якщо серед вузлових комп'ютерів обчислювального кластера є файлові сервери. При цьому під час вирішення завдання на кластері в широких межах може змінюватися завантаження комунікаційного середовища, що робить непередбачуваними комунікаційні витрати завдання.
Рис.1. Класифікація вузлів обчислювальних кластерів.
Класифікація обчислювальних кластерів по однорідності вузлів.
Як і всякі MIMD-системи, обчислювальні кластери поділяються на однорідні кластерні системи (однорідні обчислювальні кластери) і гетерогенні кластерні системи (гетерогенні обчислювальні кластери).
Зазвичай, коли говорять про обчислювальних кластерах, мають на увазі однорідні обчислювальні кластери. Однак часто при нарощуванні кластеру доводиться використовувати процесори, що відрізняються не тільки по продуктивності, але і по архітектурі, від вузлових процесорів кластера. Тому поступово однорідний обчислювальний кластер може стати неоднорідним. Ця неоднорідність створює такі проблеми. Різниця в продуктивності процесорів ускладнює завдання розподілу робіт між процесорами. Різниця в архітектурі процесорів вимагає підготовки різних виконуваних файлів для різних вузлів, а в разі відмінностей в уявленні даних, може зажадати і перетворення їх форматів при передачі повідомлень між вузлами.
Класифікація обчислювальних кластерів по функціональності вузлів.
Вузли обчислювального кластера можуть являти собою повнофункціональні комп'ютери, які можуть працювати і як самостійні одиниці. Продуктивність такого кластера зазвичай невисока.
Для створення високопродуктивних обчислювальних кластерів системні блоки вузлових комп'ютерів роблять значно простішими, ніж в першому випадку (НЕ повнофункціональними). Тут немає необхідності постачати комп'ютери вузлів графічними картами, моніторами, дисковими накопичувачами і іншим периферійним обладнанням. Периферійне устаткування встановлюється тільки на одному або небагатьох керівників комп'ютерах (HOST-комп'ютерах). Такий похід дозволяє значно зменшити вартість системи.
При класифікації кластерів використовується і ряд інших класифікаційних ознак. Розглянемо два з них (див. Рис. 2.):
- класифікація по стандартності комплектуючих;
- класифікація по функціональної спрямованості.
Рис.2. Класифікація обчислювальних кластерів.
Класифікація обчислювальних кластерів по стандартності комплектуючих.
З точки зору стандартності комплектуючих можна виділити два класи кластерних систем:
- обчислювальний кластер будується цілком із стандартних комплектуючих;
- при побудові кластера використовуються ексклюзивні або нешироко поширені комплектуючі.
Обчислювальні кластери першого класу мають низькі ціни і просте обслуговування. Широке поширення кластерні технології отримали як засіб створення саме відносно дешевих систем суперкомп'ютерного класу із складових частин масового виробництва.
Кластери другого класу дозволяють отримати дуже високу продуктивність, але є, природно, більш дорогими.
Класифікація обчислювальних кластерів по їх функціональної спрямованості.
З функціональної точки зору кластерні системи можна розділити на високошвидкісні кластерні системи (High Performance) - HP-кластери і кластерні системи високої готовності (High Availability) - HA-кластери. Високошвидкісні кластери використовуються в областях, які вимагають значної обчислювальної потужності. Кластери високої готовності використовуються всюди, де вартість можливого простою перевищує вартість витрат, необхідних для побудови відмовостійкої системи.
Високошвидкісні кластери. Продуктивність обчислювального кластера, очевидно, заздрості від продуктивності його вузлів. З іншого боку, продуктивність кластера, як і сякий системи з розподіленою пам'яттю, сильно залежить від продуктивності комунікаційного середовища. Зазвичай при побудові обчислювальних кластерів використовують досить дешеві комунікаційні середовища. Такі середовища забезпечують продуктивність на один - два порядки нижчу, ніж продуктивність комунікаційних середовищ суперкомп'ютерів. Тому знаходиться не так багато завдань, які можуть досить ефективно вирішуватися на великих кластерних системах.
Вплив продуктивності комунікаційного середовища на загальну продуктивність кластерної системи залежить від характеру виконуваної завдання. Якщо завдання вимагає частого обміну даними між подзадачами, які вирішуються на різних вузлах обчислювального кластера, то швидкодії комунікаційного середовища слід приділити максимум уваги. Відповідно, чим менше взаємодіють частини завдання між собою, тим менше уваги можна приділити швидкодії комунікаційного середовища.
Розроблено безліч технологій з'єднання комп'ютерів в кластер. Ці технології будуть розглянуті в наступному розділі.
Місце HP-кластерів серед сучасних високопродуктивних систем ілюструє наступний приклад: у списку 500 найбільш високопродуктивних комп'ютерів світу «Top500» обчислювальні кластери з недорогих вузлів займають приблизно половину списку.
ВУкаіни найбільший замовник HP-кластерів - нафтогазова галузь, в котрому кластери все більш широко використовуються для обробки тривимірних сейсмічних даних, одержуваних в процесі геологорозвідки.
Кластери високої готовності. Серед різноманіття типів сучасних обчислювальних систем високої готовності HA-кластери забезпечують високий рівень відмовостійкості при найнижчій вартості.
Взагалі кажучи, для того, щоб обчислювальна система мала високими показниками готовності, необхідно, щоб її компоненти були максимально надійними, щоб система була відмовостійкої, а так само щоб була можливою «гаряча» заміна компонентів (без зупинки системи). Завдяки кластеризації при відмові одного з комп'ютерів системи, завдання можуть бути автоматично (операційною системою) перерозподілені між іншими (справними) вузлами обчислювального кластера. Таким чином, відмовостійкість кластера забезпечується дублюванням всіх життєво важливих компонент обчислювальної системи. Найпопулярнішими комерційними відмовостійкими системами в даний час є двовузлового кластери.
Обчислювальні мережі.
Виділяється ще один клас обчислювальних кластерів - обчислювальні мережі (GRID), які об'єднують ресурси безлічі кластерів, багатопроцесорних і однопроцесорних ЕОМ, які можуть належати різним організаціям і бути розташованими в різних країнах.
Розробка паралельних програм для обчислювальних мереж ускладнюється через наступних проблем. Ресурси (кількість вузлів, їх архітектура, продуктивність), які виділяються задачі, визначається тільки в момент обробки мережею замовлення на виконання це завдання. Тому програміст не має можливості розробити програму для конкретної конфігурації обчислювальної мережі. Програму доводиться розробляти так, щоб вона могла динамічно (без перекомпіляції) самонастроюватися на виділену конфігурацію мережі. Крім того, до неоднорідності комунікаційного середовища додається мінливість її характеристик, що викликається змінами завантаження мережі. У кращому випадку програма повинна розроблятися з урахуванням цієї неоднорідності комунікаційного середовища, що являє собою досить непросте завдання. Як ми зазначали вище, подібна проблема має місце і для обчислювальних кластерів, побудованих на основі персональних комп'ютерів або робочих станцій.
Ефективна продуктивність кластерних обчислювальних систем (real applications performance - RAP) оцінюється як 5-15% від їх пікової продуктивності (Peak Advertised Performance, PAP). Для порівняння: у кращих малопроцессорних систем з векторних процесорів це співвідношення оцінюється як 30-50%.