Куди застосувати cuda комп’ютерний ресурс у sm

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

Для початку трохи про саму технологію і з чим її їдять. Оскільки при написанні статті я орієнтуюся на широке коло Новомосковсктелей, то і пояснити постараюся доступною мовою без складних термінів і кілька коротко.

Вхідні потоки обробляються незалежно один від одного, тобто паралельно.

Куди застосувати cuda комп'ютерний ресурс у sm

При цьому існує поділ на 3 рівні:

Куди застосувати cuda комп'ютерний ресурс у sm

Grid - ядро. Містить одно / двох / тривимірний масив блоків.

Block - містить в собі безліч потоків (thread). Потоки різних блоків між собою взаємодіяти не можуть. Для чого потрібно було вводити блоки? Кожен блок по суті відповідає за свою підзадачу. Наприклад, велике зображення (яке є матрицею) можна розбити на кілька дрібніших частин (матриць) і паралельно працювати з кожною частиною зображення.

Thread - потік. Потоки всередині одного блоку можуть взаємодіяти або через загальну (shared) пам'ять, яка, до речі, куди швидше глобальної (global) пам'яті, або через засоби синхронізації потоків.

Warp - це поєднання взаємодіючих між собою потоків, для всіх сучасних GPU розмір Warp'а дорівнює 32. Далі йде half-warp. є половинкою warp'a, тому що звернення до пам'яті зазвичай йде окремо для першої і другої половини warp'a.

Як можна помітити, дана архітектура відмінно підходить для розпаралелювання завдань. І хоча програмування ведеться на мові Сі з деякими обмеженнями, на ділі не все так просто, тому що не все можна распараллелить. Немає ж і стандартних функцій для генерації випадкових чисел (або ініціалізації), все це доводиться реалізовувати окремо. І хоча готових варіантів є в достатній кількості, радості все це не приносить. Можливість використання рекурсії з'явилася порівняно недавно.

Для наочності була написана невелика консольна (для мінімізації коду) програма, яка виробляє операції з двома масивами типу float, тобто з нецілочисельне значеннями. За вказаними вище причин ініціалізація (заповнення масиву різними довільними значеннями) вироблялося силами CPU. Далі з відповідними елементами з кожного масиву вироблялося 25 всіляких операцій, проміжні результати записувалися в третій масив. Змінювався розмір масиву, результати наступні:

Всього було проведено 4 тесту:

1024 елемента в кожному масиві:

Куди застосувати cuda комп'ютерний ресурс у sm

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

4096 елементів в кожному масиві:

Куди застосувати cuda комп'ютерний ресурс у sm

Тепер 12288 елементів в кожному масиві:

Куди застосувати cuda комп'ютерний ресурс у sm

І останній тест - 36864 елемента в кожному масиві:

Куди застосувати cuda комп'ютерний ресурс у sm

До речі, можна помітити, як в процесі виконання обчислень підвищується навантаження на GPU, а так само відбувається виділення пам'яті.

Куди застосувати cuda комп'ютерний ресурс у sm

      * Серія "Lie to me" - 1280х720, MPEG4, h.264.
      * Серія "У Філадельфії завжди сонячно" - 624х464, xvid.

Контейнер і розмір перших двох файлів був .mkv і 1,55 гб, а останнього - .avi і 272 мб.

Почнемо з досить гучного і популярного продукту - Badaboom. Використовувалася версія - 1.2.1.74. Вартість програми становить $ 29.90.

Куди застосувати cuda комп'ютерний ресурс у sm

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

Куди застосувати cuda комп'ютерний ресурс у sm

Куди застосувати cuda комп'ютерний ресурс у sm

Куди застосувати cuda комп'ютерний ресурс у sm

Тепер запросто можна зрозуміти, навіщо ж потрібна підтримка сенсорних дисплеїв і технології мультитач. Більш того, програма наділена многозадачностью, як би дивно це не звучало. Як? Дивимося ролик:


Під час кодування завантаження процесора становить 100%, однак дискомфорту це не викликає. Браузер та інші неважкі програми не гальмують.

Куди застосувати cuda комп'ютерний ресурс у sm

Результати куди краще, ніж у Badaboom. Якість так само на висоті, різницю з оригіналом можна помітити тільки порівнюючи попарно кадри під лупою.

Далі перейде до перекодированию з пониженням дозволу і бітрейта:

Куди застосувати cuda комп'ютерний ресурс у sm

Куди застосувати cuda комп'ютерний ресурс у sm