- •Побудова моделі прогнозування шкідливих викидів в атмосферу з використанням графічних багатоядерних процесорів
- •Побудова дискретних динамічних моделей прогнозування концентрації шкідливих викидів
- •1.1 Проблеми побудови математичних моделей прогнозування концентрації шкідливих викидів в атмосферу
- •Аналіз та обгрунтування вибору засобів розпаралелення обчислень
- •2.2 Програмні засоби розпаралелення на графічних багатоядерних процесорах
- •Паралелізація побудови моделей
Паралелізація побудови моделей
Розпаралелення побудови дискретних динамічних моделей
Зважаючи на велику кількість операцій над векторами, для практичної реалізації алгоритму обрано архітектуру процесорів SIMD, яка дає змогу виконати один і той самий потік команд для багатьох потоків даних, що характерне для цієї задачі. Системи цього типу будуються таким чином, що процесорні елементи, які входять у систему, ідентичні, і всі вони керуються одною і тією ж послідовністю команд. Проте кожний процесор оброблює свій потік даних. Під таку схему добре підходять задачі обробки матриць або векторів, задачі розв’язку систем лінійних та нелінійних, алгебраїчних і диференціальних рівнянь, задачі теорії поля та інші [14, 15].
В алгоритмі, який описаний у п. 1.3 пропонується використати розпаралелення за двома рівнями паралелізму: дрібнозернистий та крупнозернистий [5]. При крупнозернистому паралелізмі кожне паралельне обчислення є незалежне від інших, причому вимагає лише епізодичного обміну інформацією між окремими процесорами. Компонентами такого розпаралелення є досить великі, однак незалежні програми, що можуть налічувати тисячі команд. На відміну від крупнозернистого, при дрібнозернистому кожне паралельне обчислення мале та елементарне і реалізується десятками команд. При ньому компонентами розпаралелення є елементи виразів або окремі ітерації циклу, які мають незначну кореляцію за даними [15].
Враховуючи специфіку архітектури GPU, алгоритм на рис. 1.1 можна привести до алгоритму на рис. 3.1, який використовує розпаралелення [5].
Рис. 3.1. Блок-схема розпаралеленого алгоритму напрямного конуса Растригіна
У
цьому алгоритмі для блоків 4, 5 паралельного
алгоритму використано крупнозернисте
розпаралелення. А саме у блоці 4 (вибір
точки) кожна точка буде в окремому
потоці, які виконуватимуться паралельно.
У блоці 5 (обчислення значення функції
мети в m
точках) розрахунок значення функції
мети
проводиться також на окремих потоках
[5].
З програмного погляду реалізація цього розпаралелення не вимагає великих затрат завдяки програмній архітектурі графічного процесора. Для всіх потоків пересилається ідентичний програмний код. Вхідними даними для кожного потоку є параметри чергового гіперконуса, вони для всіх потоків однакові. На виході кожного потоку отримують значення функції мети, яке обчислене у випадковій точці гіперконусу (для кожного потоку – своє). Усі вихідні дані зберігаються у спільній пам’яті потоків для подальшого обчислення мінімуму.
Для
максимального використання паралельності
архітектури пропонується для блоків
алгоритму 6, 8 (рис. 3.1) застосувати
дрібнозернисте розпаралелення. Зокрема,
у блоці 6 необхідно знайти мінімальне
значення функції мети
.
Для цього краще використати метод
редукції розмірності даних, який досить
легко реалізовується на запропонованій
архітектурі й не вимагає значних
обчислювальних затрат. Для знаходження
вектора пам’яті
,
що обчислюється покомпонентно, у блоці
8 знову застосовується дрібнозернисте
розпаралелення.
Розпаралелення процедури пошуку мінімального значення функції мети
Задача
редукції полягає у знаходженні
мінімального значення серед елементів
масиву
.
У загальному вигляді дана операція
формулюється наступним чином. Нехай
заданий масив a0,
a1,
a2,…,an-1
і
деяка бінарна асоціативна операція
(додавання, множення, знаходження
мінімуму чи максимуму).
Алгоритм послідовного знаходження мінімуму великих масивів чисел на центральному процесорі простий: припускають, що перший елемент масиву мінімальний, тоді інші елементи масиву послідовно порівнюються з цим елементом. Якщо якийсь елемент буде меншим, то він стає мінімальним значенням і продовжується перевірка. Для масиву з n елементів алгоритму потрібно n-1 порівнянь. Для побудови моделі з використанням оптимізації пошук мінімуму виконується дуже часто. Тому для зменшення часової складності запропоновано використати метод редукції даних. Кінцевий результат отримуємо, коли програмний цикл доходить до останнього елемента (рис. 3.2).
Рис. 3.2. Алгоритм послідовного знаходження мінімуму
Задачу запускають на багатьох ядрах. Наприклад, на вхід поступає 500 значень функцій мети, а програма видає одне. Тобто в результаті отримується новий масив, який в 500 разів менший за попередній. Такі операції проводять доти, поки на виході не залишиться один елемент, який і буде мінімальним.
Класичний метод пошуку мінімуму простий, проте паралельний ефективний. Кожного разу буде звільняти фізичне місце, яке можна використати з користю.
Схема ієрархічного знаходження мінімального елемента подана на рис. 3.3 [5]. Такий метод дає змогу проводити обчислення мінімуму функції мети паралельно, використовуючи багато потоків.
Рис. 3.3. Схема ієрархічного знаходження мінімального елемента
Для вирішення задачі знаходження мінімуму здійснено розпаралелення процесу на GPU AMD засобами OpenCL.
Кожна операція на GPU виконується окремою обчислюваною одиницею (work-item). Work items мають свою власну пам´ять, що складає по 32 регістри на item. Обчислювані одиниці об´єднуються в групи (workgroup), кожна з яких має доступ до локальної пам´яті даної групи (8 КБ). Всі групи мають доступ до спільної пам´яті графічного адаптера – global memory [16].
Виходячи з архітектури графічних процесорів AMD та особливостей технології OpenCL запропоновано алгоритм паралельного знаходження мінімуму :
1. Набір елементів, серед яких необхідно знайти мінімальний, подається у вигляді одномірного масиву. Цей масив розбивається навпіл на 2 підмасиви (рис. 3.4). Кожен підмасив являє собою логічну одиницю. Якщо кількість елементів вхідного масиву є непарне число, то масив приводять до доступного для розпаралелення вигляду. Для цього серед останніх елементів знаходиться мінімум.
Рис. 3.4. Алгоритм паралельного знаходження мінімуму (етап 1)
2. Одержані масиви завантажуються в global memory графічного адаптера. Після чого попередньо завантажена в пам´ять OpenCL-програма за принципом SIMD виконує попарно операцію порівняння над кожною парою елементів (рис. 3.5).
Рис. 3.5. Алгоритм паралельного знаходження мінімуму (етап 2)
3. На виході отримуємо результуючий масив, який в подальшому знову подається на GPU як вхідний масив (рис. 3.6).
Рис. 3.6. Алгоритм паралельного знаходження мінімуму (етап 3)
4. Розпаралелене знаходження мінімуму елементів векторів на GPU відбувається до тих пір, доки на виході не отримається вектор, який включає у себе лише один елемент, тобто мінімум.
Оцінка ефективності розпаралелення
Для перевірки ефективності запропонованого алгоритму розпаралелення проведено тестування знаходження мінімуму функцій мети на CPU та GPU. Використано наступні апаратні засоби:
CPU – Intel P8800 Core 2Duo 2,66 Ггц,
GPU – ATI Mobility Radeon HD 4650, streems – 320.
Критерієм якості використання графічного акселератора є прискорення. Для цього показники отриманого прискорення часу розв’язування задачі порівняно з часом роботи послідовної програми:
де – S прискорення; tпосл – час виконання послідовної програми; tпар – час виконання паралельної програми.
На рисунку 3.7 приведено показники прискорення паралельної програми.
Рис. 3.7. Прискорення паралельної програми
Ефективність паралельного алгоритму, як відношення його прискорення до числа процесорів, на якому це прискорення отримане, обчислено за формулою:
де E – ефективність; p – число процесорів.
На рисунку 3.8 приведено показники ефективності паралельної програми.
Рис. 3.8. Прискорення паралельної програми
Перевагами розпаралеленого знаходження мінімуму на GPU засобами OpenCL є:
Вища швидкість виконання обчислень, ніж при виконанні обчислень на центральному процесорі;
2. Зі збільшенням об´ємів даних ефективність виконання обчислень на GPU збільшується, в той час як на CPU – залишається сталою;
3. Кількість одночасно виконаних операцій порівняння обмежується лише кількістю виконуваних одиниць графічного адаптера. Як наслідок: швидкість роботи може бути збільшена при залученні до обчислень інших графічних адаптерів.
Серед недоліків даного алгоритму слід виділити те, що складність програмної реалізації алгоритму є вищою, ніж при послідовному виконанні. Також необхідно знати принципи функціонування графічних адаптерів та їх елементів, особливості роботи з пам´яттю GPU.
ВИСНОВКИ
Проведено аналіз відомих апаратних та програмних засобів для розпаралелення обчислень. Засобами розпаралелення задачі побудови дискретних динамічних моделей для прогнозування шкідливих викидів обрано графічні багатоядерні процесори, оскільки вони є доступні за критерієм відношення ціна/продуктивність.
Обґрунтовано метод паралельної редукції для знаходження мінімального значення функції мети на графічному процесорі. Прискорення пошуку мінімального елемента з використанням розпаралелення зростає в 3 рази.
Удосконалено побудову дискретних динамічних моделей для прогнозування концентрацій шкідливих викидів в атмосферу, що суттєво пришвидшило процес ідентифікації їх параметрів. Завдяки реалізованому розпаралеленню вдалось побудувати дискретну динамічну модель для задачі прогнозування концентрацій шкідливих викидів. Побудова цієї макромоделі при використанні традиційного алгоритму без розпаралелення закінчилась невдачею.
СПИСОК ВИКОРИСТАНИХ ДЖЕРЕЛ
Стахів, П.Г. Побудова макромоделей електромеханічних компонент із використанням оптимізації / П.Г. Стахів, Ю.Я. Козак // Технічна електродинаміка. – 2001. – №4. – С. 33–36.
Стахів, П.Г. Побудова математичної макромоделі електромеханічного перетворювача вентильного двигуна з використанням оптимізації / П.Г. Стахів, Ю.Я. Козак, В.Г. Гайдук // Електроенергетичні та електромеханічні системи // Вісник національного університету «Львівська політехніка». – 2001. – №418. – С. 159–164.
Струбицька І.П. Особливості програмної реалізації розпаралелення процесу побудови дискретних динамічних моделей // Інформаційні системи та мережі: Вісник Національного університету «Львівська політехніка». – 2014. №783. – С. 217-224.
Растригин Л.А. Адаптация сложных систем / Л.А. Растригин - Рига: Зинатне, 1981. – 375 с.
Козак Ю. Я. Розпаралелення алгоритму оптимізації параметрів дискретних динамічних моделей на масивно-паралельних процесорах / Ю. Я. Козак, П. Г. Стахів, І. П. Струбицька // Відбір і обробка інформації. – 2010. – Вип. 32 (108). – С. 126-130.
Струбицька І.П. Oцінка ефективності розпаралелення оптимізаційної процедури побудови дискретних динамічних моделей // Індуктивне моделювання складних систем. – 2013. – Вип. 3. – С. 288-296.
Золотарев С. Программное обеспечение многоядерных систем /Сергей Золотарев, Алексей Рыбаков [Электронный ресурс]. – Режим доступа: http://stem.osp.ru/os/2006/02/1156508/.
Богданов А. В. Архитектуры и топологии многопроцессорных вычислительных систем: Електронний учебник /А. В. Богданов, В. В. Корхов, В. В. Мареев, Е. Н. Станкова. [Электронный ресурс]. – Режим доступа: http://ftp.informika.ru/text/teach/topolog/index.htm.
Бараш Л. Кластеры: базовые понятия. /Л. Бараш [Электронный ресурс]. – Режим доступа: http://ko.com.ua/node/33003.
Бойко Ю. В. Український академічний ГРІД: досвід створення і перші результати експлуатації /Ю. В. Бойко, М. Г. Зинов'єв, С. Я. Свістунов, О. О. Судаков //Математичні машини і системи. ‑ К., 2008. ‑ №1. ‑ С. 67 -84.
Боресков А. В. Основы работы с технологией CUDA /А. В. Боресков, А. А. Харламов. – М.: ДМК Пресс, 2010. – 232 с.
Струбицька І.П. Аналіз сучасних графічних процесорів з підтримкою CUDA / І.П. Струбицька, А.І. Цигипало // Матеріали ІIІ Всеукраїнської школи-семінару молодих вчених і студентів «Сучасні комп’ютерні інформаційні технології”. – Тернопіль: ТНЕУ, 2013. – С. 162-163.
NVIDIA CUDA – неграфические вычисления на графических процесорах [Электронный ресурс]. – Режим доступу: http://www.ixbt.com/video3/cuda-1.shtml.
Гергель В.П., Стронгин Р.Г. Основы параллельных вичислений для многопроцессорных вычислительных сестем: Учеб. пособие. – Нижний Новгород: Изд-во ННГУ им. Н.И. Лобачевского, 2003. – 184 с.
Шпаковский Г. И. Применение технологии MPI в Грид /Г. И.Шпаковский, В. И.Стецюренко, А. Е. Верхотуров, Н. В. Серико-ва. – Минск: Изд-во БГУ, 2008. – 137 с.
Введение в OpenCL [Электронный ресурс]. – Режим доступа: http://habrahabr.ru/post/124925/.
