Системи з масовим паралелізмом (МРР)
Проблеми, властиві багатопроцесорним системам із загальною пам'яттю, простим і природним чином усуваються у системах із масовим паралелізмом. Комп'ютери цього є багатопроцесорні системи з розподіленою пам'яттю, у яких з допомогою деякої комунікаційної середовища об'єднуються однорідні обчислювальні вузли (рис. 1.2).

Мал. 1.2. Архітектура систем із розподіленою пам'яттю.
Кожен із вузлів складається з однієї чи кількох процесорів, власної оперативної пам'яті, комунікаційного устаткування, підсистеми вводу/вывода, тобто. має все необхідне для незалежного функціонування. При цьому на кожному вузлі може функціонувати або повноцінна операційна система (як у системі RS/6000 SP2), або урізаний варіант, що підтримує лише базові функції ядра, а повноцінна ОС працює на спеціальному комп'ютері (як у системах Cray T3E, nCUBE2).
Процесори у таких системах мають прямий доступ лише до своєї локальної пам'яті. Доступ до пам'яті інших вузлів зазвичай реалізується за допомогою механізму передачі повідомлень. Така архітектура обчислювальної системи усуває одночасно проблему конфліктів при зверненні до пам'яті, і проблему когерентності кеш-пам'яті. Це дозволяє практично необмеженого нарощування числа процесорів у системі, збільшуючи цим її продуктивність. Успішно функціонують MPP системи з сотнями та тисячами процесорів (ASCI White – 8192, Blue Mountain – 6144). Продуктивність найпотужніших систем досягає 10 трильйонів оп/сек (10 Tflops). Важливою властивістю MPP систем є їх високий рівень масштабованості. Залежно від обчислювальних потреб для досягнення необхідної продуктивності потрібно просто зібрати систему з потрібнимчислом вузлів.
На практиці все, звісно, набагато складніше. Усунення одних проблем, як це буває, породжує інші. Для MPP систем першому плані виходить проблема ефективності комунікаційної середовища. Легко сказати: "Давайте зберемо систему із 1000 вузлів". Але як з'єднати в єдине ціле таке безліч вузлів? Найпростішим і найефективнішим було б поєднання кожного процесора з кожним. Але тоді на кожному вузлі потрібно було б 999 комунікаційних каналів, бажано двонаправлених. Очевидно, що це неможливо. Різні виробники систем MPP використовували різні топології. У комп'ютерах Intel Paragon процесори утворювали двокутну прямокутну сітку. Для цього у кожному вузлі достатньо чотирьох комунікаційних каналів. У комп'ютерах Cray T3D/T3E використовувалася топологія тривимірного тора. Відповідно, у вузлах цього комп'ютера було шість комунікаційних каналів. Фірма nCUBE використовувала у комп'ютерах топологію n-мірного гіперкуба. Кожна з розглянутих топологій має свої переваги та недоліки. Зазначимо, що з обміну даними між процесорами, які є найближчими сусідами, відбувається трансляція даних через проміжні вузли. Очевидно, що у вузлах мають бути передбачені якісь апаратні засоби, які б звільняли центральний процесор від участі в трансляції даних. Останнім часом для об'єднання обчислювальних вузлів частіше використовується ієрархічна система високошвидкісних комутаторів, як це вперше було реалізовано в комп'ютерах IBM SP2. Така топологія дає можливість прямого обміну даними між будь-якими вузлами, без участі у цьому проміжних вузлів.
Системи з розподіленою пам'яттю ідеально підходять для паралельного виконання незалежних програм, оскільки кожна кожнаПрограма виконується на своєму вузлі і жодним чином не впливає на виконання інших програм. Однак при розробці паралельних програм доводиться враховувати складнішу, ніж у SMP системах, організацію пам'яті. Оперативна пам'ять у MPP системах має 3-х рівневу структуру:
- локальна оперативна пам'ять вузла;
- оперативна пам'ять інших вузлів
При цьому відсутня можливість прямого доступу до даних, які розташовані в інших вузлах. Для їх використання ці дані повинні бути попередньо передані в той вузол, який на даний момент їх потребує. Це значно ускладнює програмування. Крім того, обміни даними між вузлами виконуються значно повільніше, ніж обробка даних локальної оперативної пам'яті вузлів. Тому написання ефективних паралельних програм для таких комп'ютерів є складнішим завданням, ніж для SMP систем.
Кластерні системи
Кластерні технології стали логічним продовженням розвитку ідей закладених в архітектурі MPP систем. Якщо процесорний модуль в MPP системі являє собою закінчену обчислювальну систему, то наступний крок напрошується сам собою: чому б як такі обчислювальні вузли не використовувати звичайні комп'ютери, що випускаються серійно. Розвиток комунікаційних технологій, а саме поява високошвидкісного мережного обладнання та спеціального програмного забезпечення, такого як система MPI, що реалізує механізм передачі повідомлень над стандартними мережевими протоколами, зробили кластерні технології загальнодоступними. Сьогодні не важко створити невелику кластерну систему, об'єднавши обчислювальні потужності комп'ютерів окремої лабораторії або навчального класу.
Привабливою рисою кластерних технологійє те, що вони дозволяють для досягнення необхідної продуктивності об'єднувати в єдині обчислювальні системи комп'ютери різного типу, починаючи від персональних комп'ютерів і закінчуючи потужними суперкомп'ютерами. Широке поширення кластерні технології набули як засіб створення систем суперкомп'ютерного класу зі складових масового виробництва, що значно здешевлює вартість обчислювальної системи. Зокрема, одним із перших було реалізовано проект COCOA, у якому на базі 25 двопроцесорних персональних комп'ютерів загальною вартістю близько $100000 було створено систему з продуктивністю, еквівалентною 48-процесорному Cray T3D вартістю кілька мільйонів доларів США.
Звичайно, про повну еквівалентність цих систем говорити не доводиться. Як зазначалося у попередньому розділі, продуктивність систем із розподіленою пам'яттю дуже залежить від продуктивності комунікаційної середовища. Комунікаційне середовище можна досить повно охарактеризувати двома параметрами:латентністю- часом затримки при посилці повідомлення, тапропускною здатністю- швидкістю передачі інформації. Так ось для комп'ютера Cray T3D ці параметри становлять відповідно 1 мкс і 480 Мб/сек, а для кластера, в якому як комунікаційне середовище використана мережа Fast Ethernet, 100 мкс і 10 Мб/сек. Це частково пояснює дуже високу вартість суперкомп'ютерів. При таких параметрах, як у кластера, знайдеться не так багато завдань, які можуть ефективно вирішуватися на досить великій кількості процесорів.
Якщо говорити коротко, токластер- це пов'язаний набір повноцінних комп'ютерів, що використовується як єдиний обчислювальний ресурс. Переваги кластерної системи перед наборомнезалежні комп'ютери очевидні. По-перше, розроблено безліч диспетчерських систем пакетної обробки завдань, що дозволяють надіслати завдання на обробку кластеру в цілому, а не якомусь окремому комп'ютеру. Ці диспетчерські системи автоматично розподіляють завдання по вільним обчислювальним вузлам або буферизують їх за відсутності таких, що дозволяє забезпечити більш рівномірне та ефективне завантаження комп'ютерів. По-друге, з'являється можливість спільного використання обчислювальних ресурсів кількох комп'ютерів на вирішення одного завдання.
Для створення кластерів зазвичай використовують або прості однопроцесорні персональні комп'ютери, або дво- або чотири-процесорні SMP-сервери. При цьому не накладається жодних обмежень на склад та архітектуру вузлів. Кожен із вузлів може функціонувати під управлінням своєї власної операційної системи. Найчастіше використовують стандартні ОС: Linux, FreeBSD, Solaris, Tru64 Unix, Windows NT. У тих випадках, коли вузли кластера неоднорідні, то говорять про гетерогенні кластери.
При створенні кластерів можна виділити два підходи. Перший підхід застосовується під час створення невеликих кластерних систем. У кластер об'єднуються повнофункціональні комп'ютери, які продовжують працювати як самостійні одиниці, наприклад, комп'ютери навчального класу чи робочі станції лабораторії. Другий підхід застосовується у випадках, коли цілеспрямовано створюється потужний обчислювальний ресурс. Тоді системні блоки комп'ютерів компактно розміщуються у спеціальних стійках, а управління системою і запуску завдань виділяється чи кілька повнофункціональних комп'ютерів, званих хост-комп'ютерами. У цьому випадку немає необхідності постачати комп'ютери обчислювальних вузлів графічними картами,моніторами, дисковими накопичувачами та іншим периферійним обладнанням, що значно здешевлює вартість системи.
Розроблено безліч технологій з'єднання комп'ютерів у кластер. Найбільш широко зараз використовується технологія Fast Ethernet. Це обумовлено простотою її використання та низькою вартістю комунікаційного обладнання. Проте за це доводиться розплачуватися явно недостатньою швидкістю обмінів. Насправді це обладнання забезпечує максимальну швидкість обміну між вузлами 10 Мб/сек, тоді як швидкість обміну з оперативною пам'яттю становить 250 Мб/сек і вище. Розробники пакету підпрограм ScaLAPACK, призначеного для вирішення завдань лінійної алгебри на багатопроцесорних системах, у яких велика частка комунікаційних операцій, формулюють таким чином вимогу до багатопроцесорної системи: "Швидкість міжпроцесорних обмінів між двома вузлами, виміряна в Мб/сек, повинна бути не менше ніж 1/ 10 пікової продуктивності обчислювального вузла, виміряної Mflops". Таким чином, якщо як обчислювальні вузли використовувати комп'ютери класу Pentium III 500 МГц (пікова продуктивність 500 Mflops), то апаратура Fast Ethernet забезпечує лише 1/5 від необхідної швидкості. Частково це положення може виправити перехід на технології Gigabit Ethernet.
Ряд фірм пропонують спеціалізовані кластерні рішення на основі більш швидкісних мереж, таких як SCI фірми Scali Computer (
100 Мб/сек) та Mirynet (
120 Мб/с). Активно включилися у підтримку кластерних технологій та фірми-виробники високопродуктивних робочих станцій (SUN, HP, Silicon Graphics).