Хмарний сервіс «Паралельний Matlab»
Созикін А.В. ([email protected]) - Інститут математики і механіки УрВ РАН, Єкатеринбург, г. Екатеринбург, Росія, доктор технічних наук, Гольдштейн М.Л. ([email protected]) - Інститут математики і механіки УрВ РАН, Єкатеринбург, г. Екатеринбург, Росія, кандидат технічних наук, Грибова В.В. ([email protected]) - Інститут автоматики і процесів управління ДВО РАН, г. Владивосток, Росія, доктор технічних наук, Москаленко Ф.М. ([email protected]) - Інститут автоматики і процесів управління ДВО РАН, г. Владивосток, Росія, доктор технічних наук
Розробка програм для сучасних суперкомп'ютерів (СК), що включають тисячі процесорних ядер і сотні прискорювачів (NVIDIA Tesla, Intel Xeon Phi), є складним завданням. Підвищити ефективність застосування СК можна за рахунок надання користувачам знайомого їм предметно-орієнтованого пакету прикладних програм, що підтримує паралельні обчислення. Одним з таких пакетів є Matlab, який в даний час широко застосовується для наукових і інженерних розрахунків. Однак паралельна версія Matlab, як і паралельні версії інших подібних пакетів, відрізняється високою складністю в установці і супроводі, в результаті користувачам практично неможливо самостійно встановити пакет і забезпечити його роботу в паралельному режимі на СК.
Актуальною є задача надання користувачам пакету Matlab, інтегрованого з СК, в хмарної конфігурації за моделлю SaaS. Під інтеграцією розуміється можливість запускати обчислювальну задачу на СК з графічного інтерфейсу Matlab, а також обробляти результати обчислень, наприклад, виконуючи візуалізацію результатів розрахунків, засобами Matlab. Установку і супровід пакету виконують кваліфіковані адміністратори хмарної платформи, що дає користувачам можливість займатися вирішенням наукових і технічних завдань, а не витрачати час і сили на установку і адміністрування. Для вирішення даного завдання створюється хмарний сервіс «Паралельний Matlab».
Паралельні обчислення в Matlab
Matlab включає кілька механізмів для проведення паралельних обчислень. Найпростіший підхід заснований на застосуванні многопоточности і працює на системах із загальною пам'яттю. Операції з матрицями, функції лінійної алгебри, обчислення перетворення Фур'є і деякі інші мають в Matlab многопоточную реалізацію, яка дозволяє використовувати кілька процесорів або процесорних ядер. Для застосування багатопоточності не потрібно модифікувати програму і купувати додаткові ліцензії.
Matlab Parallel Computing Toolbox додає до стандартних можливостей Matlab кошти для опису паралельних циклів і розподілених масивів. Parallel Computing Toolbox працює на серверах із загальною пам'яттю і графічних прискорювачах.
Matlab Distributed Computing Server призначений для запуску програм Matlab на кластері з розподіленою пам'яттю. При цьому на кожному вузлі кластера запускається один або кілька процесів Matlab, які обмінюються даними між собою по MPI. Distributed Computing Server може працювати як на виділеному кластері Matlab, так і на разделяемом кластері під керуванням системи запуску завдань.
Допускається спільне використання різних підходів до паралельних обчислень в Matlab. Наприклад, може бути запущено декілька процесів Matlab в кластері, кожен з яких використовує многопоточную функцію або GPU.
Таким чином, для проведення паралельних обчислень Matlab на СК необхідно наступне:
- СК зі встановленим Distributed Computing Server, інтегрованим з системою запуску завдань;
- робоче місце користувача з графічним інтерфейсом Matlab і Parallel Computing Toolbox, який забезпечить можливість відправляти завдання в чергу завдань СК для розрахунку.
Робоче місце користувача пропонується розмістити в хмарі і надавати доступ за моделлю SaaS.
Існуючі підходи до організації роботи Matlab в хмарної конфігурації
Корнельський університет реалізував проект «Matlab on the Teragrid» [1], метою якого було надання Matlab користувачам Teragrid в якості сервісу, в тому числі з використанням порталів наукової взаємодії, таких як nanohub.org [2]. В результаті розвитку проекту в Корнельському університеті (США) створена хмарна платформа Red Cloud [3], одним з сервісів якої є Matlab. Red Cloud пропонує використовувати хмарний кластер з Distributed Computing Server для паралельних обчислень. Клієнт Matlab з Parallel Computing Toolbox, який забезпечить запуск завдань на хмарному кластері, повинен бути встановлений на комп'ютері користувача. При цьому користувачеві необхідно встановити і налаштувати додаткове ПО, необхідне для взаємодії з хмарним кластером Red Cloud.
Очевидно, що в даний час немає загальноприйнятої архітектури надання Matlab як хмарного сервісу для паралельних обчислень. Mathworks Cloud володіє істотно обмеженими можливостями, Matlab в Amazon EC2 доступний тільки в США і Канаді, і деталі його роботи не відкриваються. Детальна інформація доступна по архітектурі Matlab в TeraGrid [1], але дане рішення вимагає установки клієнта Matlab і додаткового ПЗ на комп'ютерах користувача.
Для хмарного сервісу «Паралельний Matlab» запропоновано архітектурне рішення, що дозволяє надавати в якості сервісу не тільки кластер Distributed Computing Server, а й клієнт Matlab з графічним інтерфейсом і Parallel Computing Toolbox. Таким чином, користувачеві не потрібно виконувати установку і налаштування додаткового програмного забезпечення; для роботи з паралельним Matlab йому досить мати тільки web-браузер. Схема розробленої архітектури хмарного сервісу «Паралельний Matlab» приведена на малюнку.
Matlab з графічним інтерфейсом встановлюється в хмарної платформі і надається користувачам за моделлю SaaS. Доступ користувачів здійснюється через web-інтерфейс з використанням VNC. Інтеграція з суперкомп'ютером виконується засобами Parallel Computing Toolbox, який забезпечує можливість взаємодії з менеджером ресурсів суперкомп'ютера. Parallel Computing Toolbox дозволяє з графічного інтерфейсу Matlab ставити завдання в чергу для розрахунку на СК, проводити моніторинг виконання завдання, а після завершення розрахунків завантажувати результати для подальшої обробки в графічному інтерфейсі. Менеджер ресурсів СК перед початком виконання завдання забезпечує запуск необхідної кількості процесів Matlab (Matlab workers) на обчислювальних вузлах СК, які потім займаються розрахунком завдання.
Для коректної спільної роботи Matlab на СК і в хмарі потрібно вирішити дві допоміжні завдання.
1. Код програм і дані, підготовлені в хмарі, повинні бути доступні СК, коли завдання буде запущена на рахунок.
2. Необхідно забезпечити узгоджені механізми контролю доступу користувачів як до хмарної платформі, так і до СК.
Завдання доступності коду програм і даних може бути вирішена двома шляхами. Дані та код можна копіювати з хмарної платформи на СК засобами Parallel Computing Toolbox при постановці завдання в чергу. Такий підхід простий в реалізації, але погано працює з великими обсягами даних. Альтернативне рішення полягає в створенні розділяється системи зберігання даних, підключеної як до хмарної платформі, так і до СК. В цьому випадку програми і дані, підготовлені на хмарної платформі, відразу будуть доступні СК без проміжного копіювання. Так як на СК переважно вирішуються завдання, які обробляють великі обсяги даних, для хмарного сервісу «Паралельний Matlab» обрано підхід на основі загальної системи зберігання, що дозволяє уникнути проміжного копіювання вхідних даних і результатів обчислень. Недоліком такого підходу є те, що на серверах хмарної платформи і обчислювальних вузлах СК необхідно використовувати одну і ту ж операційну систему і однакову технологію доступу до системи зберігання, що не завжди зручно.
Запропонована архітектура реалізована в ІММ УрО РАН на основі обчислювальної хмарної платформи УрО РАН [4] і СК «УРАН». У хмарної платформі створений набір віртуальних машин, де встановлений Matlab з графічним інтерфейсом і Parallel Computing Toolbox. Віртуальні машини працюють під управлінням ОС Scientific Linux 6. Доступ користувачів організований на основі VNC [5] і web-клієнта noVNC. Користувачі можуть отримувати доступ до сервісу за допомогою як web-браузера (з використанням noVNC), так і VNC-клієнта.
Інтеграція з суперкомп'ютером «УРАН» виконана на основі менеджера ресурсів SLURM [6]. Parallel Computing Toolbox не включає вбудовану підтримку роботи з SLURM, тому був використаний Generic Scheduler Interface, для якого розроблено Client Submit і Decode функції з підтримкою SLURM. При запуску завдання віртуальна машина з Matlab на хмарної платформі встановлює з'єднання з SSH з керуючою машиною СК «УРАН» і за допомогою команд SLURM ставить завдання в чергу. Контроль стану завдання і завантаження результатів обчислень можливі в графічному інтерфейсі Matlab на хмарної платформі з використанням команд зі складу Parallel Computing Toolbox.
На закінчення відзначимо, що в роботі описаний підхід до організації хмарного сервісу «Паралельний Matlab». Запропонована архітектура хмарного сервісу, відмінною рисою якого є те, що користувачам надається не тільки обчислювальний кластер з Distributed Computing Server, а й графічний інтерфейс Matlab з можливістю запуску обчислювальних задач на кластері з використанням Parallel Computing Toolbox. Запропонована архітектура реалізована в ІММ УрО РАН на основі обчислювальної хмарної платформи УрО РАН і СК «УРАН». Практична реалізація підтвердила працездатність запропонованої архітектури.
В даний час суттєві обмеження на можливості використання сервісу «Паралельний Matlab» накладає ліцензійна політика компанії Mathworks, яка не передбачає ліцензії для використання в хмарі. З Matlab може працювати тільки організація-власник ліцензій. Таким чином, через ліцензійних обмежень поточна реалізація сервісу «Паралельний Matlab» доступна тільки співробітникам ІММ УрО РАН, що є істотним недоліком, так як суперкомп'ютер «УРАН» призначений для будь-яких інститутів УрО РАН.
Напрямком подальших робіт є створення віртуальної web-лабораторії «Паралельне програмування в Matlab», яка, крім хмарного сервісу «Паралельний Matlab», включатиме навчальний курс і методики проведення паралельних розрахунків в Matlab. Планується забезпечити можливість використання на віртуальних машинах з графічним інтерфейсом Matlab ОС Windows, яка затребувана користувачами. Для цього необхідно вирішити проблему з передачею коду і даних, підготовлених в Windows, на обчислювальний кластер з Linux.