Distributed Computing team of Ukraine | Ukraine - Українська Команда Розподілених Обчислень | Ukraine - Украинская Команда Распределённых Вычислений - Описи проектів

https://distributed.org.ua/index.php?go=Pages&in=view&id=20
Распечатать

Історія розподілених обчислень



Історія розподілених обчислень


версия на русском

Автор: Макс Арбалет, переклад: Артем Артьомов (Nadvirna_Dolyna)


За найсміливішими припущеннями, початок розподіленим обчисленням було закладено два сторіччя назад. Безумовно, ні про які комп'ютери тоді не могло бути і мови, але це був час, коли перед ученими вже ставили завдання великомасштабних обчислень. І ці задачі потрібно було вирішувати. Здогадуєтеся яким чином? Саме так! Застосовуючи принцип розподілених обчислень.

Наприкінці 18-го сторіччя уряд Франції вирішив істотно поліпшити логарифмічні і тригонометричні таблиці. Робота була пов'язана з величезними на ті часи об'ємами розрахунків, а тому її доручили професіоналові, баронові Гаспару де Проні, який був головним обчислювачем при французькому уряді в 1790-1800 рр. В результаті з'явилася знаменита "обчислювальна мануфактура" барона де Проні.

Барон сміливо узяв на озброєння ідею про розподіл праці і переніс її принципи на обчислювальний процес. Виконавці проекту були розподілені на три рівні. Найнижчий рівень в системі займали звичайні люди-обчислювачі ("комп'ютери"), від яких потрібно було тільки проводити акуратні арифметичні дії. На другому рівні стояли освічені технологи ("сервери" проекту), які організовували рутинний процес, розподіляючи завдання і обробляючи отримані обчислювачами дані. Найвищий рівень займали видатні французькі математики ("адміністратори-програмісти" проекту), серед яких були Адрієн Лежандр і Лазар Карно. Вони готували математичне забезпечення - по суті писали "програми". У результаті баронові де Проні вдалося організувати процес таким чином, щоб звести дуже складні завдання до набору рутинних операцій, завдяки чіткій системі контролю і добре відлагодженій системі розподілу роботи між обчислювачами.

Ідеї де Проні підштовхнули Чарльза Беббіджа до створення першої в історії обчислювальної машини, а засновані на прототипі барона "обчислювальні мануфактури" використовувалися в дослідницьких проектах аж до середини 20 століття, за їх допомогою, зокрема, розраховувалися перші ядерні бомби в США, Великобританії і Радянському Союзі.

Вперше завдання сумісного використання вільних обчислювальних ресурсів комп'ютерів була оригінальним чином вирішена на початку 1970-х рр. вченими з дослідницького центру PARC (Xerox, Palo Alto), які займалися розробкою програм для перших комп'ютерних мереж. У 1973 р. Джон Шох і Жон Хапп написали просту програму, яка запускалася ночами в локальну мережу PARC, розповзалася по працюючих комп'ютерах і примушувала їх виконувати обчислення.

Наступний якісний стрибок в технічному рішенні задачі сумісної роботи багатьох комп'ютерів над єдиним складним завданням відбувся наприкінці 1980-х рр., коли з'явилися персональні комп'ютери та електронна пошта. У 1988 р. Ар'єн Ленстра і Марк Менес, що працювали на компанію DEC (Palo Alto), написали програму для факторизації (розбиття на множники) довгих чисел. Для швидкого завершення поставленого завдання програма могла запускатися на декількох не пов'язаних одна з одною машинах, кожна з яких обробляла свій невеликий фрагмент числа. Нові блоки завдань розсилалися на комп'ютери учасників (а пораховані результати приймалися) за допомогою центрального сервера проекту по звичайній електронній пошті. Для успішного розкладання на множники числа завдовжки в сто знаків цій спільноті було потрібно два роки і декілька сотень персональних комп'ютерів.

Таким чином, саме проект Ленстра-Менеса продемонстрував не тільки принципову можливість розподіленої обчислювальної мережі, але і високу ефективність у виконанні поставлених перед таким проектом завдань. По суті, саме звідси потрібно починати історію публічних Internet-проектів розподілених обчислень (Distributed Computing), до яких зокрема належить проект Folding@Home.

У випадку з більш раннім "черв'яком" з дослідницького центру PARC - це був скоріше початок іншого напрямку розподілених обчислень: кластерного, пізніше названого Grid Computing (паралельні обчислення або "решітки" обчислювальних ресурсів). Адже в лабораторії PARC машини були зв'язані першою Ethernet-мережею і постійно обмінювалися даними на великій швидкості, синхронізуючи свою роботу над окремими фрагментамизавдання.

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

Тепер необхідно вказати на різницю двох напрямків розподілених обчислень. Поняття Distributed Computing і Grid Computing часто змішують, але це неправильно.

Завдання, які реалізуються за допомогою Grid Computing, вимагають активної міжмашинної взаємодії і синхронізації, що реалізовується за допомогою спеціальних бібліотек MPІ, PVM, BSPlіb  та інших. Ці бібліотеки зазвичай можуть бути застосовані лише в кластерних системах, оскільки потребують високої швидкості мережевих взаємодій і, відповідно, великого об'єму безперервного мережевого трафіку. Той факт, що мережеві взаємодії здійснюються між всіма машинами, які задіяні в обчисленнях, також означає заборону на використання міжмережевих екранів або інших засобів обмеження мережевих потоків. Також це зазвичай означає, що абсолютно всі машини повинні бути доступні з початку і до кінця вирішення задачі. Тому, реалізована на таких принципах обчислювальна мережа можлива найчастіше в межах деякої замкнутої організації. Через ці обмеження, завдання, які вимагають використання цих бібліотек, зазвичай не підходять для великомасштабних розподілених проектів.

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

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

Висловлюються оптимістичні прогнози, що незабаром в лад увійде нова архітектура Distributed Computing, яка дозволить комп'ютерам-учасникам обмінюватися даними безпосередньо між собою, не дивлячись на складнощі і епізодичність підключення до мережі Internet. Більш того, проводяться активні дослідження можливості використання в обчисленнях графічних процесорів (GPU) відеокарт. Про плани по запуску клієнта для GPU вже оголошено керівництвом проекту Folding@Home. Це дозволить не тільки розширити область застосування публічних розподілених обчислень, але і значно збільшить ємність її обчислювального потенціалу.

Але повернемося до історії Distributed Computing: часу виходу розподілених обчислень на широку арену.

Після успішного закінчення проекту Ленстра-Менеса були популярні проекти різних математичних досліджень. У 1993 р. учасники одного з таких проектів факторизували число довжиною 129, потім 130 знаків. Потім пішла мода на пошук простих чисел(тобто тих, що діляться тільки на одиницю і на самих себе), нових чисел Серпінського, Мерсенна та ін. в тому ж дусі. Ці проекти не відрізнялися ні технічною опрацьованістю, ні розмахом, ні великою кількістю учасників. Але так продовжувалося не довго.

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

13 травня 1999 р. Девід Гиді і Крейг Кеснов запустили проект пошуку сигналів позаземних цивілізацій SETI@Home (SETI - Search for Extraterrestrial Intelligence), який став найбільш масовим проектом розподілених обчислень всіх часів. Величезній популярності (більше 5 млн. учасників) сприяло те, що проект вперше переклав на рейки Distributed Computing наукове завдання, що інтригує і яке є далеке від нудної факторизації або злому чергового ключа. Приголомшливий успіх проекту (у плані привернутих обчислювальних потужностей) переконав вчених активніше використовувати незадіяний потенціал комп'ютерів рядових користувачів всесвітньої павутини у багатьох областях наукових досліджень.

1 жовтня 2000 р. під керівництвом Віждая Панде, засновника академічної установи Pande Group при Стенфордському університеті, стартував проект Folding@Home. Завдяки чітким практичним цілям, хорошій науковій основі і реальним результатам проект отримав масову підтримку (більш півмільйона учасників за весь час існування) і серйозні обчислювальні ресурси (більше ніж 200 тисяч процесорів, що постійно або тимчасово підключені зараз до проекту).

Першоджерела:



| 25.07.2006 14:25