• Главная
  • Карта сайта
Не найдено

Нецентральних процесор. Розрахунки загального призначення силами графічного процесора

  1. Шведи, білки і паралельні обчислення
  2. Вся справа в чарівних бульбашках
  3. NVIDIA: вона вже крутиться!
  4. AMD: мир, дружба, розробка
  5. Чи не конкуренти
  6. * * *

Сьогодні, мабуть, тільки ледачий не чув про графічні процесори, що займаються розрахунками загального призначення. Прогриміла по всьому світу NVIDIA CUDA, зібрав аудиторію AMD FireStream, нагнали туману OpenCL і DirectX 11, вніс свою судову лепту Intel. Загалом, ніхто не залишився в стороні - так чи інакше, до технології доклали руку всі, навіть Apple зі своєю підтримкою GPU-розрахунків загального призначення на рівні операційної системи. Саме час розібратися, що взагалі таке розрахунки загального призначення, чому відеокарти потрібні не тільки для ігор і що хорошого несе нам ера багатофункціональних графічних процесорів.

Шведи, білки і паралельні обчислення

Сьогодні, мабуть, тільки ледачий не чув про графічні процесори, що займаються розрахунками загального призначення

Паралельні обчислення дозволяють моделювати складні хімічні процеси, що відбуваються в клітинах організму, за лічені хвилини.

Все почалося в 2003 році. Група студентів з готландскіх університету (м Вісбі, Швеція) зіткнулася з неприємною проблемою: їм потрібно було зробити досить масштабні паралельні матричні обчислення. Настільки масштабні, що центральні процесори комп'ютерів, до яких студенти мали доступ, займалися б цими обчисленнями близько шести місяців. А на носі у студентів була здача дипломної роботи.

Спочатку шведи вирішили вдатися до допомоги світової громадськості (програми добровільної участі в розподілених обчисленнях якраз набирали популярність), але закопалися в необхідних для реєстрації проекту документах. І тоді одному з них прийшла в голову думка: а чому б не використовувати замість центрального процесора графічний? Обчислювальні потужності GPU до 2003 року вже на голову перевершували можливості CPU, орієнтовані були якраз на паралельні обчислення і просто ідеально підходили для вирішення завдання. Правда, апаратних засобів для прорахунку «Не графіки» на GPU в той момент ще не було, але це не могло зупинити ентузіастів, і вже через кілька тижнів почалися розрахунки. Зайняли вони два з половиною місяці.

Так народилася концепція GPGPU, General-Purpose Graphics Processing Units, розрахунків загального призначення, які виконуються графічним процесором. Як і будь-який інтерес від світу техніки, всього за пару років ідея поневолила уми безлічі програмістів по всьому світу. Створювалися спільноти прихильників нової концепції, влаштовувалися міжнародні форуми і круглі столи. Найвідомішим, мабуть, став проект BionicFX, на основі якого будувалася соціальна мережа AVEX (Audio Video EXchange). Використовуючи відеокарту GeForce 6800 в якості процесора, BionicFX швидко і без особливих проблем переганяв аудіофайли з формату в формат, приводив їх до потрібного розміру і навіть умів обробляти дані потоково, у міру завантаження файлу на сервер.

Інший гучний проект - програма розподілених обчислень Folding @ Home Стенфордського університету. Вона, до речі, починалася з використання центральних процесорів, але з появою GPGPU перейшла на процесори графічні. Продуктивність від цього збільшилася втричі.

Продуктивність від цього збільшилася втричі

У розробці великого адронного коллайдера взяли участь в цілому чотири мільярди чоловік. Якби не концепція розподілених обчислень, схема пристрою вважалася б суперкомпьютерами кілька десятків років.

Зрозуміло, все це не могло пройти непоміченим головними китами графічного бізнесу - NVIDIA і ATI. Першими стрепенулися «червоні»: на початку 2006 року компанія ATI оголосила про швидкий випуск апаратної платформи Radeon R580, здатної замінити собою «чорнові начерки ентузіастів GPGPU». Правда, вийшла платформа ще тільки через рік, причому зовсім під іншою назвою - готовий продукт носив горде ім'я AMD FireStream і був розрахований на роботу з відеокартами нового покоління, побудованих на 55-нм техпроцесу. NVIDIA зі своїм анонсом GPGPU кілька припізнилися: вперше про платформу для обчислень загального призначення силами GPU компанія заговорила тільки восени 2006 року. Зате вже до початку 2007-го перша версія апаратно-програмної системи CUDA (Compute Unified Device Architecture, архітектура обчислень загального призначення) з'явилася на її офіційному сайті, і всього за півроку набрала таку популярність, яку пара AMD-ATI не може набрати зі своїм FireStream до сих пір.

Вся справа в чарівних бульбашках

Для того, щоб привернути увагу громадськості до археологічного проекту InDies, що вимагає розподілених обчислень, уряд Індії влаштувало в 2004 році концерт-хід на вулицях Бомбея.

Перш ніж розбиратися в тонкощах різних обчислювальних платформ, давайте поговоримо про те, чим же, власне, графічний процесор так перевершує центральний? CPU створювалися для роботи з потоковими інструкціями, а GPU - для паралельних обчислень. Тобто, якщо перебільшувати, центральний процесор призначений для обробки інструкцій, в яких спочатку вважається А, потім B і, нарешті, C (бо результат C якось пов'язаний з результатами A і B), а графічний - для інструкцій, в яких всі три компоненти вважаються одночасно і результати прорахунків на даному етапі ніяк не впливають один на одного.

Однак сказати, що центральні процесори не вміють працювати з паралельними обчисленнями взагалі, - значить погрішити проти істини. Вони вміють. Просто не дуже добре. Наприклад, процесори Pentium можуть виконувати дві інструкції за такт, а Pentium Pro - динамічно змінювати пріоритет інструкцій і, відповідно, виконувати їх практично паралельно.

З появою процессорной багатоядерності і швидкої пам'яті ситуація змінилася на краще, і сьогодні CPU можна довірити навіть прорахунок графіки, але ... навіщо? GPU справляються з такими завданнями набагато краще - у них і процесорних ядер більше, і пам'ять використовується розумніше. Якщо центральний процесор звертається до свого кешу безладно і записує дані в довільне місце, то у GPU все строго по-військовому: блоки читаються і записуються строго по черзі, один за іншим. В результаті виходить продуктивність, максимально близька до теоретичної пропускної здатності. GPU може обійтися набагато меншим, ніж у CPU, кешем і отримати при цьому більш високі результати.

Центрального процесора знадобилося б майже півгодини на те, щоб намалювати ось таку картинку. Графічний справляється з цим за соті частки секунди.

Правда, в зворотну сторону правило несумісності теж діє. Як тільки GPU стикається з необхідністю провести послідовні обчислення, його продуктивність різко падає. В теорії можна навчити графічний процесор гібридним обчислень (тобто і послідовним, і паралельним, причому в будь-яких комбінаціях), але поки виробники відеокарт цим займатися не хочуть - мовляв, навіщо робити один пристрій для всього на світі, якщо можна використовувати спеціально розроблені для кожної завдання компоненти? Позиція спірна, але поки що лідирує на ринку. Саме тому, всупереч прогнозам багатьох IT-аналітиків, найближчим часом ми не побачимо всемогутніх графічних процесорів, здатних замінити процесори центральні.

NVIDIA: вона вже крутиться!

Багато програм вже сьогодні використовують GPU для обробки графіки і супутніх завдань.

Найбільшою і реально підтримуваної на сьогоднішній день платформою, створеною для розрахунків загального призначення силами графічного процесора, безсумнівно, є NVIDIA CUDA. Розробляється вона вже два роки, пережила три версії, безліч патчів і використовується, за даними NVIDIA, більш ніж на шість мільйонів комп'ютерів щодня. Притому, що з'явилася CUDA не першою і конкуренція у неї не така вже слабка, результат значний.

Секрет успіху простий - рівновагу. Закрита архітектура врівноважується доступністю і безкоштовністю пакету розробника, жорстка прив'язка до певного залозу - широким вибором цього самого заліза ... Систему підтримує вже кілька десятків різних відеокарт, від слабких мобільних рішень і бюджетного ION до найпотужніших топових карток (повний список можна подивитися тут: www.nvidia.ru/object/cuda_learn_products_ru.html ). Причому під будь-яку з них пишеться одна і та ж програма, що виконується одним і тим же способом, - і хоч на слабкій карті вона і стане прораховуватимуться в кілька разів довше, працювати все-таки буде без жодних портированию.

Причому під будь-яку з них пишеться одна і та ж програма, що виконується одним і тим же способом, - і хоч на слабкій карті вона і стане прораховуватимуться в кілька разів довше, працювати все-таки буде без жодних портированию

За допомогою GPGPU працювати з тривимірними моделями стало простіше - навіть найскладніші з них тепер прораховуються за лічені секунди.

Ще один плюс CUDA як платформи - доступність для програмістів. NVIDIA вирішила не винаходити велосипед і задіяти мови програмування, якими люди вже багато років активно користуються. C # c невеликими розширеннями, Fortran, Python, Delphy, OpenGL. Єдине, чого доведеться повчитися починаючому «Кудер», - це писати програми з паралельними обчисленнями. Справа в тому, що класичне програмування орієнтоване на роботу з CPU і там якраз всіх зі шкільної лави вчать від паралельних обчислень йти ... втім, курси перепідготовки є вже у багатьох світових університетах. У нас навчитися «кудіть» по-справжньому можна на ВМК МГУ, на фізтеху СПбГУ, в Екатеринбургском державному університеті і в Казанському державному університеті.

Крім того, NVIDIA періодично влаштовує навчальні курси в різних російських містах - так що всім зацікавленим радимо стежити за оголошеннями на стінах рідних технічних інститутів.

Набір розробника CUDA складається з трьох компонентів: власне набору засобів (підвантажуваних бібліотек), компілятора (що підтримує кілька мов програмування) і документації. Все це абсолютно безкоштовно можна скачати на сайті www.nvidia.ru/object/cuda_get_ru.html або з нашого диска з розділу «Софт».

AMD: мир, дружба, розробка

Тривимірний мультфільм «Вгору!», Що вийшов на екрани навесні цього року, цілком був прорахований за допомогою технології CUDA. На всі розрахунки творці витратили трохи більше двох місяців.

AMD підійшла до проблеми з іншого боку. Замість того, щоб робити з відеокарт потенційного (пам'ятаємо про Джека) конкурента своїм процесорам, розробники вирішили об'єднати зусилля і зробити нову апаратну платформу з центрального і графічного процесорів, яка буде з однаковою легкістю справлятися і з гетерогенними, і з паралельними обчисленнями. Цілком вона, правда, поки не готова, але фундамент оцінити вже можна: за швидкістю прорахунку GPGPU-система AMD випереджає конкурентів. Правда, тестування показують, що якість виконання поки не настільки переконливо.

Принцип роботи FireStream небагато чим відрізняється від CUDA Графічний процесор все так же бере на себе паралельні завдання, збирає свої потокові процесори в кластери і вважає завдання одночасно. Але якщо чіп NVIDIA може справлятися з з'являються раптом в коді гетерогенними завданнями, чіп ATI передає ці завдання центрального процесора. На перший погляд, такий підхід повинен уповільнювати загальну роботу системи, але на практиці він виливається у велику швидкість роботи - все-таки CPU, навіть при обліку часу на передачу даних туди-сюди, справляється з потоковими обчисленнями швидше, ніж GPU.

На цьому переваги FireStream закінчуються. На відміну від CUDA ця система використовує не загальноприйнятий, а свою власну мову програмування, тому вчитися працювати з нею набагато складніше. Крім того, сама мова ще недопрацьований, компілятор теж не ідеальний, через що код програми часто виходить неоптимізованими і громіздким.

Велика частина GPGPU систем побудовано сьогодні на технології NVIDIA CUDA. Її підтримує більше трьох десятків відеокарт і 50 різних програм.

Програма Badaboom дозволяє перекодувати відеофайли з формату в формат, використовуючи обчислювальні потужності графічних процесорів NVIDIA.

По-справжньому порівняти продуктивність CUDA і FireStream поки не вдалося нікому: єдина програма, яка офіційно працює з обома системами, Cyberlink PowerDirector, сама не відрізняється оптимізованим кодом, тому говорити про точність результатів не доводиться. Якщо дивитися на чисті цифри, технологія AMD випереджає дітище NVIDIA при перекодуванні відео. Але при цьому якість картинки, яке видає на виході CUDA, виходить більш високим, ніж якість тієї ж картинки від AMD. Можливо, всьому виною недопрацьовані технології, можливо - різниця в підходах до виконання завдання. Як би там не було, порівнювати готовий продукт з неготовим безглуздо, так що ми краще почекаємо, коли FireStream буде дописана до кінця. Чекати, швидше за все, доведеться довго. Адже AMD на відміну від NVIDIA не ставить розробку системи GPGPU в число найвищих пріоритетів (як і власний графічний движок, до речі) і тому не називає ніяких термінів.

Всі бажаючі перевірити ефективність роботи FireStream можуть завантажити пакет розробника ( http://developer.amd.com/gpu/ATIStreamSDK/Pages/default.aspx ).

Чи не конкуренти

Використання плагіна ArcSoft SimHD для плеєра ArcSoft TotalMedia Theatre, що працює з CUDA, прискорює рендеринг зображення високої чіткості майже вдвічі.

Не вщухають суперечки про те, чи потрібні всі ці апаратні прискорення від NVIDIA і AMD, якщо на світло ось-ось з'явиться довгоочікуваний фреймворк OpenCL, якому судилося стати наріжним каменем всієї індустрії графічних розрахунків? Більшість сперечальників вважає, що ні CUDA, ні FireStream при такому розкладі нікому не потрібні. Але є нюанси.

Справа в тому, що OpenCL (точно так само, як до нього OpenGL і OpenAL) - це всього лише мову програмування. На якому, так, дуже зручно кодувати різного роду графіку, від ігор і мультфільмів до найскладніших моделей білків і метеорологічних процесів. Але сам по собі OpenCL нічого не вважає і вважати не може: він все одно, так або інакше, спирається на залізо, з яким працює. І підтримка обчислень загального призначення силами GPU, про яку йде мова в документації до нового фреймворку, - це не що інше, як підтримка технологій, за допомогою яких ці самі обчислення проводяться.

Інша справа, що завдяки OpenCL паралельні обчислення тепер можна буде використовувати не тільки для прорахунку графіки, але і для різних інших речей. Наприклад, для роботи з фізичними движками або прорахунку AI.

Точно так само йдуть справи і з прийдешнім Direct3D 11. Так, наприклад, в Windows 7 цей фреймворк дозволяє використовувати апаратні засоби для перекодування відеофайлів: при наявності відповідних заліза і драйверів це буде робитися за допомогою NVIDIA CUDA, при відсутності - силами центрального процесора.

Таким чином, ні OpenCL, ні Direct3D 11 конкурентами продуктам NVIDIA і AMD не є. Навпаки, вони створені для того, щоб з ними ефективно взаємодіяти. Адже включити ту ж CUDA для підтримки існуючих сьогодні ігор вже можна, але поки що це не дуже ефективно: перемикання між стандартним режимом роботи відеокарти і режимом CUDA займає надто багато часу, і дорогоцінні fps губляться. Вирішити цю проблему повинні обчислювальні шейдери, які розбиваються на потоки ще на «верхньому» рівні виконання програми, і відеокарта завдяки цьому отримує на прорахунок дані одного типу - продуктивність від цього збільшується, а навантаження на відеокарту падає.

Сьогодні AMD заявляє, що технологія FireStream не відноситься до пріоритетних проектів компанії. Закінчити розробку системи планують тільки до 2011 року.

Apple однією з перших почала підтримувати проекти GPGPU. Зараз з CUDA вже щосили працює iTunes (при перекодуванні відео і аудіо в версії для мобільних пристроїв), скоро її почне підтримувати нова Mac OS.

* * *

Використання GPU для розрахунків загального призначення - це таке ж неминуче майбутнє, як багатоядерні процесори і багатотерабайтних жорсткі диски. Технологія давно вже перейшла з розряду аматорських в категорію необхідних: на її основі будуються цілі обчислювальні кластери, програмуються операційні системи і програмне забезпечення, пишуться гри.

Завдяки технології CUDA з'явилася на світло концепція ION, де центральний процесор грає роль допоміжного інструменту і тому не зобов'язаний відрізнятися ні особливою багатоядерних, ні шаленої продуктивністю. Завдяки концепції GPGPU комп'ютери стають дешевшими і доступнішими, вчаться вирішувати все більш і більш складні завдання. Втім, списувати CPU з пароплава історії поки що дуже рано - потужності його ще є куди нарощувати.

І тоді одному з них прийшла в голову думка: а чому б не використовувати замість центрального процесора графічний?
Перш ніж розбиратися в тонкощах різних обчислювальних платформ, давайте поговоримо про те, чим же, власне, графічний процесор так перевершує центральний?
Навіщо?
Провайдеры:
  • 08.09.2015

    Batyevka.NET предоставляет услуги доступа к сети Интернет на территории Соломенского района г. Киева.Наша миссия —... 
    Читать полностью

  • 08.09.2015
    IPNET

    Компания IPNET — это крупнейший оператор и технологический лидер на рынке телекоммуникаций Киева. Мы предоставляем... 
    Читать полностью

  • 08.09.2015
    Boryspil.Net

    Интернет-провайдер «Boryspil.net» начал свою работу в 2008 году и на данный момент является одним из крупнейших поставщиков... 
    Читать полностью

  • 08.09.2015
    4OKNET

    Наша компания работает в сфере телекоммуникационных услуг, а именно — предоставлении доступа в сеть интернет.Уже... 
    Читать полностью

  • 08.09.2015
    Телегруп

    ДП «Телегруп-Украина» – IT-компания с 15-летним опытом работы на рынке телекоммуникационных услуг, а также официальный... 
    Читать полностью

  • 08.09.2015
    Софтлинк

    Высокая скоростьМы являемся участником Украинского центра обмена трафиком (UA — IX) с включением 10 Гбит / сек... 
    Читать полностью