Розробка програмного комплексу для метакомп’ютерних обчислень
Authors: Чумак Дмитро Олександрович , Семеріков Сергій Олексійович 
Published: March 2022

Метакомп’ютінг (розподілені обчислення в Інтернет) – одна з «модних» технологій останніх десятиліть, призначена насамперед для рішення задач, що вимагають розподіленої обробки великих масивів даних. Для розв’язання на метакомп’ютерах найбільш придатні задачі пошукового і переборного характеру. Класичним прикладом таких задач є задачі теорії чисел. Огляд існуючих розподілених систем показує, що, за рідким винятком, вони є вузькоспеціалізованими (призначеними для розв’язання однієї задачі). Тому розробка архітектури універсальної метакомп’ютерної системи, призначеної для розв’язання вказаного класу переборних задач, має високу актуальність.Основна мета роботи полягала в розробці архітектури універсальної розподіленої системи для розв’язання теоретико-числових проблем та її програмної реалізації. В результаті аналізу літератури та існуючого програмного забезпечення було встановлено, що:Найбільш придатними для розв’язання в розподілених системах є задачі, що вимагають обробки великих обсягів слабко корельованих даних, зокрема теоретико-числові проблеми.Для реалізації розподіленої системи доцільно використовувати класичні технології: інтерфейс сокетів та багатопоточність.Аналіз існуючих метакомп’ютерних систем показує практично повну відсутність оболонок для створення таких систем при високому попиті на даний клас програмного забезпечення.Засоби, використані при побудові розподіленої системи: pthread – застосовується для багатопоточної роботи програмного комплексу; Boost – використовується для створення надійної, розширюваної та простої архітектури програмного комплексу; log4cxx – застосовується для реєстрації процесу роботи програмного комплексу; GMP – використовується для математичних обчислень з високою точністю; OpenSSL, на прикладі якої розглядається можливість організації захищеного зв’язку у програмних засобах за архітектурою “клієнт-сервер”.Функціональна схема роботи створеного в процесі дослідження комплексу Metacomputing Framework (http://sf.net/projects/mcframework/):один сервер займається розв’язанням однієї задачі;при старті сервер одержує діапазон і бібліотеку, що він буде надсилати клієнту;агент одночасно виконує тільки одну задачу (бібліотеку) і з’єднується тільки з одним сервером, але може обробляти кілька діапазонів одночасно (у різних потоках);на одній машині може бути запущено кілька серверів для розв’язання різних задач, так само і з клієнтами;після видачі клієнту конкретного діапазону, сервер чекає на результат протягом визначеного часу, за який цей діапазон нікому іншому не видається; у випадку одержання результату від клієнта, даний діапазон позначається відповідним чином; якщо клієнт не виходив на зв’язок протягом визначеного терміну, даний діапазон вважається неопрацьованим і розподіляється заново;сервер є відмовостійким та періодично зберігає отримані результати у файл, використовуючи який, можна поновити роботи після збою системи чи тимчасової зупинки сервера;агент є кросплатформеним, підтримувані платформи – POSIX (Linux, FreeBSD і т.д.), Windows;агент щораз відкриває і закриває з’єднання із сервером під час звітування та повернення результатів;агент зберігає завантажені бібліотеки. При старті клієнт перевіряє наявність яких-небудь файлів у визначених директоріях, обчислює хеш кожного зі знайдених файлів і намагається по черзі завантажити їх як динамічну бібліотеку. Якщо це вдається, то клієнт одержує версію бібліотеки, викликавши відповідну інтерфейсну функцію;зв’язок між агентом і сервером здійснюється по двох каналах: 1) керуючий (передача команд); 2) канал даних (передача даних, таких як файли бібліотек, результати обчислень тощо).Обчислювальний експеримент проводився на ПП «Апріоріт» (м. Дніпропетровськ). Тривалість експерименту склала двоє доби (49 годин 23 хвилини 55 секунд). В ході експерименту було обчислено 27 перших простих числа Мерсенна, що зайняло 28 годин 7 хвилин і 5 секунд.Усі розрахунки є вірними і відповідають уже відомим числам Мерсенна. Під час експерименту не було отримано помилкових даних, внаслідок чого можна зробити висновок про те, що розроблений програмний комплекс успішно справляється з задачами, для виконання яких він призначений та повністю відповідає технічному завданню.Подальший розвиток дослідження передбачає розширення функціональності програмного комплексу Metacomputing Framework шляхом створення допоміжних програмних утиліт, що надають статистику про хід виконання обчислень в режимі реального часу та дозволяють прозоро додавати і видаляти в працюючій системі нові завдання, а також розподіляти обчислювальні ресурси агентських машин між різними задачами по пріоритетах.