Мережеві розподілені обчислення

Розвиток ІОМ створив можливості для реалізації розподілених обчислень. У останні десятиліття суттєво зріс інтерес до розв'язання складних наукових та прикладних задач (моделювання клімату, моделювання поведінки космічних та літальних апаратів|, механіки твердого тіла, генетичного моделювання тощо), які вимагають величезної (до 10 флоп - операцій з плаваючою точкою в секунду) продуктивності комп'ютерів. Однак подібні ЕОМ надзвичайно дорогі та схильні до застарівання. Альтернативним і найбільш перспективним підходом до забезпечення обчислювальної підтримки таких задач на ЕОМ є розподілення обчислень у багатопроцесорних комп'ютерах чи багатокомп'ютерних мережах, тобто поділ складних розрахунків на частини з виконанням окремих частин на різних комп'ютерах, завдяки чому досягається обєднання їх обчислювальних ресурсів.

Ідея спільного використання обчислювальних ресурсів кількох машин виникла ще на зорі комп'ютерної епохи. У 1973 р. Джон Шох і Жон Хапп з каліфорнійського дослідницького центру Xerox PARC написали простеньку програму, яка запускалася ночами в локальну мережу PARC, «розповзалася» по працюючих комп'ютерах і примушувала їх виконувати обчислення. Якісний стрибок в реалізації сумісної роботи багатьох комп'ютерів над єдиним складним завданням відбувся наприкінці 1980-х рр., коли з'явилися персональні комп'ютери та електронна пошта. У 1988 р. Ар'єн Ленстра і Марк Менес з компанії DEC створили програму для факторизації (розбиття на множники) довгих чисел. Для прискорення процесу програма могла запускатися на кількох не пов'язаних між собою машинах, кожна з яких обробляла свій невеликий фрагмент числа. Нові блоки завдань розсилалися на комп'ютери учасників з центрального сервера проекту звичайною електронною поштою. Для успішного розкладання на множники числа завдовжки в сто знаків знадобилося два роки і кілька сотень персональних комп'ютерів. Успіщне завершення цього проекту знаменувало появу нової галузі у обчислювальних системах – галузі розподілених обчислень.

Розподілені обчислення — це спосіб розв’язання трудомістких обчислювальних завдань з використанням двох і більше комп’ютерів, об’єднаних в мережу. Розподіленіобчислення передбачають використання програмних та апаратних ресурсів глобальної чи локальної мережі для забезпечення паралельного виконання обчислень у межах одного завдання. Розподілені обчислення є окремим випадком паралельних обчислень, тобто одночасного рішення різних частин одного обчислювального завдання кількома процесорами одного або кількох комп’ютерів. Ідея розпаралелювання обчислень базується на тому, що більшість завдань можуть бути розділені на набір менших завдань, які можуть бути вирішені одночасно (паралельно). Паралельні обчислення передбачають сегментування вирішуваної задачі, тобто розділення її на підзадачі, які можуть обчислюватися паралельно. При цьому слід враховувати можливу відмінність в обчислювальних ресурсах, які будуть доступні для розрахунку різних підзадач, а також придатність задачі до сегментування на незалежно розв’язувані підзадачі.

Парале́льні обчи́слювальні систе́ми — це інформаційно-обчислювальні системи, що реалізують паралельну обробку даних на багатьох обчислювальних вузлах для підвищення загальної швидкості розрахунку. Паралельні обчислення| існують в кількох формах: паралелізм на рівні бітів, паралелізм на рівні інструкцій, паралелізм даних, паралелізм задач. Зазвичай паралельні обчислення вимагають координації дій. Взаємодія і синхронізація між процесами заважають збільшенню продуктивності паралельних систем. Координація здійснюється шляхом відсилання повідомлень отримувачу. Повідомлення можуть мати форму викликів функцій, сигналів чи пакетів даних.

Міжмашинна взаємодія, тобто взаємодія процесів, що виконуються на різних комп'ютерах під управлінням окремих операційних систем, забезпечується через спеціальну абстракцію— сокет. В залежності від рівня використання сокетів існують наступні засоби міжмашинної взаємодії процесів:

· пряме використання сокетів— технологія, що вимагає програмування на низькому рівні і реалізації протокола передачі даних;

· віддалений виклик процедур RPC (Remote Procedure Call) — технологія, що забезпечує взаємодію між процесами подібно до виклику функцій: дані в один бік передаються як аргументи функцій (віддалених процедур), в інший— як результати виконання функцій (віддалених процедур);

· CORBA— технологія, що передбачає можливість взаємодії між процесами, як між об'єктами CORBA і є подальшим розвитком технології RPC.

· Інші існуючі технології міжмашинної взаємодії (XML-RPC, SOAP тощо) здебільшого є модифікаціями технологій RPC та CORBA.

Для паралельної обробки існує багато моделей програмування. Домінуючою сьогодні є модель на основі «передачі повідомлень» (message passing), реалізована у вигляді стандарту MPI (Message Passing Interface). MPI - це бібліотека функцій, за допомогою яких в програмах на мовах C чи Фортран можна передавати повідомлення між паралельними процесами, а також управляти цими процесами.

Альтернативою такому підходу є мови на основі так званого "глобального розподіленого адресного простору" (GPAS - global partitioned address space), типовими представниками яких є мови HPF (High Performance Fortran) та UPC (Unified Parallel C).

Архітектура паралельних комп'ютерів за час існування комп'ютерної індустрії розвивалася за різними напрямками, що привело до появи кількох основних класів паралельних обчислювальних систем.

Перший клас — це комп'ютери із спільною пам'яттю. Системи побудовані за таким принципом називають мультипроцесорними або просто мультипроцесорами. У системі присутні кілька рівноправних процесорів з однаковим доступом до спільної пам'яті, які "розподіляють" її між собою та працюють з єдиним адресним простором.

Другий клас — це комп'ютери з розподіленою пам'яттю, які за аналогією з попереднім класом називають мультикомп'ютерними системами. Реально кожний обчислювальний вузол є повноцінним комп'ютером зі своїм процесором, пам'яттю, підсистемою введення/виведення, операційною системою і працює в своєму адресному просторі. Вузли об'єднуються один з одним певним комунікаційним середовищем. Розподіленість пам'яті означає, що кожен процесор має безпосередній доступ лише до локальної пам'яті свого вузла. Доступ до даних, розташованих в пам'яті інших вузлів, здійснюється складнішими способами. Комунікаційне середовище може спеціально проектуватися для даної обчислювальної системи або бути стандартною мережею, доступною на ринку. Окрім традиційних суперкомп'ютерів, клас комп'ютерів з розподіленою пам'яттю останнім часом активно розширюється за рахунок обчислювальних кластерів.

Кластер - це локальна (розташована територіально в одному місці) обчислювальна система, що складається з сукупності незалежних комп'ютерів, об'єднаних в певній мережі для розв'язання однієї задачі. Кластер є локальною системою, бо він управляється в межах окремого адміністративного домена як єдина комп'ютерна система. Комп'ютерні вузли, з яких складається кластер, є стандартними, універсальними (персональними) комп'ютерами, які використовуються в різних галузях і для різноманітних застосувань. Кожен вузол працює під управлінням своєї копії операційної системи, в якості якої найчастіше використовуються стандартні ОС: Linux, Windows NT, Solaris тощо. Склад і потужність вузлів можуть змінюватися навіть у межах одного кластера, що дає можливість створювати неоднорідні системи. Вибір конкретного комунікаційного середовища визначається багатьма факторами: особливостями класу вирішуваних задач, доступним фінансуванням, необхідністю подальшого розширення кластера тощо. Можливе включення в конфігурацію кластера спеціалізованих комп'ютерів, наприклад, файл-сервера. Мережева компонента кластера може бути або звичайною локальною мережею, або бути побудована на основі спеціальних мережевих технологій, що забезпечують надшвидку передачу даних між вузлами кластера. Комунікаційне середовище може одночасно використовувати різні мережеві технології, вузли не обов'яково мусять бути однаковими. Мережа кластера призначена для інтеграції вузлів кластера і, зазвичай, відокремлена від зовнішньої мережі, через яку здійснюється доступ користувачів до кластера. Надається можливість віддаленого доступу на кластер через Інтернет. Теоретично кластером можна вважати як пару ПК, зв'язаних локальною 10-мегабітною Ethernet-мережею, так і обчислювальну систему за проектом Cplant в Національній лабораторії Sandia у складі 1400 робочих станцій на базі процесорів Alpha, об'єднаних високошвидкісною мережею Myrinet.

Сучасні мережі ІОМ при виконанні розподілених обчислень підтримують певну модель обчислень, під якою розуміють сукупність апаратно-програмних засобів та схему їх взаємодії між собою і користувачами, тобто уявлення про те, яким чином і які обчислювальні ресурси використовуються в процесі виконання обчислень. Оскільки поняття моделі обчислень пов'язане як і з апаратним, так і з програмним забезпеченням, часто як синонім слова модель використовується слово архітектура.

У ІОМ нині реалізують три основні моделі обчислень:

· модель обчислень «файл-сервер»;

· модель обчислень «клієнт-сервер»;

· модель «обчислень за вимогою».

Модель обчислень «файл-сервер» (або архітектура «файл-сервер») грунтується на понятті сервера, під яким розуміють, з одного боку, вузол обчислювальної мережі (комп'ютер мережі), призначений для надання спільно використовуваних ресурсів і послуг, а з іншого - програмний компонент, який надає спільний функціональний сервіс іншим програмним компонентам обчислювальної мережі. Файловий сервер є, зазвичай, центральним вузлом мережі, на якому зберігаються файли колективного користування і який також є концентратором спільно використовуваних периферійних пристроїв (наприклад, принтера або дискового накопичувача великої ємності). Файловий сервер не приймає участі в обробці додатків, а виконує мережевий транспорт спільно використовуваних даних (часто шляхом пересилання всього файлу кінцевому користувачу).

Перевагою такої моделі є корпоративне використання територіально розосереджених обчислювальних ресурсів, що створює передумови для побудови глобальних обчислювальних систем і нових технологій обміну інформацією. До недоліків моделі можна віднести дві проблеми, що виникають при розробці багатокористувацьких додатків. По-перше, інтенсивний обмін даними (зростання трафіку мережі) призводить до швидкого досягнення межі її пропускної здатності і тим самим до зниження продуктивності багатокористувацької системи (через збільшення часу реакції додатку за рахунок часу очікування). По-друге, складно забезпечити узгодженість даних, тобто одночасний поділ доступу до одних і тих же даних для групи користувачів. Зазвичай файл блокується для інших користувачів, коли його починає обробляти додаток. У разі, коли частина файлу реплікується на кінцевий вузол для обробки, знижується актуалізація даних, що може бути неприйнятне для систем оперативної обробки інформації.

Модель обчислень «клієнт-сервер» є наступним кроком в розвитку розосереджених обчислень. Вона об'єднала в собі переваги колективних обчислень в мережі комп'ютерів з доступом до спільно використовуваних даних і високі характеристики продуктивності обчислень з центральною ЕОМ. Основними поняттями даної моделі є сервер баз даних, клієнтський додаток і мережа.

Основне призначення сервера баз даних - оптимальне управління ресурсами, які підлягають роздподілу, на рівні даних для багатьох клієнтів. На цьому рівні досить ефективно розв'язуються задачі забезпечення узгодженості даних, їх актуальності, захисту і цілісності. Клієнтський додаток є частиною системи, яка забезпечує інтерфейс додатку з серверами баз даних. Логіка додатку може бути повністю реалізована на клієнтській частині системи, а обробку даних бере на себе сервер баз даних. Мережа і комунікаційне програмне забезпечення є засобами передачі даних. Реалізація цієї компоненти моделі забезпечує прозорість сервера баз даних стосовно клієнта.

До переваг цієї моделі можна віднести: розділення логіки обробки додатку (клієнт) і обробки даних (сервер); гнучкість та адаптованість архітектури до змін у апаратному та програмному забезпеченні; масштабованість архітектури при зміні кількості користувачів спільно використовуваних даних; економію коштів та забезпечення необхідного рівня співвідношеня «продуктивність/ціна». Недоліками моделі можна вважати: можливість недосягнення економії коштів за рахунок вартості апаратури внаслідок великих витрат на розробку програмного забезпечення і підготовку персоналу; високу ймовірність недосягнення очікуваного збільшення продуктивності системи, а навіть її зменшення внаслідок неузгодженого використання програмних і апаратних засобів від різних виробників; наявність задач, для яких дана модель обчислень може виявитися непридатною, наприклад, задачі розрахунку багатомірних газодинамічних потоків під час руху ракети в атмосфері планети.

Модель «обчислень за вимогою», чи модель GRID вважається нині однієюю з найперспективніших високопродуктивних розподілених моделей обчислень. Модель грунтується на ідеї використання обчислювальних ресурсів окремих вузлів локальної чи глобальної обчислювальної мережі за аналогією до побутового споживання електрики, води чи газу, коли кінцевого споживача не цікавить джерело поступлення цих ресурсів (конкретна електростанція чи водогін) до його домівки.

У цій моделі обчислень, заявлені в мережі GRID комп'ютери або кластери ЕОМ), надають свої вільні обчислювальні ресурси, доступні переважно у вигляді вільних циклів роботи центрального процесора (хоча нині проводяться активні дослідження можливості використання в обчисленнях графічних процесорів (GPU) відеокарт), згідно з правилами обслуговування завдань в черзі. Таким чином, перебуваючи в Україні, можна запустити своє завдання на комп'ютері в Австралії чи Росії, абсолютно не знаючи про це. GRID-технології підтримують спільне використання географічно-розосереджених ресурсів для виконання обчислень. В ідеальному випадку користувача взагалі не повинно цікавити місце, де знаходяться використовувані ним обчислювальні ресурси. При цьому модель GRID може застосовувати елементи моделі «клієнт-сервер» для компенсації малої потужності і неузгодженості роботи окремих обчислювальних вузлів.

В міру розвитку Інтернету стала набувати все більшої популярності ідея добровільного використання для розпосереджених обчислень комп'ютерів простих користувачів, з'єднаних через Інтернет. У цьому випадку загальна схема участі в тому або іншому проекті розосереджених обчислень переважно виглядає так: потенційний учасник викачує клієнтську частину програмного забезпечення під свою операційну систему, налагоджує і запускає її. Клієнт періодично спілкується із сервером проекту— запрошує у нього дані на обробку і відсилає результати. При цьому завдання клієнта виконується із найменшим пріоритетом простою і не заважає основній роботі.

Форма реализації GRID-обчислень, яка використовує час простою комп'ютерів пересічних користувачів по всьому світу отримала назву Volunteer Computing. Нині найбільшим проектом Volunteer Computing, як за кількістю учасників, так і за сумарною потужністю є Folding@home є проект з проведення комп'ютерної симуляції згортання молекул білка, який розпочато в жовтні 2000 р. вченими зі Стэнфордського університету. У цьому проекті в якості обчислювальних ресурсів вперше масово використали відеокарти та ігрові приставки: з літа 2006 р. у проекті використовують потенціал 8-ядерних процесорів Cell ігрових приставок Play Station 3, здатних забезпечити близько 20 гигафлоп, що на порядок більше, чим у звичайного офісного комп'ютера. Завдяки угоді з компанією Sony, програма для моделювання динаміки фолдингу білків вбудована в приставки, проте власник пристрою сам вирішує – підключатися йому до проекту чи ні. Восени того ж року у Folding@home спромоглися опанувати обчислювальні можливості графічних процесорів відеокарт компанії ATI, а у 2008 р. - відеокарт NVIDIA. Багатоядерні графічні процесори виправдали всі надії, показуючи феноменальну продуктивність в 100 гігафлоп і більше, що зробило Folding@home наймогутнішою обчислювальною системою планети.

XXI століття ймовірно стане епохою масового впровадження грід-технологій. Людство стоїть на порозі чергової комп'ютерної революції, унаслідок якої відбудеться трансформація звичного для нас сьогодні WWW (World Wide Web - Інтернета) у WWG(World Wide GRID- всесвітню грід-мережу). Магічне грід-середовище, здатне віртуалізувати процесори, пам'ять і комунікації, обіцяє перетворити всі комп'ютерні ресурси світу у свого роду гігантський мультипроцесор з практично необмеженими обчислювальними можливостями. Вже нині для підключення до World Community Grid достатньо зареєструватися на її сайті, отримати логін і пароль, обрати цікавий для користувача проект, скачати та інсталювати програму BOINC-менеджер і увійти через нього у проект. Вже нині GRID забезпечує можливість проведення обчислень на глобальних компютерних ресурсах.

При цьому розподілені обчислення можуть виконуватися за двома технологіями - Distributed Computing та Grid Computing. Обчислювальні завдання, які не вимагають ніякої координації або синхронізації між машинами і не потребують додаткового управління в процесі роботи, зазвичай вирішуються за допомогою першої технології. Цей тип завдань типовий для великих Internet-проектів розподілених обчислень, які реалізуються за допомогою зв'язку «сервер - комп'ютер учасник», оскільки окремі фрагменти завдання можуть виконуватися у будь-якому порядку і можуть бути перерозподілені по інших машинах, якщо якийсь з результатів не вдалося отримати з першого разу. Це спричиняє необхідність надмірності обчислень, коли один і той самий блок завдання розсилається кільком учасникамдля гарантування отримання результатів обчислення окремого блоку.

Технологія Distributed Computing накладає серйозні обмеження на спектр задач, які вирішуються за її допомогою, однак є і переваги. Деяким дослідницьким організаціям, особливо некомерційним, часто недостатньо фінансування для придбання або оренди спеціальних ресурсів, зокрема суперкомп'ютерів або кластерних обчислювальних мереж. До того ж суперкомп'ютери і кластери вимагають постійного обслуговування, модернізації і навчання відповідального персоналу. Розподілені обчислення за допомогою армії користувачів Internet позбавлені цих недоліків і часто підключені до проекту обчислювальні потужності співрозмірні і навіть перевершують потужності сучасних суперкомп'ютерів.

Для організації розподілених обчислень необхідна відповідна програмна платформа. Система повинна вміти розбивати одну велике задачу на множину маленьких підзадач, розподіляти ці підзадачі по обчислювальних вузлах, приймати результати обчислень і об'єднувати їх в єдине ціле. Для цього були створені різні програмні «прошарки» між керуючим сервером і обчислювальними вузлами. Одним з таких програмних «прошарків» є BOINC. BOINC (Berkeley Open Infrastructure for Network Computing – відкрита платформа Університету Берклі для мережевих обчислень) – це вільно розповсюджувана програмна платформа для проведення розподілених обчислень|, розроблена для проекту SETI@home, спрямованого на об'єднання обчислювальних потужностей для обробки даних, що надходять від радіотелескопів. Система BOINC складається з програми-клієнта, спільної для всіх BOINC-проектів, складеного сервера (тобто сервера, що фізично може складатися з кількох окремих комп'ютерів) і програмного забезпечення. Для виконання розподілених обчислень використовується архітектура клієнт-сервер.

Початок масового впровадження Інтернет проектів за технологією Distributed Computing повязують з проектом RSA Data Security на конкурсне вирішення задачі злому 56-бітового ключа RC5-32/12/7 методом простого перебору (1997 р.). Базове програмне забезпечення під математичні завдання, що вирішуються за допомогою Distributed Computing (проекти RC5-64, RC5-72, OGR та інші) розроблене некомерційним об'єднанням distributed.net. До проектів distributed.net RC5-72 і OGR долучилися останніми роками і українські фахівці.

Українські наукові команди беруть активну участь і в організованому Стенфордським університетом проекті Folding@Home - найуспішнішому проекті розподілених обчислень медичної спрямованості – моделюванні фолдінга (згортання в тривимірну структуру) важливих білків людського організму. Результати проекту повинні забезпечити розуміння механізму процесу, причини його порушень та розробку відповідних ліків і способів лікування багатьох форм раку, хвороб Альцгеймера і Паркінсона, кістозного фіброзу, склерозу, діабету ІІ типу, коров'ячого сказу тощо.

Grid-ком’ютинг, чи метакомп’ютинг формувався перш за все як інтегратор обчислювальних ресурсів для вирішення різних "ресурсоємних" наукових задач. Задачі, які вирішуються за допомогою Grid Computing, вимагають активної міжмашинної взаємодії і синхронізації, що реалізується за допомогою спеціальних бібліотек MPІ, PVM, BSPlіb та інших. Ці бібліотеки, зазвичай, можуть бути застосовані лише в кластерних системах, оскільки потребують високої швидкості мережевих взаємодій і, відповідно, великого об'єму безперервного мережевого трафіку та безперервного доступу до всіх машин мережі. Першим технічним втіленням технології Grid Computing був віртуальний кластер "Бєовульф" (1994 р., Д.Бекер і Т.Стерлінг) на основі 16 звичайних комп'ютерів 486DX4, об'єднаних у єдину 10-Мбітну мережу з постійним обміном інформації між процесорами

Авторами концепції GRID (Grid, грід) вважаються американські вчені Ян Фостер та Карл Кесельман. Саме вони за аналогією з power grid (електромережа) запропонували термін grid computing для позначення універсальної програмно-апаратної інфраструктури, об'єднуючої комп'ютери і суперкомп'ютери в територіально-розподілену інформаційно-обчислювальну систему. За їхнім визначенням, «грід (grid) - узгоджене, відкрите і стандартизоване середовище, яке забезпечує гнучкий, безпечний, програмно сумісний скоординований поділ ресурсів в межах віртуальної організації, недорогий і загальний доступ до них та вирішення проблем в динамічних віртуальних організаціях».Пізніше це визначення багаторазово розширювалося і доповнювалось. За Яном Фостером, довільну інформаційно-обчислювальну систему можна вважати grid, якщо вона:

1. координує ресурси, які не контролюються централізовано (наприклад, об'єднуються ІОМ різних організацій чи різних адміністративних одиниць однієї компанії).GRID-система, на відміну від локальної ІОМ, повинна вирішувати питання політики доступу, безпеки, оплати послуг тощо, які виникають в гетерогенних системах;

2. застосовує відкриті, стандартні протоколи і інтерфейси загального призначення для вирішення таких базових питань, як аутентифікація, авторизація, пошук ресурсів і доступ до них;