Паралельні обчислення на GPU NVIDIA або суперкомп'ютер в кожному будинку

  1. Передмова Говорячи про паралельних обчисленнях на GPU ми повинні пам'ятати, в який час ми живемо,...
  2. Що таке CUDA
  3. можливості технології
  4. підготовка
  5. результати
  6. висновки

Передмова

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

Що ж таке обчислення на GPU

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

Що таке CUDA

CUDA - технологія програмування на спрощеному мовою Сі алгоритмів, які ісполняються на графічних процесорах прискорювачів GeForce восьмого покоління і старше, а також відповідних карт Quadro і Tesla від компанії NVIDIA. CUDA дозволяє включати в текст Сі програми спеціальні функції. Ці функції пишуться на спрощеному мові програмування Сі та виконуються на графічному процесорі. Первісна версія CUDA SDK була представлена ​​15 лютого 2007 року. Для успішної трансляції коду на цій мові, до складу CUDA SDK входить власний Сі-компілятор командного рядка nvcc компанії NVIDIA. Компілятор nvcc створений на основі відкритого компілятора Open64 і призначений для трансляції host-коду (головного, керуючого коду) і device-коду (апаратного коду) (файлів з розширенням .cu) в об'єктні файли, придатні в процесі збірки кінцевої програми або бібліотеки в будь-який середовищі програмування, наприклад в Microsoft Visual Studio.

можливості технології

  1. Стандартна мова C для паралельної розробки додатків на GPU.
  2. Готові бібліотеки чисельного аналізу для швидкого перетворення Фур'є і базового пакета програм лінійної алгебри.
  3. Спеціальний драйвер CUDA для обчислень з швидкою передачею даних між GPU і CPU.
  4. Можливість взаємодії драйвера CUDA з графічними драйверами OpenGL і DirectX.
  5. Підтримка операційних систем Linux 32/64-bit, Windows XP 32/64-bit і MacOS.

переваги технології

  1. Інтерфейс програмування додатків CUDA (CUDA API) заснований на стандартній мові програмування Сі з деякими обмеженнями. Це спрощує і згладжує процеcс вивчення архітектури CUDA.
  2. Колективна між потоками пам'ять (shared memory) розміром в 16 Кб може бути використана під організований користувачем кеш з більш широкою смугою пропускання, ніж при вибірці з звичайних текстур.
  3. Більш ефективні транзакції між пам'яттю центрального процесора і відеопам'яттю.
  4. Повна апаратна підтримка цілочисельних і побітових операцій.

Приклад застосування технології

cRark

Після того як ми дізналися що таке паралельні обчислення і познайомилися з технологією NVIDIA CUDA можна перейти до практичної реалізації даної технології. Є вже чимало програмного забезпечення, яке використовує CUDA, але конкретно в цій статті ми будемо розглядати програму Павла Семянова під назвою «cRark» Дана програма є однією з небагатьох програм на сьогоднішній день, що допомагають користувачам відновити забуті паролі RAR-архівів, використовуючи обчислювальні здатності графічних процесорів за допомогою технології CUDA. Програма є безкоштовною і вільною, що не обмежує її застосування в широких масах і дозволяє користувачам більш наочно побачити можливості CUDA. Саму програму cRark для різних операційних систем можна завантажити з офіційного сайту , Побільше дізнатися про автора можна на сайті Павла Семянова .

Саме трудомістке в цій програмі - це настоянка. Програма має консольний інтерфейс, але завдяки інструкції, яка додається до самої програми, їй можна користуватися. Далі наведена коротка інструкція по налаштуванню програми. Ми перевіримо програму на працездатність і порівняємо її з іншою подібною програмою, яка не використовує NVIDIA CUDA, в даному випадку це відома програма «Advanced Archive Password Recovery».

З скачав архіву cRark нам потрібно тільки три файли: crark.exe, crark-hp.exe і password.def. Сrark.exe - це консольна утиліта розтину паролів RAR 3.0 без шифрованих файлів всередині архіву (тобто розкриваючи архів ми бачимо назви, але не можемо розпакувати архів без пароля).

Сrark-hp.exe - це консольна утиліта розтину паролів RAR 3.0 з шифруванням всього архіву (тобто розкриваючи архів ми не бачимо ні назви, ні самих архівів і не можемо розпакувати архів без пароля).

Password.def - це будь-який перейменований текстовий файл з дуже невеликим вмістом (наприклад: 1-й рядок: ## 2-й рядок:? *, В цьому випадку розтин пароля буде відбуватися з використанням будь-яких символів). Password.def - це керівник програми cRark. У файлі міститися правила розкриття пароля (або область знаків яку crark.exe буде використовувати в своїй роботі). Детальніше про можливості вибору цих знаків написано в текстовому файлі отриманому при розтині завантаженого на сайті у автора програми cRark: russian.def.

підготовка

Відразу скажу, що програма працює тільки якщо ваша відеокарта заснована на GPU з підтримкою рівня прискорення CUDA 1.1. Так що серія відеокарт, заснованих на чіпі G80, таких як GeForce 8800 GTX , Відпадає, так як вони мають апаратну підтримку прискорення CUDA 1.0. Програма підбирає за допомогою CUDA тільки паролі на архіви RAR версій 3.0 +. Необхідно встановити все програмне забезпечення, пов'язане з CUDA, а саме:

Створюємо будь-яку папку в будь-якому місці (наприклад на диску С :) і називаємо будь-яким ім'ям наприклад «3.2». Розміщуємо туди файли: crark.exe, crark-hp.exe і password.def і запаролений / зашифрований архів RAR.

Далі, слід запустити консоль командного рядка Windows і перейти в ній створену папку. У Windows Vista і 7 слід викликати меню «Пуск» і в полі пошуку ввести «cmd.exe», в Windows XP з меню «Пуск» спочатку слід викликати діалог «Виконати» і вже в ньому вводити «cmd.exe». Після відкриття консолі слід ввести команду виду: cd C: \ папка \, cd C: \ 3.2 в даному випадку.

Набираємо в текстовому редакторі два рядки (можна також зберегти текст як файл .bat в папці з cRark) для підбору пароля запаролений RAR-архіву з незашифрованими файлами:
echo off;
cmd / K crark (назва архіву) .rar

для підбору пароля запаролений і зашифрованого RAR-архіву:
echo off;
cmd / K crark-hp (назва архіву) .rar

Копіюємо 2 рядки текстового файлу в консоль і натискаємо Enter (або запускаємо .bat файл).

результати

Процес розшифровки показаний на малюнку:

Швидкість підбору на cRark за допомогою CUDA склала тисяча шістсот двадцять п'ять паролів / секунду. За одну хвилину тридцять шість секунд був підібраний пароль з 3-ма знаками: «q} $». Для порівняння: швидкість перебору в Advanced Archive Password Recovery на моєму двоядерному процесорі Athlon 3000 становить щонайбільше 50 паролів / секунду і перебір мав би тривати 5 годин. Тобто підбір по bruteforce в cRark архіву RAR за допомогою відеокарти GeForce 9800 GTX + відбувається в 30 разів швидше, ніж на CPU.

Для тих, у кого процесор Intel, хороша системна плата з високою частотою системної шини (FSB 1600 МГц), показник CPU rate і швидкість перебору будуть вище. А якщо у вас чотирьохядерний процесор і пара відеокарт рівня GeForce 280 GTX , То швидкодія перебору паролів прискорюється в рази. Підводячи підсумки прикладу треба сказати, що дана задача була вирішена із застосуванням технології CUDA всього за якихось 2 хвилини замість 5-ти годин що говорить про високий потенціал можливостей для даної технології!

висновки

Розглянувши сьогодні технологію для паралельних обчислень CUDA ми наочно побачили всю міць і величезний потенціал для розвитку даної технології на прикладі програми для відновлення пароля для RAR архівів. Треба сказати про перспективи даної технології, дана технологія неодмінно знайде місце в житті кожної людини, який вирішить їй скористатися, будь то наукові завдання, або завдання, пов'язані з обробкою відео, або навіть економічні завдання які вимагають швидкого точного розрахунку, все це призведе до неминучого підвищенню продуктивності праці, яке не можна буде не помітити. На сьогоднішній день в лексикон вже починає входити словосполучення «домашній суперкомп'ютер»; абсолютно очевидно, що для втілення такого предмета в реальність в кожному будинку вже є інструмент під назвою CUDA. Починаючи з моменту виходу карт, заснованих на чіпі G80 (2006 г.), випущена величезна кількість прискорювачів на базі NVIDIA, що підтримують технологію CUDA, яка здатна втілити мрії про суперкомп'ютери в кожному будинку в реальність. Просуваючи технологію CUDA, NVIDIA піднімає свій авторитет в очах клієнтів у вигляді надання додаткових можливостей їх обладнання, яке у багатьох вже куплено. Залишається тільки вірити, що незабаром CUDA буде розвиватися дуже швидко і дасть користувачам повною мірою скористатися всіма можливостями паралельних обчислень на GPU.

Наприклад: 1-й рядок: ## 2-й рядок:?

Дополнительная информация

rss
Карта