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

Що таке Майнінг на відеокарті

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

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

Які відеокарти підійдуть для Майнінг

Отже, що стосується вибору відеокарти, то тут звичайною практикою є придбання AMD rx 470, rx 480, rx 570, rx 580 або Нвідіа 1060, 1070, 1080 ti. Також підійдуть, але не принесуть великого прибутку, відеокарти типу r9 280x, r9 290, 1050, 1060. Абсолютно точно не принесе прибутку Майнінг на слабкій відеокарті на кшталт geforce gtx 460, gts 450, gtx 550ti. Якщо говорити про пам'ять, то брати краще від 2 гб. Може виявитися недостатньо навіть 1 гб, не кажучи вже про 512 мб. Якщо говорити про Майнінг на професійній відеокарті, то приносить він приблизно стільки ж, скільки і звичайні або навіть менше. З урахуванням вартості таких ВК - це невигідно, але добувати з їх допомогою можна, якщо вони вже є у вас в наявності.

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

Найпопулярніші відеокарти для Майнінг 2020

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

відеокарта Ethash Equihash CryptoNight енергоспоживання
AMD Radeon R9 280x 11 MH / s 290 H / s 490 H / s 230W
AMD Radeon RX 470 26 MH / s 260 H / s 660 H / s 120W
AMD Radeon RX 480 29.5 MH / s 290 H / s 730 H / s 135W
AMD Radeon RX 570 27.9 MH / s 260 H / s 700 H / s 120W
AMD Radeon RX 580 30.2 MH / s 290 H / s 690 H / s 135W
Nvidia GeForce GTX 750 TI 0.5 MH / s 75 H / s 250 H / s 55W
Nvidia GeForce GTX 1 050 TI 13.9 MH / s 180 H / s 300 H / s 75W
Nvidia GeForce GTX 1060 22.5 MH / s 270 H / s 430 H / s 90W
Nvidia GeForce GTX 1070 30 MH / s 430 H / s 630 H / s 120W
Nvidia GeForce GTX 1070 TI 30.5 MH / s 470 H / s 630 H / s 135W
Nvidia GeForce GTX 1080 23.3 MH / s 550 H / s 580 H / s 140W
Nvidia GeForce GTX 1080 TI 35 MH / s 685 H / s 830 H / s 190W

Чи можливий Майнінг на одній відеокарті?

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

Які криптовалюта можна Майні на відкритих

Майні на GPU можна будь-яку криптовалюта, але слід розуміти, що продуктивність на різних відрізнятиметься на одній і тій же картці. Більш старі алгоритми вже погано підходять для відеопроцесорів і не принесуть ніякого прибутку. Відбувається це через появу на ринку нових пристроїв - так званих. Вони є куди більш продуктивними і значно підвищують складність мережі, проте їх вартість висока і обчислюється тисячами доларів. Тому видобуток монет на SHA-256 (біткоіни) або Scrypt (Litecoin, Dogecoin) в домашніх умовах - це погана ідея в 2018-му році.

Крім LTC і DOGE, ASICі унеможливили видобуток Bitcoin (BTC), Dash і інших валют. Куди кращим вибором стануть криптовалюта, які використовують захищені від ASIC-ів алгоритми. Так, наприклад, за допомогою GPU вийде добувати монети на алгоритмах CryptoNight (Карбованець, монери, Electroneum, Bytecoin), Equihash (ZCash, Hush, Bitcoin Gold) і Ethash (Ethereum, Ethereum Classic). Список далеко не повний і постійно з'являються нові проекти на цих алгоритмах. Серед них зустрічаються як Форк більш популярних монет, так і зовсім нові розробки. Зрідка навіть з'являються нові алгоритми, які призначені для вирішення певних завдань і можуть використовувати різне обладнання. Нижче буде розказано про те, як дізнатися хешрейт відеокарти.

Що потрібно для Майнінг на відеокарті

Нижче наведено список того, що вам знадобиться для створення ферми:

  • Самі відеокарти. Вибір конкретних моделей залежить від вашого бюджету або того, що вже є в наявності. Звичайно, старі пристрої на AGP не підійдуть, але можна використовувати будь-яку карту середнього або топового класу останніх років. Вище ви можете повернутися до таблиці продуктивності відеокарт, яка дозволить зробити відповідний вибір.
  • Комп'ютер для їх установки. Не обов'язково використовувати топове залізо і робити ферму на базі високопродуктивних комплектуючих. Досить буде якогось старого AMD Athlon, декількох гігабайт оперативної пам'яті і жорсткого диска для установки операційної системи і потрібних програм. Важлива також материнська плата. Вона повинна мати достатню для вашої ферми кількість PCI слотів. Існують спеціальні версії для Майнер, які містять 6-8 слотів і в певних випадках вигідніше використовувати їх, ніж збирати кілька ПК. Особливу увагу варто приділяти лише блоку живлення, адже система буде працювати під високим навантаженням цілодобово. Брати БП потрібно обов'язково з запасом потужності і бажано наявність сертифікатів 80 Plus. Можливо також поєднання двох блоків в один за допомогою спеціальних перехідників, але таке рішення викликає в інтернеті суперечки. Корпус краще не використовувати зовсім. Для кращого охолодження рекомендується зробити або купити спеціальний стенд. Відкрите в такому випадку виносяться за допомогою спеціальних перехідників, які називаються Райзер. Придбати їх можна в профільних магазинах або на аліекспрессе.
  • Яке добре провітрюється сухе приміщення. Розміщувати ферму варто в нежитловий кімнаті, а краще взагалі в окремому приміщенні. Це дозволить позбутися від дискомфорту, який виникає через галасливої \u200b\u200bроботи систем охолодження і тепловіддачі. Якщо такої можливості немає, то слід вибирати відеокарти з максимально тиху систему охолодження. Дізнатися про неї детальніше ви зможете з оглядів в інтернеті, наприклад, на YouTube. Слід також подумати про циркуляцію повітря і вентіліруємость, щоб максимально знизити температуру.
  • Програма майнер. GPU Майнінг відбувається за допомогою спеціального, яке може бути знайдено в інтернеті. Для виробників ATI Radeon і Nvidia використовується різний софт. Це ж стосується і різних алгоритмів.
  • Обслуговування обладнання. Це дуже важливий пункт, так як не всі розуміють, що Майнінг ферма вимагає постійного догляду. Користувачеві потрібно стежити за температурою, міняти термопасту і очищати СО від пилу. Слід також пам'ятати про техніку безпеки і регулярно перевіряти справність системи.

Як налаштувати Майнінг на відеокарті з нуля

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

Як вибрати відеокарту для Майнінг

Ми рекомендуємо вам ознайомитися з таблицею, яка представлена \u200b\u200bвище і з розділом про підрахунок потенційного заробітку. Це дозволить розрахувати приблизний дохід і визначитися з тим, яке залізо вам більше по кишені, а також розібратися з термінами окупності вкладень. Не варто також забувати про сумісність роз'ємів живлення відеокарти і блоку живлення. Якщо використовуються різні, то слід заздалегідь обзавестися відповідними перехідниками. Все це легко купується в китайських інтернет магазинах за копійки або у місцевих продавців з деякою націнкою.

вибираємо криптовалюта

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

Вибираємо пул для Майнінг

Також мають деякі відмінності. Деякі з них вимагають реєстрації, а декому достатньо лише адреси вашого гаманця для початку роботи. Перші зазвичай зберігають зароблені вами кошти до досягнення мінімальної для виплати суми, або в очікуванні виведення вами грошей в ручному режимі. Хорошим прикладом такого пулу є Suprnova.cc. Там пропонується безліч криптовалюта і для роботи в кожному з пулів досить лише раз зареєструватися на сайті. Сервіс простий в налаштуванні і добре підійде новачкам.

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

Створюємо кріптовалютний гаманець

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

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

Вибираємо і встановлюємо програму для Майнінг

Вибір програми для видобутку крипти залежить від обраної монети і її алгоритму. Напевно, все розробники такого ПО мають теми на BitcoinTalks, де можна знайти посилання на скачування та інформацію про те, як відбуваються налагодження та запуск. Майже всі ці програми мають версії як для Віндовс, так і для Лінукс. Більшість таких Майнер безкоштовні, але певний відсоток часу вони використовують для підключення до пулу розробника. Це свого роду комісія за використання програмного забезпечення. У деяких випадках її можна відключити, але це призводить до обмежень функціоналу.

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

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

Запускаємо Майнінг і стежимо за статистикою

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

Ви також зможете побачити, якщо пристрій не знаходить хеші. В такому випадку буде виведено попередження. Трапляється це, коли щось неправильно настроєний, вибрано невідповідний для монети програмне забезпечення або ГПУ не функціонує належним чином. Багато Майнер також використовують кошти для віддаленого доступу до ПК, щоб стежити за роботою ферми, коли вони знаходяться не там, де вона встановлена.

виводимо криптовалюта

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

Скільки можна заробити?

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

окупність відеокарт

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

Слід розуміти, що враховується лише поточний стан справ на ринку і ситуація може змінитися в будь-який момент. Курс може впасти або піднятися, складність Майнінг стане іншою або з'являться нові проекти. Так, наприклад, може припинитися видобуток ефіру в зв'язку з можливим переходом мережі на. Якщо припинитися Майнінг ефіріума, то фермам потрібно буде кудись спрямувати вільні потужності, наприклад, в Майнінг ZCash на GPU, що вплине на курс цієї монети. Подібних сценаріїв на ринку безліч і важливо розуміти, що сьогоднішня картина може не зберегтися протягом усього терміну окупності обладнання.

Сьогодні новини про використання графічних процесорів для загальних обчислень можна почути на кожному розі. Такі слова, як CUDA, Stream і OpenCL, за якихось два роки стали чи не найбільш цитованими в айтішной інтернеті. Однак, що означають ці слова, і що несуть стоять за ними технології, відомо далеко не кожному. А для линуксоидов, які звикли "бути в прольоті", так і взагалі все це бачиться темним лісом.

народження GPGPU

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

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

У кожному ядрі доводилося розміщувати повноцінний процесор складною і заплутаною x86-архітектури, зі своїм (досить об'ємним) кешем, конвеєром інструкцій, блоками SSE, безліччю блоків, що виконують оптимізації і т.д. і т.п. Тому процес нарощування кількості ядер суттєво загальмувався, і білі університетські халати, яким два або чотири ядра було явно мало, знайшли спосіб задіяти для своїх наукових розрахунків інші обчислювальні потужності, яких було в достатку на відеокарті (в результаті навіть з'явився інструмент BrookGPU, емулює додатковий процесор за допомогою викликів функцій DirectX і OpenGL).

Графічні процесори, позбавлені багатьох недоліків центрального процесора, виявилися відмінною і дуже швидкої лічильної машинкою, і зовсім скоро до напрацювань вчених умів почали придивлятися самі виробники GPU (а nVidia так і взагалі найняла більшість дослідників на роботу). В результаті з'явилася технологія nVidia CUDA, яка визначає інтерфейс, за допомогою якого стало можливим перенести обчислення складних алгоритмів на плечі GPU без будь-яких милиць. Пізніше за нею пішла ATi (AMD) з власним варіантом технології під назвою Close to Metal (нині Stream), а зовсім скоро з'явилася стала стандартом версія від Apple, яка отримала ім'я OpenCL.

GPU - наше все?

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

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

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

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

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

Але і це ще не все. Незважаючи на існування загальновизнаного стандарту в особі OpenCL, багато програмістів до сих пір вважають за краще використовувати прив'язані до виробника реалізації техніки GPGPU. Особливо популярною виявилася CUDA, яка хоч і дає більш гнучкий інтерфейс програмування (до речі, OpenCL в драйверах nVidia реалізований поверх CUDA), але намертво прив'язує додаток до відеокарт одного виробника.

KGPU або ядро \u200b\u200bLinux, прискорене GPU

Дослідники з університету Юти розробили систему KGPU, що дозволяє виконувати деякі функції ядра Linux на графічному процесорі за допомогою фреймворка CUDA. Для виконання цього завдання використовується модифіковане ядро \u200b\u200bLinux і спеціальний демон, який працює в просторі користувача, слухає запити ядра і передає їх драйверу відеокарти за допомогою бібліотеки CUDA. Цікаво, що незважаючи на істотний оверхед, який створює така архітектура, авторам KGPU вдалося створити реалізацію алгоритму AES, який піднімає швидкість шифрування файлової системи eCryptfs в 6 разів.

Що є зараз?

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

Також народилися мультимедійні додатки, наприклад, кодировщик FlacCL, що дозволяє перекодувати звукову доріжку в формат FLAC. Підтримкою GPGPU обзавелися і деякі вже існуючі раніше додатки, найпомітнішим з яких став ImageMagick, який тепер вміє перекладати частину своєї роботи на графічний процесор за допомогою OpenCL. Також є проекти з перекладу на CUDA / OpenCL (не люблять юніксоід ATi) архиваторов даних і інших систем стиснення інформації. Найцікавіші з цих проектів ми розглянемо в наступних розділах статті, а поки спробуємо розібратися з тим, що нам потрібно для того, щоб все це завелося і стабільно працювало.

GPU вже давно обігнали x86-процесори в продуктивності

· По-друге, в систему повинні бути встановлені останні пропрієтарні драйвера для відеокарти, вони забезпечать підтримку як рідних для картки технологій GPGPU, так і відкритого OpenCL.

· І по-третє, так як поки дістрібутівостроітелі ще не почали поширювати пакети додатків з підтримкою GPGPU, нам доведеться збирати додатки самостійно, а для цього потрібні офіційні SDK від виробників: CUDA Toolkit або ATI Stream SDK. Вони містять у собі необхідні для складання додатків заголовки та бібліотеки.

Ставимо CUDA Toolkit

Йдемо по вищенаведеної посиланням і викачуємо CUDA Toolkit для Linux (вибрати можна з декількох версій, для дистрибутивів Fedora, RHEL, Ubuntu і SUSE, є версії як для архітектури x86, так і для x86_64). Крім того, там же треба скачати комплекти драйверів для розробників (Developer Drivers for Linux, вони йдуть першими в списку).

Запускаємо інсталятор SDK:

$ Sudo sh cudatoolkit_4.0.17_linux_64_ubuntu10.10.run

Коли установка буде завершена, приступаємо до установки драйверів. Для цього завершуємо роботу X-сервера:

# Sudo /etc/init.d/gdm stop

відкриваємо консоль і запускаємо інсталятор драйверів:

$ Sudo sh devdriver_4.0_linux_64_270.41.19.run

Після закінчення установки стартуємо ікси:

Щоб додаток змогли працювати з CUDA / OpenCL, прописуємо шлях до каталогу з CUDA-бібліотеками в змінну LD_LIBRARY_PATH:

$ Export LD_LIBRARY_PATH \u003d / usr / local / cuda / lib64

Або, якщо ти встановив 32-бітну версію:

$ Export LD_LIBRARY_PATH \u003d / usr / local / cuda / lib32

Також необхідно прописати шлях до заголовків файлів CUDA, щоб компілятор їх знайшов на етапі складання програми:

$ Export C_INCLUDE_PATH \u003d / usr / local / cuda / include

Все, тепер можна приступити до складання CUDA / OpenCL-софта.

Ставимо ATI Stream SDK

Stream SDK не вимагає установки, тому скачаний з сайту AMD-архів можна просто розпакувати в будь-який каталог (найкращим вибором буде / opt) і прописати шлях до нього у всю ту ж змінну LD_LIBRARY_PATH:

$ Wget http://goo.gl/CNCNo

$ Sudo tar -xzf ~ / AMD-APP-SDK-v2.4-lnx64.tgz -C / opt

$ Export LD_LIBRARY_PATH \u003d / opt / AMD-APP-SDK-v2.4-lnx64 / lib / x86_64 /

$ Export C_INCLUDE_PATH \u003d / opt / AMD-APP-SDK-v2.4-lnx64 / include /

Як і у випадку з CUDA Toolkit, x86_64 необхідно замінити на x86 в 32-бітних системах. Тепер переходимо в кореневій каталог і розпаковуємо архів icd-registration.tgz (це свого роду безкоштовний ліцензійний ключ):

$ Sudo tar -xzf /opt/AMD-APP-SDK-v2.4-lnx64/icd-registration.tgz -З /

Перевіряємо правильність установки / роботи пакета за допомогою інструменту clinfo:

$ /opt/AMD-APP-SDK-v2.4-lnx64/bin/x86_64/clinfo

ImageMagick і OpenCL

Підтримка OpenCL з'явилася в ImageMagick вже досить давно, однак за замовчуванням вона не активована ні в одному дистрибутиві. Тому нам доведеться зібрати IM самостійно з початкових кодів. Нічого складного в цьому немає, все необхідне вже є в SDK, тому збірка не зажадає установки якихось додаткових бібліотек від nVidia або AMD. Отже, викачуємо / розпаковуємо архів з вихідними кодами:

$ Wget http://goo.gl/F6VYV

$ Tar -xjf ImageMagick-6.7.0-0.tar.bz2

$ Cd ImageMagick-6.7.0-0

$ Sudo apt-get install build-essential

Запускаємо конфигуратор і Грепан його висновок на предмет підтримки OpenCL:

$ LDFLAGS \u003d -L $ LD_LIBRARY_PATH ./confi gure | grep -e cl.h -e OpenCL

Правильний результат роботи команди повинен виглядати приблизно так:

checking CL / cl.h usability ... yes

checking CL / cl.h presence ... yes

checking for CL / cl.h ... yes

checking OpenCL / cl.h usability ... no

checking OpenCL / cl.h presence ... no

checking for OpenCL / cl.h ... no

checking for OpenCL library ... -lOpenCL

Словом "yes" повинні бути відзначені або перші три рядки, або другі (або обидва варіанти відразу). Якщо це не так, значить, швидше за все, була неправильно инициализирована змінна C_INCLUDE_PATH. Якщо ж словом "no" відзначена останній рядок, значить, справа в змінної LD_LIBRARY_PATH. Якщо все окей, запускаємо процес складання / установки:

$ Sudo make install clean

Перевіряємо, що ImageMagick дійсно було скомпільовано з підтримкою OpenCL:

$ / Usr / local / bin / convert -version | grep Features

Features: OpenMP OpenCL

Тепер виміряємо отриманий виграш у швидкості. Розробники ImageMagick рекомендують використовувати для цього фільтр convolve:

$ Time / usr / bin / convert image.jpg -convolve "-1, -1, -1, -1, 9, -1, -1, -1, -1" image2.jpg

$ Time / usr / local / bin / convert image.jpg -convolve "-1, -1, -1, -1, 9, -1, -1, -1, -1" image2.jpg

Деякі інші операції, такі як ресайз, тепер теж повинні працювати значно швидше, однак сподіватися на те, що ImageMagick почне обробляти графіку з шаленою швидкістю, не варто. Поки що дуже мала частина пакета оптимізована за допомогою OpenCL.

FlacCL (Flacuda)

FlacCL - це кодировщик звукових файлів в формат FLAC, вповні в своїй роботі можливості OpenCL. Він входить до складу пакету CUETools для Windows, але завдяки mono може бути використаний і в Linux. Для отримання архіву з кодувальником виконуємо наступну команду:

$ Mkdir flaccl && cd flaccl

$ Wget www.cuetools.net/install/flaccl03.rar

$ Sudo apt-get install unrar mono

$ Unrar x fl accl03.rar

Щоб програма змогла знайти бібліотеку OpenCL, робимо символічне посилання:

$ Ln -s $ LD_LIBRARY_PATH / libOpenCL.so libopencl.so

Тепер запускаємо кодировщик:

$ Mono CUETools.FLACCL.cmd.exe music.wav

Якщо на екран буде виведено повідомлення про помилку "Error: Requested compile size is bigger than the required workgroup size of 32", значить, у нас в системі занадто слабка відеокарта, і кількість задіяних ядер слід скоротити до зазначеного числа за допомогою прапора '- group-size XX ', де XX - потрібну кількість ядер.

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

oclHashcat або брутфорс по-швидкому

Як я вже говорив, одними з перших підтримку GPGPU в свої продукти додали розробники різних крекерів і систем брутфорса паролів. Для них нова технологія стала справжнім святим граалем, який дозволив з легкістю перенести від природи легко распараллелівать код на плечі швидких GPU-процесорів. Тому не дивно, що зараз існують десятки найрізноманітніших реалізацій подібних програм. Але в цій статті я розповім тільки про одну з них - oclHashcat.

oclHashcat - це ломалка, яка вміє підбирати паролі по їх хешу з екстремально високою швидкістю, задіюючи при цьому потужності GPU за допомогою OpenCL. Якщо вірити вимірам, опублікованими на сайті проекту, швидкість підбору MD5-паролів на nVidia GTX580 становить до 15800 млн комбінацій в секунду, завдяки чому oclHashcat здатний знайти середній за складністю восьмісімвольний пароль за якісь 9 хвилин.

Програма підтримує OpenCL і CUDA, алгоритми MD5, md5 ($ pass. $ Salt), md5 (md5 ($ pass)), vBulletin< v3.8.5, SHA1, sha1($pass.$salt), хэши MySQL, MD4, NTLM, Domain Cached Credentials, SHA256, поддерживает распределенный подбор паролей с задействованием мощности нескольких машин.

$ 7z x oclHashcat-0.25.7z

$ Cd oclHashcat-0.25

І запустити програму (скористаємося пробним списком хеш і пробним словником):

$ ./OclHashcat64.bin example.hash? L? L? L? L example.dict

oclHashcat відкриє текст користувальницької угоди, з яким слід погодитися, набравши "YES". Після цього почнеться процес перебору, прогрес якого можна дізнатися після натискання . Щоб призупинити процес, кнопаем

Для відновлення - . Також можна використовувати прямий перебір (наприклад, від aaaaaaaa до zzzzzzzz):

$ ./OclHashcat64.bin hash.txt? L? L? L? L? L? L? L? L

І різні модифікації словника і методу прямого перебору, а також їх комбінації (про це можна прочитати у файлі docs / examples.txt). У моєму випадку швидкість перебору всього словника склала 11 хвилин, тоді як прямий перебір (від aaaaaaaa до zzzzzzzz) тривав близько 40 хвилин. В середньому швидкість роботи GPU (чіп RV710) склала 88,3 млн / с.

висновки

Незважаючи на безліч найрізноманітніших обмежень і складність розробки софта, GPGPU - майбутнє високопродуктивних настільних комп'ютерів. Але найголовніше - використовувати можливості цієї технології можна прямо зараз, і це стосується не тільки Windows-машин, але і Linux.


Часто став з'являтися питання: чому немає GPU прискорення в програмі Adobe Media Encoder CC? А то що Adobe Media Encoder використовує GPU прискорення, ми з'ясували, а також відзначили нюанси його використання. Також зустрічається твердження: що в програмі Adobe Media Encoder CC прибрали підтримку GPU прискорення. Це помилкова думка і випливає з того, що основна програма Adobe Premiere Pro CC тепер може працювати без прописаної і рекомендованої відеокарти, а для включення GPU движка в Adobe Media Encoder CC, відеокарта повинна бути обов'язково прописана в документах: cuda_supported_cards або opencl_supported_cards. Якщо з чіпсетами nVidia все зрозуміло, просто беремо ім'я чіпсета і вписуємо його в документ cuda_supported_cards. Те при використанні відеокарт AMD прописувати треба не ім'я чіпсета, а кодову назву ядра. Отже, давайте на практиці перевіримо, як на ноутбуці ASUS N71JQ з дискретною графікою ATI Mobility Radeon HD 5730 включити GPU движок в Adobe Media Encoder CC. Технічні дані графічного адаптера ATI Mobility Radeon HD 5730 показуються утилітою GPU-Z:

Запускаємо програму Adobe Premiere Pro CC і включаємо движок: Mercury Playback Engine GPU Acceleration (OpenCL).

Три DSLR відео на таймлайн, один над одним, два з них, створюють ефект картинка в картинці.

Ctrl + M, вибираємо пресет Mpeg2-DVD, прибираємо чорні смуги з боків за допомогою опції Scale To Fill. Включаємо також підвищений якість для тестів без GPU: MRQ (Use Maximum Render Quality). Натискаємо на кнопку: Export. Завантаження процесора до 20% і оперативної пам'яті 2.56 Гбайт.


Завантаження GPU чіпсета ATI Mobility Radeon HD 5730 становить 97% і 352Мб бортовий відеопам'яті. Ноутбук тестувався при роботі від акумулятора, тому графічне ядро \u200b\u200b/ пам'ять працюють на знижених частотах: 375/810 МГц.

Підсумкове час прорахунку: 1 хвилина і 55 секунд (Вкл / викл. MRQ при використанні GPU движка, не впливає на підсумкову час прорахунку).
При встановленій Галці Use Maximum Render Quality тепер натискаємо на кнопку: Queue.


Тактові частоти процесора при роботі від акумулятора: 930МГц.

Запускаємо AMEEncodingLog і дивимося підсумкове час прорахунку: 5 хвилин і 14 секунд.

Повторюємо тест, але вже при знятої Галці Use Maximum Render Quality, натискаємо на кнопку: Queue.

Підсумкове час прорахунку: 1 хвилина і 17 секунд.

Тепер включимо GPU движок в Adobe Media Encoder CC, запускаємо програму Adobe Premiere Pro CC, натискаємо комбінацію клавіш: Ctrl + F12, виконуємо Console\u003e Console View і в поле Command вбиваємо GPUSniffer, натискаємо Enter.


Виділяємо і копіюємо ім'я в GPU Computation Info.

В директорії програми Adobe Premiere Pro CC відкриваємо документ opencl_supported_cards, і в алфавітному порядку вбиваємо кодове ім'я чіпсета, Ctrl + S.

Натискаємо на кнопку: Queue, і отримуємо GPU прискорення прорахунку проекту Adobe Premiere Pro CC в Adobe Media Encoder CC.

Підсумкове час: 1 хвилина і 55 секунд.

Підключаємо ноутбук до розетки, і повторюємо результати прорахунків. Queue, галка MRQ знята, без включення движка, завантаження оперативної пам'яті трохи підросла:


Тактові частоти процесора: 1.6ГГц при роботі від розетки і включення режиму: Висока продуктивність.

Підсумкове час: 46 секунд.

Включаємо движок: Mercury Playback Engine GPU Acceleration (OpenCL), як видно від мережі ноутбучная відеокарта працює на своїх базових частотах, завантаження GPU в Adobe Media Encoder CC досягає 95%.

Підсумкове час прорахунку, знизилося з 1 хвилини 55 секунд, до 1 хвилини і 5 секунд.

* Для візуалізації в Adobe Media Encoder CC тепер використовується графічний процесор (GPU). Підтримуються стандарти CUDA і OpenCL. В Adobe Media Encoder CC, движок GPU використовується для наступних процесів візуалізації:
- Зміна чіткості (від високої до стандартної і навпаки).
- Фільтр тимчасового коду.
- Перетворення формату пікселів.
- Расперемеженіе.
Якщо візуалізується проект Premiere Pro, в AME використовуються установки візуалізації з GPU, задані для цього проекту. При цьому будуть використані всі можливості візуалізації з GPU, реалізовані в Premiere Pro. Для візуалізації проектів AME використовується обмежений набір можливостей візуалізації з GPU. Якщо послідовність візуалізується з використанням оригінальної підтримки, застосовується настройка GPU з AME, настройка проекту ігнорується. В цьому випадку всі можливості візуалізації з GPU Premiere Pro використовуються безпосередньо в AME. Якщо проект містить VST сторонніх виробників, використовується настройка GPU проекту. Послідовність кодується за допомогою PProHeadless, як і в більш ранніх версіях AME. Якщо прапорець Enable Native Premiere Pro Sequence Import (Дозволити імпорт вихідної послідовності Premiere Pro) знятий, завжди використовується PProHeadless і настройка GPU.

Читаємо про прихований розділ на системному диску ноутбука ASUS N71JQ.

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

Налаштувати параметри GPU візуалізації

Якщо ваш додаток гальмує, значить частина або всі кадри оновлення екрану оновлюються більше ніж 16 мілісекунд. Щоб візуально побачити оновлення кадрів на екрані, можна на пристрої включити спеціальну опцію (Profile GPU Rendering).

У вас з'явиться можливість швидко побачити, скільки часу займає отрисовка кадрів. Нагадаю, що потрібно вкладатися в 16 мілісекунд.

Опція доступна на пристроях, починаючи з Android 4.1. На пристрої слід активувати режим розробника. На пристроях з версією 4.2 і вище режим за замовчуванням прихований. Для активації йде в налаштування | Про телефоні і сім раз клацаємо по рядку номер збірки.

Після активації заходимо в Опції розробника і знаходимо пункт Налаштувати параметри GPU візуалізації (Profile GPU rendering), який слід включити. У спливаючих вікні виберіть опцію На екрані у вигляді стовпчиків (On screen as bars). У цьому випадку графік буде виводитися поверх запущеного додатку.

Ви можете протестувати не тільки свій додаток, а й інші. Запустіть будь-який додаток і починайте працювати з ним. Під час роботи в нижній частині екрана ви побачите оновлюваний графік. Горизонтальна вісь відповідає за минулий час. Вертикальна вісь показує час для кожного кадру в мілісекундах. При взаємодії з додатком, вертикальні смуги малюються на екрані, з'являючись зліва направо, показуючи продуктивність кадрів протягом якогось часу. Кожен такий стовпець представляє собою один кадр для відтворення екрану. Чим вище висота стовпчика, тим більше часу йде на отрисовку. Тонка зелена лінія є орієнтиром і відповідає 16 мілісекунд за кадр. Таким чином, вам потрібно прагнути до того, щоб при вивченні вашого застосування графік не вибивався за цю лінію.

Розглянемо збільшену версію графіка.

Зелена лінія відповідає за 16 мілісекунд. Щоб укластися в 60 кадрів в секунду, кожен стовпець графіка повинен малюватися нижче цієї лінії. В якихось моментах стовпець виявиться занадто великим і буде набагато вище зеленої лінії. Це означає гальмування програми. Кожен стовпець має блакитний, фіолетовий (Lollipop і вище), червоний і оранжевий кольори.

Блакитний колір відповідає за час, що використовується на створення і оновлення View.

Фіолетова частина являє собою час, витрачений на передачу ресурсів рендеринга потоку.

Червоний колір є час для відтворення.

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

Існують спеціальні методики для зменшення навантаження на графічний процесор.

Налагодити показник GPU overdraw

Інша настройка дозволяє дізнатися, як часто перемальовується один і той же ділянку екрана (тобто виконується зайва робота). Знову йдемо в Опції розробника і знаходимо пункт Налагодити показник GPU overdraw (Debug GPU Overdraw), який слід включити. У спливаючих вікні виберіть опцію Показувати зони накладення (Show overdraw areas). Не лякайтесь! Нкоторие елементи на екрані змінять свій колір.

Поверніться в будь-який додаток і поспостерігайте за його роботою. Колір підкаже проблемні ділянки вашого застосування.

Якщо колір в додатку не змінився, значить все відмінно. Немає накладення одного кольору поверх іншого.

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

Зелений колір - перемальовується двічі. Потрібно задуматися про оптимізацію.

Рожевий колір - перемальовується тричі. Все дуже погано.

Червоний колір - перемальовується багато разів. Щось пішло не так.

Ви можете самостійно перевірити свій додаток для пошуку проблемних місць. Створіть активність і помістіть на неї компонент TextView. Дайте кореневого елементу і текстової мітці якийсь фон в атрибуті android: background. У вас вийде наступне: спочатку ви зафарбували одним кольором самий нижній шар активності. Потім поверх неї малюється новий шар від TextView. До речі, на самому TextView малюється ще й текст.

В якихось моментах накладення квітів не уникнути. Але уявіть собі, що ви таким же чином встановили фон для списку ListView, Який займає все площа активності. Система буде виконувати подвійну роботу, хоча нижній шар активності користувач ніколи не побачить. А якщо до того ж ви створите ще й власну розмітку для кожного елемента списку зі своїм фоном, то взагалі отримаєте перебір.

Маленький рада. Помістіть після методу setContentView () виклик методу, який прибере перірісовку екрану кольором теми. Це допоможе прибрати одне зайве накладення кольору:

GetWindow (). SetBackgroundDrawable (null);