Как использовать видеокарту вместо процессора
Что такое видеокарта, знает каждый, ведь это главный элемент ПК, отвечающий за игры. И чем он мощнее, тем лучше. Однако в словосочетание «графический адаптер» вложено намного больше смысла. И кроме умения отапливать помещение и жрать электроэнергию«майнить» видеокарты способны ускорять работу некоторых полезных программ. В их число входят приложения для видеомонтажа, графического дизайна, 3D-моделирования, VR-разработок.
Техническая сторона вопроса
Обычно основная часть нагрузки ложится на центральный процессор. Но есть задачи, с которыми GPU справится во много раз быстрее, и было бы глупо этим не воспользоваться. Логично, что чаще всего это касается программ для работы с графикой, видео и 3D-моделированием.
Во время GPU-ускорения задействуется исключительно память видеокарты. Для простой работы с FHD достаточно 2 ГБ. Однако, когда один кадр компонуется из нескольких (картинка в картинке) или используются эффекты, одновременно обрабатывающие несколько кадров (шумодавы и т. д.), расход возрастает. Для UHD/4K-видео необходимо уже минимум 4 ГБ видеопамяти.
Конечный прирост производительности зависит от правильности настройки и общих параметров системы. В случае, например, рендеринга иногда разница с CPU составляет разы, а это сэкономленное время, которое, как известно, — деньги. Гарантировать точный результат ускорения не возьмется ни один производитель, ссылаясь на индивидуальность каждой системы.
Любая видеокарта в той или иной степени способна проводить сложные вычисления и обрабатывать графику. Больше других акцентирует внимание на неигровых возможностях и технологиях своих GeForce компания nVidia.
- Тензорные ядра — присутствуют в адаптерах серии RTX, повышают производительность и энергоэффективность. Поддержка ИИ ускоряет расчеты и работу с графикой.
- CUDA — проприетарная технология nVidia, доступная для устройств GTX и RTX. Позволяет использовать графический процессор для вычислений общего назначения, улучшает работу с фото, видео и 3D.
- NVENC — отдельный аппаратный блок, способный кодировать и декодировать видеопоток. Благодаря этому разгружаются центральный и графический процессоры для запуска игр и других ресурсоемких задач. В первую очередь это интересно стримерам, но многие программы видеомонтажа уже приспособили NVENC под себя.
- NVIDIA STUDIO DRIVER — выходит для видеокарт серии 10хх и моложе. Оптимизирует работу адаптера под такие приложения, как Autodesk Maya, 3ds Max, Arnold 5, DaVinci Resolve и т. д.
Карты AMD тоже хорошо справляются с вычислениями и обработкой графики, но любит говорить об этом исключительно компания Apple. AMD использует открытые технологии OpenGL и Vulcan — альтернативу CUDA.
ImageMagick и OpenCL
Поддержка OpenCL появилась в ImageMagick уже достаточно давно, однако по умолчанию она не активирована ни в одном дистрибутиве. Поэтому нам придется собрать IM самостоятельно из исходников. Ничего сложного в этом нет, все необходимое уже есть в SDK, поэтому сборка не потребует установки каких-то дополнительных библиотек от nVidia или AMD. Итак, скачиваем/распаковываем архив с исходниками:
Далее устанавливаем инструменты сборки:
$ sudo apt-get install build-essential
Запускаем конфигуратор и грепаем его вывод на предмет поддержки OpenCL:
$ LDFLAGS=-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.
Рождение GPGPU
Мы все привыкли думать, что единственным компонентом компа, способным выполнять любой код, который ему прикажут, является центральный процессор. Долгое время почти все массовые ПК оснащались единственным процессором, который занимался всеми мыслимыми расчетами, включая код операционной системы, всего нашего софта и вирусов.
Позже появились многоядерные процессоры и многопроцессорные системы, в которых таких компонентов было несколько. Это позволило машинам выполнять несколько задач одновременно, а общая (теоретическая) производительность системы поднялась ровно во столько раз, сколько ядер было установлено в машине. Однако оказалось, что производить и конструировать многоядерные процессоры слишком сложно и дорого. В каждом ядре приходилось размещать полноценный процессор сложной и запутанной x86-архитектуры, со своим (довольно объемным) кэшем, конвейером инструкций, блоками SSE, множеством блоков, выполняющих оптимизации и т.д. и т.п. Поэтому процесс наращивания количества ядер существенно затормозился, и белые университетские халаты, которым два или четыре ядра было явно мало, нашли способ задействовать для своих научных расчетов другие вычислительные мощности, которых было в достатке на видеокарте (в результате даже появился инструмент BrookGPU, эмулирующий дополнительный процессор с помощью вызовов функций DirectX и OpenGL).
Графические процессоры, лишенные многих недостатков центрального процессора, оказались отличной и очень быстрой счетной машинкой, и совсем скоро к наработкам ученых умов начали присматриваться сами производители GPU (а nVidia так и вообще наняла большинство исследователей на работу). В результате появилась технология nVidia CUDA, определяющая интерфейс, с помощью которого стало возможным перенести вычисление сложных алгоритмов на плечи GPU без каких-либо костылей. Позже за ней последовала ATi (AMD) с собственным вариантом технологии под названием Close to Metal (ныне Stream), а совсем скоро появилась ставшая стандартом версия от Apple, получившая имя OpenCL.
Программы, работающие с GPU-ускорением
О возможности ускорения программы с помощью видеокарты можно узнать на официальном сайте. Все ведущие производители софта дают четкие инструкции, какая видеокарта подойдет и как включить GPU-ускорение. А первое, что приходит на ум, когда речь идет о работе с графикой и видео, — решения студии Adobe .
- Adobe Premiere Pro использует вычислительные ресурсы видеокарт, начиная с версии CS5. Текущие версии для Windows поддерживают все современные GPU (включая встроенную графику Intel). CS6 и выше имеют функцию стабилизации видео Warp Stabilizer, которая устраняет дрожание камеры. Плагин использует GPU-ускорение только при финальном рендеринге изображения. Также в CS6 появился рендер Ray-traced 3D, который обсчитывает на видеокарте 3D-слои, камеру и источники света в композиции. Adobe Premiere CC научился работать одновременно с несколькими видеокартами, причем допускается использование разных серий и даже производителей (MultipleGPU). Выигрыш зависит от общей конфигурации ПК. Интересные возможности дает использование GPU сторонними плагинами. Можно ускорять Premiere при помощи CUDA одной видеокарты, при этом его плагин будет ускоряться OpenGL другой видеокарты. Такие плагины, как Magic Bullet Looks, Elements3D и т. п. могут использовать ресурсы GPU независимо от настроек Adobe. Подробные требования приложения к видеокарте можно найти на официальном сайте.
- Adobe After Effectsпредъявляет к видеокартам аналогичные с предыдущим клиентом требования.
- Adobe Photoshop также активно использует видеокарты в процессе обработки изображений. Фоторедактор закрывает некоторые свои возможности, если видеокарта их не поддерживает. Яркими примерами таких функций являются «Деформация перспективы», «Умная резкость», «Размытие». Пользователю доступны три режима: базовый, обычный и расширенный. Наиболее интенсивно использует видеокарту последний. Если наблюдается снижение быстродействия, стоит переключиться на уровень ниже, воспользовавшись вкладкой Дополнительные параметры.
Кроме продукции компании Adobe нельзя не вспомнить такие программы, как 3ds Max , DaVinci Resolve и Vegas Pro .
Данные о поддержке наиболее адаптированных приложений производители видеокарт публикуют на своих официальных сайтах:
А что могут «профи»?
Несколько лет назад компания nVidia выпустила первый TITAN — запредельную по производительности и цене игровую видеокарту. Но вместо того, чтобы стать нишевым продуктом, она была буквально сметена с прилавков. Оказалось, что карта прекрасно справляется с расчетами, и многие компании с удовольствием покупали ее вместо дорогих про-аналогов. Разумеется, nVidia быстро смекнула, в чем дело, и в начале 2018 года прикрыла лавочку запретила использовать графические процессоры GeForce и Titan в составе дата-центров. По словам nVidia, нельзя гарантировать их безотказную работу в жарких условиях (и это не фигуральный оборот) в режиме 24/7. В качестве альтернативы предлагается использовать, например, Tesla V100, который гораздо мощнее GeForce и стоит в десять раз больше создан специально для работы в условиях ЦоД.
nVidia имеет три линейки профессиональных видеокарт: Quadro, NVS и Tesla.
- Quadro — служит для рендеринга видео, производства VR/AR, 3D-моделирования. Быстрые и дорогие. Чтобы оправдать стоимость, производитель оснащает их самыми современными и совершенными разработками, которые появятся только в следующих сериях GeForce. Для очень богатых дизайнеров и инженеров.
- NVS — многопортовые карточки, созданные для подключения большого количества мониторов в одну панель. Например, с их помощью в Макдональдсе можно выбрать бигмак с помидорами или беконом, а в аэропорте найти свой рейс. По сути, это самая обычная «затычка», на которой распаяли много портов. Очень слабые по железу и очень дорогие по соотношению цена/производительность, но ценят их не за FPS в Батле.
- Tesla — узкоспециализированная и сверхдорогая линейка для математических и физических расчетов. Для работы требуется CPU. Портов нет, поиграть нельзя, расходимся пацаны.
Компания AMD в качестве профессионального решения предлагает серию Radeon Pro. Также у них есть вычислительные аналоги Tesla с космическим ценником под названием Instinct.
Что есть сейчас?
В силу своей молодости, а также благодаря описанным выше проблемам, 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:
Когда установка будет завершена, приступаем к установке драйверов. Для этого завершаем работу X-сервера:
Открываем консоль и запускаем инсталлятор драйверов:
После окончания установки стартуем иксы:
Чтобы приложения смогли работать с CUDA/OpenCL, прописываем путь до каталога с CUDA-библиотеками в переменную LD_LIBRARY_PATH:
Или, если ты установил 32-битную версию:
Также необходимо прописать путь до заголовочных файлов CUDA, чтобы компилятор их нашел на этапе сборки приложения:
Все, теперь можно приступить к сборке CUDA/OpenCL-софта.
Предисловие
В этой статье мы попытаемся разобраться, зачем нужна технология GPGPU (General-purpose graphics processing units, Графический процессор общего назначения) и все связанные с ней реализации от конкретных производителей. Узнаем, почему эта технология имеет очень узкую сферу применения, в которую подавляющее большинство софта не попадает в принципе, и конечно же, попытаемся извлечь из всего этого выгоду в виде существенных приростов производительности в таких задачах, как шифрование, подбор паролей, работа с мультимедиа и архивирование.
Способ 1: Официальное программное обеспечение
После установки драйверов для видеокарт Nvidia и AMD устанавливается программное обеспечение, включающее в себя специальное приложение. В случае с первым производителем, устанавливается GeForce Experience, со вторым – AMD Catalyst Control Center. Рассмотрим далее, как с помощью них можно сменить видеокарту.
eGPU — внешний графический процессор
Этот раздел касается в первую очередь техники компании Apple. Купертиновцы любят делать упор на творческие возможности своих устройств, однако пользователи макбуков и аймаков ограничены исходной комплектацией. На помощь приходит eGPU — внешняя видеокарта, с помощью которой, по заявлению производителя, можно увеличить скорость обработки графики на Mac в несколько раз.
По сути, это обычная видеокарта в специальном боксе с блоком питания и дополнительным охлаждением. Она подключается к макам посредством Thunderbolt 3. Уже много лет Apple использует видеокарты AMD , и весь софт Apple затачивается под новый API Metal. Графические решения nVidia ощутимого прироста производительности на Apple не дают, так как из-за патологической жадности компании не смогли договориться, и весь софт на маке заточен исключительно под AMD. В отместку nVidia недавно полностью отменила поддержку CUDA на MacOS.
GeForce Experience
Если вы владелец Nvidia, то следуйте следующей инструкции для подключения второго видеоадаптера:
GPU — наше все?
Несмотря на все преимущества, техника GPGPU имеет несколько проблем. Первая из них заключается в очень узкой сфере применения. GPU шагнули далеко вперед центрального процессора в плане наращивания вычислительной мощности и общего количества ядер (видеокарты несут на себе вычислительный блок, состоящий из более чем сотни ядер), однако такая высокая плотность достигается за счет максимального упрощения дизайна самого чипа.
В сущности основная задача GPU сводится к математическим расчетам с помощью простых алгоритмов, получающих на вход не очень большие объемы предсказуемых данных. По этой причине ядра GPU имеют очень простой дизайн, мизерные объемы кэша и скромный набор инструкций, что в конечном счете и выливается в дешевизну их производства и возможность очень плотного размещения на чипе. GPU похожи на китайскую фабрику с тысячами рабочих. Какие-то простые вещи они делают достаточно хорошо (а главное — быстро и дешево), но если доверить им сборку самолета, то в результате получится максимум дельтаплан. Поэтому первое ограничение GPU — это ориентированность на быстрые математические расчеты, что ограничивает сферу применения графических процессоров помощью в работе мультимедийных приложений, а также любых программ, занимающихся сложной обработкой данных (например, архиваторов или систем шифрования, а также софтин, занимающихся флуоресцентной микроскопией, молекулярной динамикой, электростатикой и другими, малоинтересными для линуксоидов вещами).
И третье: графические процессоры работают с памятью, установленной на самой видеокарте, так что при каждом задействовании GPU будет происходить две дополнительных операции копирования: входные данные из оперативной памяти самого приложения и выходные данные из GRAM обратно в память приложения. Нетрудно догадаться, что это может свести на нет весь выигрыш во времени работы приложения (как и происходит в случае с инструментом FlacCL, который мы рассмотрим позже).
Но и это еще не все. Несмотря на существование общепризнанного стандарта в лице OpenCL, многие программисты до сих пор предпочитают использовать привязанные к производителю реализации техники GPGPU. Особенно популярной оказалась CUDA, которая хоть и дает более гибкий интерфейс программирования (кстати, OpenCL в драйверах nVidia реализован поверх CUDA), но намертво привязывает приложение к видеокартам одного производителя.
FlacCL (Flacuda)
FlacCL — это кодировщик звуковых файлов в формат FLAC, задействующий в своей работе возможности OpenCL. Он входит в состав пакета CUETools для Windows, но благодаря mono может быть использован и в Linux. Для получения архива с кодировщиком выполняем следующую команду:
Далее устанавливаем unrar, mono и распаковываем архив:
$ 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
Сразу скажу, из-за долгого времени инициализации OpenCL заметный выигрыш можно получить только на достаточно длинных дорожках. Короткие звуковые файлы FlacCL обрабатывает почти с той же скоростью, что и его традиционная версия.
Как работают две видеокарты
Работоспособность двух видеокарт в паре регулируется специальным программным обеспечением, которое определяет степень нагрузки на графическую систему. В том случае, если требуется больше нагрузки, то происходит отключение встроенной карты и активация дискретного устройства. Часто у пользователей возникает проблема, по которой данной программное обеспечение начинает некорректно работать.
Обычно такая проблема возникает у тех пользователей, которые пытаются самостоятельно выполнить установку графического адаптера. При неправильном подключении он может вовсе оставаться незадействованным, и поэтому игры, программы или видеоролики могут серьезно тормозить. Также ошибки могут возникать из-за неправильных драйверов или отключения необходимых функций в BIOS.
Все нижеуказанные способы будут работать только в том случае, если правильно установлена дискретная видеокарта и загружены все необходимые драйверы.
KGPU или ядро Linux, ускоренное GPU
Исследователи из университета Юты разработали систему KGPU, позволяющую выполнять некоторые функции ядра Linux на графическом процессоре с помощью фреймворка CUDA. Для выполнения этой задачи используется модифицированное ядро Linux и специальный демон, который работает в пространстве пользователя, слушает запросы ядра и передает их драйверу видеокарты с помощью библиотеки CUDA. Интересно, что несмотря на существенный оверхед, который создает такая архитектура, авторам KGPU удалось создать реализацию алгоритма AES, который поднимает скорость шифрования файловой системы eCryptfs в 6 раз.
Выводы
Несмотря на множество самых разных ограничений и сложность разработки софта, GPGPU — будущее высокопроизводительных настольных компов. Но самое главное — использовать возможности этой технологии можно прямо сейчас, и это касается не только Windows-машин, но и Linux.
Процессор - это устройство общего назначения, которые может проводить любые расчеты в разных средах и задачах. Графику он обрабатывать так же умеет, но так как это его не первостепенная задача, делать он это будет крайне долго.
Для каждого рода задач, свои устройства.
Ну видеокарта тоже может что угодно обсчитывать в качестве сопроцессора причем еще лучше чем собственно проц :)
Sasha Blouse Искусственный Интеллект (161347) С того момента, как появились унифицированные ядра в чипах видеокарт, много интересных проектов было создано, которые жаль, не дожили до наших дней. Например помню разработку архиватора с поддержкой CUDA, жаль закрыли его.
ради интереса, в принципе думаю можно
а вот как - это уже не знаю
по сути то у видеокарты тоже свой процессор есть, который занимается обработкой данных, чтобы не нагружать основной
у основного другая схема обработки данных, и если он будет этим заниматься - просто будет дольше, больше нагрузка.
можно теоретически, тем более что первые компы были вообще без видеокарт. Но производительность ЦП в области графических вычислений никак не сравнится с ГП, поэтому смысла заниматься этой ерундой нет никакого
Я не профи. Но в программе Blender в настройках рендера можно обрабатывать процессором а можно видеокартой так же можно совместно и картой и процессором.
можно ограничить что то например количество ядер и количество потоков.
если хороший процессор то он с графикой справляется не плохо.
Раньше так и было. Процессор полностью создавал картинку, а видеокарта только генерировала по ней видеосигнал.
сейчас все процессоры новые идут с видео ядром,. нах тебе сам процессор то заставлять графу обрабатывать.
С точки зрения современных программ, это как без монитора словами описывать, что Вы должны видеть на мониторе. Без API (DirectX) каждый вообразит себе свое. Меняться картинка будет очень медленно :). Собственно, вывод хоть какой-то все равно нужно (где описывать словами - хотя бы звук).
Насчет раньше - почти верно. Не было ни шейдеров, ни DirectX, команды писались только для процессора (он, впрочем, и сейчас остается главным). Под DOS не было даже отдельного драйвера видеокарты (хотя его аналог был в библиотеках языков программирования и просто компилировался каждый раз вместе с программой, вызывающей графику). Процессор "сам" посылал в память видеокарты собранную картинку.
Видеокарта – самая важная составляющая игровой системы и не только. В рендере, некоторые пользователи предпочитают работать именно через графический ускоритель, но и в задачах попроще видеокарта бывает полезной. Было бы отлично, если не приходилось покупать для компьютера процессор, ведь он уже есть в GPU. Но почему видеокарта не может заменить центральный процессор?
Начну с того, что видеокарта – это отдельная система, имеющая собственную плату, оперативную память, чип, а иногда и несколько. Имеется даже отдельная подсистему питания. Казалось бы – компьютер в миниатюре… От части поэтому, графические ускорители стоят довольно дорого, но вернёмся к теме… Схема работы видеокарты почти такая же, как с целым ПК. Видеокарта обменивается данными с центральным процессором по средствам линий PCI. Данные поступают в оперативную память, а та в свою очередь передаёт информацию графическому процессору.
А теперь краткий вывод – GPU и CPU почти одно и тоже, но выполняют разные задачи. Почему же они не взаимозаменамы? Проблема кроится на уровне логики их работы. Уверен, на уроке информатики многие учили алгоритмы – самый важный элемент для получения результата. Большая часть знающих тему людей скажет, что есть алгоритмы типа «И», «ИЛИ», «НЕТ», хотя на самом деле, вариантов алгоритма очень много. Процессор состоит из миллионов транзисторов и каждый из них относится к одному из 16 видов алгоритма.
В CPU транзисторы скомпонованы так, чтобы решать каждый случай, даже однотипный, по уникальной схеме. То есть, центральный процессор проявляет гибкость и редко повторяет один и тот же алгоритм для решения задачи. GPU сделан совершенно иначе… Транзисторы скомпонованы для решения однотипных задач и их выстраивания в единый поток. Из-за этого, графический процессор не проявляет «инициативу» и сужает возможность получения широкого спектра данных.
Объясню чуть проще… GPU и CPU можно сравнить как человека, который работал всю жизнь в одной сфере и человека, который сменил не одну профессию. GPU решает однотипные задачи каждый раз, получая примитивный ответ, а CPU, каждый раз решает задачу уникальным путём, получая самые разные итоги.
А были ли попытки совместить GPU и CPU? Конечно… В Intel задавались целью объединить центральный и графический процессор в одно целое ещё в конце 70-х начале 80-х и даже вернулись к теме в нулевые, но решение не получило распространения из-за отсутствия стандарта, а для одного универсального устройства слота PCI-Express мало – нужна большая пропускная способность.
Ноутбук сегодня – это не просто печатная машинка, способная работать в любом месте, но и мощное устройство, которое может вполне заменить стационарный компьютер. Процессоры на подобных устройствах используются разные: от слабых до высокопроизводительных, а вот дела с видеоадаптерами обстоят совершенно иначе.
Обычно встроенные графические системы не столь производительны, так что зачастую пользователям приходится устанавливать дополнительные дискретные видеокарты. Но здесь всплывает одно но… А как же ее активировать?
Обо всем это читайте далее, сегодня мы поговорим о всевозможных способах переключения графических карт.
Ставим ATI Stream SDK
Stream SDK не требует установки, поэтому скачанный с сайта AMD-архив можно просто распаковать в любой каталог (лучшим выбором будет /opt) и прописать путь до него во всю ту же переменную LD_LIBRARY_PATH:
Как и в случае с CUDA Toolkit, x86_64 необходимо заменить на x86 в 32-битных системах. Теперь переходим в корневой каталог и распаковываем архив icd-registration.tgz (это своего рода бесплатный лицензионный ключ):
$ sudo tar -xzf /opt/AMD-APP-SDK-v2.4-lnx64/icd-registration.tgz -С /
Проверяем правильность установки/работы пакета с помощью инструмента clinfo:
oclHashcat или брутфорс по-быстрому
Как я уже говорил, одними из первых поддержку GPGPU в свои продукты добавили разработчики различных крэкеров и систем брутфорса паролей. Для них новая технология стала настоящим святым граалем, который позволил с легкостью перенести от природы легко распараллеливаемый код на плечи быстрых GPU-процессоров. Поэтому неудивительно, что сейчас существуют десятки самых разных реализаций подобных программ. Но в этой статье я расскажу только об одной из них — oclHashcat.
oclHashcat — это ломалка, которая умеет подбирать пароли по их хэшу с экстремально высокой скоростью, задействуя при этом мощности GPU с помощью OpenCL. Если верить замерам, опубликованным на сайте проекта, скорость подбора MD5-паролей на nVidia GTX580 составляет до 15800 млн комбинаций в секунду, благодаря чему oclHashcat способен найти средний по сложности восьмисимвольный пароль за какие-то 9 минут.
Автор не раскрывает исходники (что, в общем-то, логично), но у программы есть нормально работающая Linux-версия, которую можно получить на официальной страничке.
Далее следует распаковать архив:
$ 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 млн/с.
Читайте также: