Использовать gpu в lineage 2 что это

Использовать gpu в lineage 2 что это

Видео

— Настройка разрешения игрового экрана. Возможное разрешение и палитра цветов решаются в зависимости от характеристик монитора и видео-карты.

— Настройка частоты обновления экрана во время игры. Возможная частота решается в зависимости от характеристик монитора и видеокарты.
— В случае использования CRT монитора рекомендуется установить максимальную частоту обновления монитора.

— Настройка яркости игрового экрана. Используется, когда настроить яркость монитора достаточно сложно. Чем выше уровень, тем ярче изображение.

— Настройка точности 3D-графики. Если технические характеристики низки, рекомендуем понизить качество.

— Настройка количества 3D-Полигонов. Если технические характеристики низки, рекомендуем понизить качество.

— Настройка плавности перемещения персонажей в игре. Если технические характеристики низки, рекомендуем понизить качество.

— Настройка обзора заднего вида. Чем он выше, тем дальше обзор. Если технические характеристики низки, рекомендуем понизить качество.

— Настройка радиуса отображения персонажей. Чем он выше, тем дальше дистанция, на которой можно увидеть персонажа. Если технические характеристики низки, рекомендуем понизить качество.

— Настройка дождя, снега, тумана и других климатических эффектов. При настройке уровня эффектов на уровень ‘Низкий’ или ‘Не исп.’ скорость увеличится.

Ограничение на отображение персонажей

— В случае использования поддержки минимального количество фреймов количество отображаемых на экране персонажей уменьшится. Чем выше уровень, тем больше персонажей будет отображаться. Если технические характеристики низки, рекомендуем понизить качество.

— Автоматическое сглаживание контуров изображения, 3D линий и эффекта лестницы. Если технические характеристики низки, рекомендуем понизить качество.

— Настройка отображения теней. Рекомендуем не использовать эту настройку при низких характеристиках.

— Настройка отображения травы, цветов и других элементов фона. Рекомендуем не использовать эту настройку при низких характеристиках.

— Использование GPU при обработке движений персонажей. Может увеличить скорость в скоплениях персонажей, например, в городах. Если использовать видеокарту с поддержкой GPU, скорость увеличится.

— Отображение 3D графических текстур. На некоторых старых видеокартах заметно замедление, но если отключить данную функцию, скорость увеличится.

— Настройка эффекта отражения воды с помощью pixelshader. Среди настроек есть следующие: ‘Отражение исключительно неба’, ‘Все отражения’.

Shader качества изображения

— Графический эффект, создающий фэнтезийную атмосферу внутри игры.

Звук/Система

— Расположение окна можно выбрать как "Стандартное" и "Внизу экрана".

— Если не использовать эту функцию, то эффект прозрачности к окнам интерфейса применен не будет.

— Окна экрана возвращаются в исходное положение.

— Настройка защиты клавиатуры обычных пользователей, не администраторов. Изменить данную настройку можно, если войти в ОС с правами администратора.

— Данная функция позволяет камере автоматически следовать за бегущим персонажем.

— Позволяет настроить Джойстик Lineage2. Джойстик должен быть подключен до входа в игру.

Не использовать правую кнопку мыши

— Активировав данную функцию, можно предотвратить обновление обзора при нажатии правой кнопки мыши.

— При использовании функции отображения конечного пункта в журнале Квестов, над головой персонажа появится стрелка, указывающая направление.

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

Спрятать выпавшие предметы

— Активировав данную функцию, можно отключить отображение выпавших предметов. Эта функция позволит уменьшить количество ошибок клиента.
— Подобрать неотображаемые предметы можно, используя действие "Подобрать" или команду /pickup.

Снизить характеристики сопутствующих программ

— Используя эту функцию, можно повысить характеристики программы активного окна и понизить остальные. Также будет отключен звук.

— Настройка качества игровых скриншотов, сохраняемых с помощью клавиши PrtSrc. Если отключить архивирование, то сохранится файл BMP, если установить Высокий/Нормальный/Низкий, то файл сохранится в формате JPEG.

— Настройка громкости эффектов, музыки, системных оповещений, речи во время обучения.

— Активировав эту функцию, можно отключить все звуки внутри игры.

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

Отключить окно помощи

— Использовав данную функцию, можно отключить всплывающие окна помощи. Также можно настроить место отображения данного окна.

Отображение названия локации

— Данная функция отключает отображение локации при перемещении персонажа.

Отключить игровые подсказки

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

— Использовав данную функцию, можно отключить окно обучения.

Трофеи в группе

— Настройка принципов сбора трофеев в группе. Настраивается Главой Группы.
— Нашедшему: Трофей достается тому, кто его подобрал.
— Случайно: Трофей достается кому-то из членов группы случайным образом.
— Случайно+Присвоить: Собранные трофеи и полученные с помощью умения "Присвоить" распределяются между членами группы случайным образом.
— По очереди : Трофей достается каждому из членов группы по очереди.
— По очереди+Присвоить: Собранные трофеи и полученные с помощью умения "Присвоить" достаются каждому из членов группы по очереди.

— Автоматический отказ от дуэли, предложенной другим игроком.

Отменить заявки на вступление в группу

— Автоматический отказ от приглашений в группу, полученных от других игроков.

— Автоматическое использование символа чата в зависимости от канала.

Горячие клавиши

— Можно настроить горячие клавиши для использования в Обычном состоянии, в Чате с Enter, во время полета или трансформации.

— Настройка чата, при котором ввод сообщения осуществляется после нажатия клавиши Enter.

8. Рендеринг

Все вышеописанные действия не стоят и ломаного гроша, если мы не нарисуем результат, так что давайте займемся этим. Вообще, подойти к рендерингу полученного массива частиц можно по-разному, все-таки это творческая задача. Я просто предложу свой вариант ее решения.

При работе над рендерингом я преследовал несколько целей: *Вода должна выглядеть как вода, а не кучка частиц *Цвет и прозрачность воды должны зависеть от цвета и прозрачности отдельных частиц *На ней должны быть блики *Она должна преломлять

Теперь обо всем по порядку. Я решил использовать для этого технику HWGI (Hardware Geometry Instancing), суть которой заключается в том, что помимо буфера вершин и буфера индексов в видеокарту передается так называемый инстанс-буффер, который содержит «личные» данные каждого отдельного объекта – в нашем случае частицы. Но чтобы записать эти данные в инстанс-буфер, нужно сначала достать их из текстуры частиц. Делается все это очень просто:

Для каждой частицы указываются ее координаты, скорость и текстурные координаты, по которым можно будет получить ее цвет. Частицы рисуются группами по 4000, так как при тестировании на некоторых видеокартах возникали сложности с рисованием большего количества частиц за один вызов.

Теперь можно рисовать сами частицы. Делается это два раза в две разные текстуры: текстуру высоты и текстуру цвета. Текстура высоты, по сути, содержит данные о толщине водного слоя и нужна для вычисления нормалей, которые используются для рисования бликов и преломления задника. Такое разделение нужно по двум причинам. Во-первых, я хотел, чтобы цвет и прозрачность каждой частицы были уникальны, поэтому данные о высоте и цвете в одну текстуру просто не влезали. Во-вторых, при рисовании в текстуру высоты используется другой режим смешивания, что делает невозможным использование MRT для рисования обеих текстур за один проход.

Читайте также:  Ответы на задания воркзилла

При рисовании в текстуру цвета и текстуру высоты используется один и тот же вершинный шейдер:

Здесь координаты нашего универсального квада преобразуются так, чтобы частица оказалась в нужном месте и была повернута «вдоль» скорости. При этом частица немного растягивается в зависимости от того, с какой скоростью она движется, получается какое-то подобие motion-blur’a. Текстурные координаты, по которые можно извлечь цвет частицы просто транслируются в пиксельный шейдер.

Понятное дело, что частицы рисуются не как квадраты. Для частиц используется специальная черно-белая текстурка, на которой нарисовано что-то вроде радиального распределения гаусса:

Прозрачность берется равной одной из компонент цвета (например, красной). Полученный из этой текстуры цвет умножается на цвет самой частицы и рисуется. Параметры смешивания на этом шаге устанавливаются следующим образом:

Рендеринг в текстуру высоты идет с другими параметрами смешивания:

В самом же шейдере просто берется цвет из текстуры и умножается на постоянный коэффициент. Это делается для того, чтобы конечная величина какой-нибудь компоненты не получилась больше 1.0 – что возможно при аддитивном блендинге – и это не привело к сильным искажениям:


Рис. 14. Карта цвета и карта высот

Теперь у нас есть все необходимое, чтобы нарисовать нашу воду. Сначала мы динамически генерируем карту нормалей из полученной карты высот. Я просто взял этот кусочек из RenderMonkey с одним лишь отличием. Чтобы вода выглядела более гладкой, нормаль рассчитывается не по соседним текселям, а со сдвигом в 2 текселя:


Рис. 15. А: оригинальный вариант; В: вариант со сдвигом в 2 текселя

Чтобы это не вызывало побочных эффектов частицы рисуются в текстуру высоты с меньшим коэффициентом масштабирования, чем при рисовании в текстуру цвета.

Далее, когда у нас уже есть нормаль, рассчитывается спекуляр и преломления. Тут нет совершенно ничего необычного. Основной цвет берется из текстуры цвета. Смешивание проводится прямо в шейдере.

Все, теперь можно любоваться результатами 🙂


Рис. 16. Скриншот

9. Демонстрация (исходный код)

К статье прилагается демонстрационная программа с исходниками, выполненная в стиле примеров из DX SDK.

Исходный код можно скачать здесь: gpu_water.zip


Рис. 17. Демонстрационная программа

Интерфейс позволяет приостановить симуляцию (pause); запустить ее заново (restart); изменить количество обрабатываемых частиц (max particles number), новые частицы при этом «подкачиваются» через эмиттер; изменить размер эмиттера (emitter size) и амплитуду его колебаний (emitter magnitude); силу действия аттрактора (attractor force). Есть возможность включения геометрии (bounding geometry); режима рисования частиц (draw as particles), отключающего «водный» рендеринг; и режима нулевой гравитации (zero gravity). Цвет воды, которая в данный момент выливается их эмиттера можно задать ползунками Water color, а скорость диффузии – ползунком diffusion.

Управление производится мышью, левая кнопка активирует отталкивающий эмиттер, левая кнопка с ctrl – притягивающий эмиттер, а правая кнопка + движение мышью – глобальное воздействие на частицы.

Для работы демонстрационной программы требуется видеокарта, поддерживающая шейдеры версии 3.0. Для комфортной обработки большого количества частиц желательно иметь видеокарту класса GF8800 или выше.

Анализ производительности реализации, проведенный с помощью NVPerfHUD показал, что при обработке 65536 частиц самыми «тяжелыми» для GPU задачами являются (в порядке убывания): Расчет сил (28.6 мс), расчет диффузии (24.0 мс), расчет давления (17.7 мс), сортировка хэшей (15.9 мс), рендеринг карты цвета (9.1 мс) и рендеринг карты высот (4.4 мс). Время выполнения различных этапов работы программы было замерено на следующей системе: C2D E6550 2.33GHz, 2 GB, GeForce 7600GT.


Рис. 18. Производительность отдельных блоков, по данным NVPerfHUD


Рис. 19. Unit Utilization Graph

Ролик, демонстрирующий работу программы. Там же можно найти пару роликов из предыдущих версий.

10. Приложение. Сортировка методом bitonic merge sort на GPU

Сразу скажу, что я видел две реализации этого алгоритма на GPU, однако я все равно решил изобретать свой велосипед. Во-первых, потому что многое не понял в найденных исходниках. Во-вторых, чтобы глубже разобраться в вопросе. К чему я в конечном итоге пришел – опишу тут.

Для начала пара слов о сути алгоритма. Здесь я опускаю теоретическое обоснование сказанного, наша цель – практическая реализация. Сортировка массива проходит за log(n) стадий (stage), где n – количество элементов, каждая из которых содержит в свою очередь s+1 проходов (pass), где s – номер стадии. Проходы удобно нумеровать в порядке убывания, начиная с s.


Рис. 20. bitonic merge sort для массива из 8 элементов

Стрелка обозначает, какие элементы нужно сравнить. Например, если стрелка идет от элемента A к элементу B, то это значит, что мы поменяем A и B местами, если A > B. Заметьте, что в рамках одного прохода длина стрелки не меняется – то есть сравниваемые элементы всегда находятся на одном расстоянии. Позже мы этим воспользуемся.

В отличие от реализаций, которые я встречал, я решил действовать по принципу один проход = один квад. Все, что для этого нужно – имея текстурные координаты данного конкретного текселя узнать, с каким текселем его надо сравнить и как именно нужно сравнить – A > B или B > A.

Займемся решением этой задачи. Первое, что нужно сделать – преобразовать текстурные координаты в индекс текущего элемента. Делается это элементарно:

Теперь нужно узнать, с каким элементом нужно сравнить текущий элемент. Как уже было замечено ранее, расстояние до нужного элемента постоянно и равно 2^p, поэтому нужно только узнать, в каком направлении нужно сдвинуться – вперед или назад. Если присмотреться, то можно заметить, что эти направления чередуются с шагом, равным 2^p, где p – номер прохода:


Рис. 21. Чередование направления сравненияв

Аналогично чередуется и знак сравнения (A > B или A

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

Предисловие

В этой статье мы попытаемся разобраться, зачем нужна технология GPGPU (General-purpose graphics processing units, Графический процессор общего назначения) и все связанные с ней реализации от конкретных производителей. Узнаем, почему эта технология имеет очень узкую сферу применения, в которую подавляющее большинство софта не попадает в принципе, и конечно же, попытаемся извлечь из всего этого выгоду в виде существенных приростов производительности в таких задачах, как шифрование, подбор паролей, работа с мультимедиа и архивирование.

Читайте также:  Linux mint работа с дисками

Рождение 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 или ядро Linux, ускоренное GPU

Исследователи из университета Юты разработали систему KGPU, позволяющую выполнять некоторые функции ядра Linux на графическом процессоре с помощью фреймворка CUDA. Для выполнения этой задачи используется модифицированное ядро Linux и специальный демон, который работает в пространстве пользователя, слушает запросы ядра и передает их драйверу видеокарты с помощью библиотеки CUDA. Интересно, что несмотря на существенный оверхед, который создает такая архитектура, авторам KGPU удалось создать реализацию алгоритма AES, который поднимает скорость шифрования файловой системы eCryptfs в 6 раз.

Что есть сейчас?

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


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

Во-первых, понадобится видеокарта, поддерживающая технологию CUDA или Stream. Необязательно, чтобы она была топовая, достаточно только, чтобы год ее выпуска был не менее 2009. Полный список поддерживаемых видюшек можно посмотреть в Википедии: en.wikipedia.org/wiki/CUDA и en.wikipedia.org/wiki/AMD_Stream_Processor. Также о поддержке той или иной технологии можно узнать, прочитав документацию, хотя в большинстве случаев будет достаточным взглянуть на коробку из под видеокарты или ноутбука, обычно на нее наклеены различные рекламные стикеры.

Во-вторых, в систему должны быть установлены последние проприетарные драйвера для видеокарты, они обеспечат поддержку как родных для карточки технологий 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:

Или, если ты установил 32-битную версию:

Также необходимо прописать путь до заголовочных файлов CUDA, чтобы компилятор их нашел на этапе сборки приложения:

Все, теперь можно приступить к сборке 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=/opt/AMD-APP-SDK-v2.4-lnx64/lib/x86_64/
$ export C_INCLUDE_PATH=/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:

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=-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

Далее устанавливаем 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

Если на экран будет выведено сообщение об ошибке "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 $ 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.

  • Суть технологии GPGPU — произвольные вычисления на видеокартах.
  • Существует OpenCL SDK, разрабатываемый компанией Intel, но пока с его помощью можно запускать приложения только на классическом CPU.
  • FASTRA II — суперкомпьютер, построенный с использованием 13 видеокарт, мощностью 12TFLOPS.
Ссылка на основную публикацию
Защищенный пдф снять защиту
Файлы PDF, разработанном компанией Adobe Systems, являются одним из самых распространенных форматов, который используется для создания различных электронных документов, книг,...
Драйвера для philips s309
Home » Philips » Philips S309 USB Drivers Download Philips S309 official USB drivers for your Android smartphone. You will...
Драйвера для видеокарты ати радеон
Драйверы Radeon Software/Catalyst для видеокарт AMD (ATI): AMD Radeon Software/Catalyst для Windows 10 Драйверы AMD Radeon Software/Catalyst для настольных и...
Звезда на небе мигает разными цветами
Вы замечали, каким тихим и безмятежным кажется звездное небо? И стоит только на минуту остановиться и заглянуть в него, как...
Adblock detector