АНАЛІЗ
ВИКОРИСТАННЯ МУЛЬТИЯДЕРНИХ ТЕХНОЛОГІЙ ПАРАЛЕЛЬНИХ ОБЧИСЛЕНЬ
Ломакіна О.Ю.
Національний
технічний університет України “КПІ”, Україна
Розробка
нових інтерфейсів управління програмним та апаратним забезпеченням комп’ютерів
на основі використання жестів та їх реалізація у вигляді системи розпізнавання
жестів (СРЖ), - є перспективним напрямком розвитку інформаційних технологій. Переваги
та недоліки даного способу вводу інформації багато в чому залежать від
використовуваних технологій визначення і обробки інформації про положення і рух рук.
При вирішенні
актуального наукового завдання щодо удосконалення методів і засобів програмної
та апаратної реалізації ефективної (СРЖ) доцільно провести аналіз використання
мультиядерних технологій паралельних обчислень GPGPU.
Графічний
процесор (GPU) - окремий пристрій персонального
комп'ютера, що виконує графічну обробку даних. Сучасні графічні процесори дуже
ефективно обробляють і зображують комп'ютерну графіку, завдяки спеціалізованій
конвеєрній архітектурі вони набагато ефективніші в обробці графічної
інформації, чим типові центральні процесори. Центральний процесор (CPU) - виконавець машинних інструкцій, частина апаратного
забезпечення комп'ютера або програмувального логічного контролера,
відповідальний за виконання операцій, заданих програмами. GPGPU («GPU
загального призначення») - техніка використання
графічного процесора відео карти для загальних обчислень, які звичайно
проводить центральний процесор.
З розвитком технологій, виробники прагнуть
збільшити швидкість обробки даних, виконання команд й у цілому підвищити
продуктивність, при цьому зменшуючи розміри самих обробних пристроїв. При цьому
розглядаються всі можливі методи збільшення продуктивності.
Ріст продуктивності сучасних CPU обмежується фізично розмірами і
енергоспоживанням. Сьогодні ріст продуктивності CPU збільшується за рахунок
розміщення декількох ядер на одному чипі. Кожне ядро працює окремо, виконуючи
команди окремого процесу. CPU використовують технологію MIMD - (Multiple
Instruction stream, Multiple Data stream) множинний потік команд і даних.
Тут проявляється перша відмінність CPU від GPU.
GPU використовує технологію SIMD – (Single Instruction, Multiple Data)
одиночний потік команд, безліч потоків даних. У відео чипах основним блоком є
мультипроцесор з вісьма-десятьома ядрами – це інша принципова відмінність CPU
від GPU.
Ядра CPU створено для виконання одного потоку
послідовних інструкцій з максимальною продуктивністю, а GPU використовуються
для швидкого виконання великого числа паралельно виконуваних потоків
інструкцій. CPU оптимізовані для досягнення максимальної продуктивності
окремого алгоритму, інструкцій. У відео чипів робота є паралельною завжди. На
вході ухвалюються полігони, проводяться необхідні операції, і на виході
одержуємо пікселі. При чому обробка полігонів ніяк не зв'язана між собою.
Також
відмінність GPU від CPU проявляється й у принципі доступу до пам'яті. Тобто, в
GPU при записі пікселя в буфер через якийсь час буде записаний і сусідній з ним
піксель. У наслідку такої організації пам'яті, чипу просто не потрібна
кеш-пам'ять великого розміру ( до 256 кБ).
Та й сама по собі робота з пам'яттю в GPU і CPU
трохи відрізняється. Так, не всі центральні процесори мають вбудовані
контролери пам'яті, а у всіх GPU звичайно є по кілька контролерів, аж до восьми
64-бітних. Крім того, на відео картах застосовується більш швидка пам'ять, і в
результаті відео чипам доступна в рази більша пропускна здатність пам'яті.
Крім цього CPU використовують кеш для
збільшення продуктивності за рахунок зниження затримок доступу до пам'яті, а
GPU використовують кеш для збільшення смуги пропускання. CPU знижують затримки
доступу до пам'яті за допомогою кеш-пам'яті великого розміру, а також
пророкування розгалужень коду. Ці апаратні частини займають більшу частину
площі чипа й споживають багато енергії. Відео чипи обходять проблему затримок доступу до пам'яті за
допомогою одночасного виконання тисяч потоків - у
той час, коли один з потоків очікує даних з пам'яті, відео чип може виконувати
обчислення іншого потоку без очікування й затримок.
До загальнопоширених можливо віднести:
CUDA -
технологію GPGPU, що дозволяє реалізовувати на Сі++ алгоритми, здійсненні на
графічних процесорах прискорювачів Geforce восьмого покоління й старше.
Технологія CUDA розроблена компанією Nvidia. Простіше говорячи, графічна
підсистема комп'ютера з підтримкою CUDA
може бути використана, як обчислювальна.
Close To
Metal (CTM) – технологія GPGPU, що використовує низькорівневе програмування на
графічних процесорах ATI (AMD Graphics Products Group). CTM є віртуальною
машиною, що виконує асемблерний код, у той час як CUDA – своєрідне розширення
Сі++. Дві ці платформи несумісні між собою. Враховуючи більшу доступність для
широкого кола користувачів технологій GPGPU CTM, саме вона використовується при
обчислені контурів зображень та у функціях, які реалізують корекцію колірних
перехідних характеристик.
Проведений
аналіз використання мультиядерних технологій паралельних обчислень дозволив
запропонувати новий підхід для практичної реалізації розроблених систем
розпізнавання жестів – використання мультиядерних графічних процесорів для
розпаралелювання процедури визначення контурів та сегментації у рамках задачі
розпізнавання жестів людини в реальному масштабі часу.
Програмні реалізації
запропонованого підходу показали, що виграш у швидкодії в порівнянні з CPU - реалізаціями СРЖ складає 10-20
разів у залежності від типу обраної системи.