Меню Закрыть

Amd app sdk runtime что это

Содержание

Установка драйверов Catalyst 13.1 без Catalyst Control Center

При обновлении драйверов видеокарт Radeon HD каждый пользователь сталкивается с тем, что их невозможно скачать отдельно, с официального сайта программы. Они поставляются только в комплекте с монструозным приложением Catalyst Control Center. Если вы хотите установить только драйвера видеокарты AMD, читайте наши инструкции.

Первым делом необходимо скачать последнюю версию драйверов Catalyst 13.1. Прямые ссылки на загрузку драйверов для всех актуальных версий Windows (32 и можно найти здесь. Обращаем внимание — если вы являетесь пользователем видеокарты одной из следующих серий: HD 2000, 3000 и 4000, необходимо установить специальные драйвера Catalyst 13.1 Legacy.

Размер установочного файла для Windows составляет 94.8 MB. Владельцам ОС Windows 7 и Windows 8 придется загружать файл размером 146.5 MB. Сервера AMD отдают файл со скоростью

Пользовательская установка Catalyst 13.1

После запуска установочного файла, программа предложит распаковать файлы. Не все знают, но, после установки драйверов, папку с распакованными файлами можно смело удалять из системы. По умолчанию они распаковываются по следующему адресу: C:AMDSupport13-1_vista_win7_win8_64_dd_ccc_whql, однако, вы вольны выбирать любое другое местоположение, нажав кнопку Browse.

После распаковки файлов необходимых для установки Catalyst Driver, автоматически запустится диалог инсталлятора. После выбора языка, откроется диалоговое окно, в котором необходимо выбрать «Устанавливать». В следующем окне, в разделе «Быстрая или выборочная установка» обязательно выберите пункт «Пользовательское» и нажмите «Далее».

Инсталлятор проведет анализ системы и видеоплаты, после чего предложит выбрать устанавливаемые компоненты. Именно здесь можно запретить установку Catalyst Control Center. Просто снимите отметку с пункта «Catalyst Control Center». Рекомендуем так же отключить установку AMD APP SDK Runtime — этот компонент необходим только разработчикам приложений. В остальных случаях он лишь захламляет систему. А вот «Драйвер дисплея AMD» и «Аудиодрайвер HDMI» — как раз то что нам нужно.

После нажатия на кнопку «Далее» начнется процесс установки выбранных драйверов и компонентов. В процессе установки экран компьютера может несколько раз отключаться, так же иногда наблюдается сброс разрешения на 800×600. После завершения инсталляции все настройки изображения вернутся в норму.

Драйвера Catalyst 13.1 и CCC предназначены для видеокарт: HD 7970, HD 7950, HD 7870, HD 7850, HD 7770 и HD 7750 | HD 6990, HD 6970, HD 6950, HD 6870 и HD 6850 | HD 5970, 5870 Eyefinity 6 Edition, HD 5870, HD 5850, HD 5830, HD 5770, HD 5750 и HD 5670.

Драйвера Catalyst Legacy 13.1 и CCC предназначены для видеокарт серий: HD 2000, 3000 и 4000 (такие как: HD 4870 X2, HD 4890, HD 4870, HD 4850, HD 4830, HD 4770, HD 3800, HD 3600, HD 3400 и др.).

Описание

С помощью платформы разработки Accelerated Parallel Processing, сокращённо AMD APP SDK появляется возможность внедрить современные решения APP в те продукты, к которым пользователи проявляют активный интерес. Платформа нужна, чтобы запустить процесс майнинга на своём CPU для процессоров марки AMD, который без неё часто не будет работать на процессорах этой фирмы.

Раньше эта платформа была известна под названием ATI Stream SDK, однако со временем в неё добавили абсолютно новый язык программирования и в новом варианте, Brook+ заменили на гораздо более продвинутый язык OpenCL, позволяющий находить лучшие решения в связке с GPGPU. Стоит отметить, что OpenCL – прямой конкурент NVIDIA, Оба производителя являюется конкурентами между собой и соперниками AMD на рынке, производя графические чипы. Однако, на этот раз конкуренты объединили усилия.

Не стоит углубляться в отличия технологий, но необходимо рассмотреть явные плюсы от использования AMD APP SDK. Так, особо подчеркнуть следует встроенный компонент CMake, представляющий мультиплатформенный автоматизированный сборщик проектов. Он формирует Makefil, используемый потом другими сборщиками.

Решение это достаточно узкоспециализированное, рассчитывалось на тех, кто работает в области портирования или оптимизации компьютерных игр, но так уж получилось, что для майнинга эта платформа также весьма интересна. Она подойдёт тем, кто добывает крипту через свои графические адаптеры Radeon. Совершенно не каждую программу — майнер можно заставить адекватно работать на компьютере без запуска этой программки. Конечно, за добычу отвечают только несколько фрагментов пакета, но по отдельности их нигде ненайти, поэтому, придётся ставить полную версию, стоит также изучить её дополнительные возможности, могут пригодиться. Кроме того, вместо неё можно поставить драйвера AMD Catalyst экспериментальных версий, но они идут не на каждой операционной системе, так, XP они не поддерживаются, как и в некоторых других операционках.


ATI Stream SDK было переименовано в AMD Accelerated Parallel Processing (APP) SDK, на смену основного языка программирования GPGPU вычислений Brook+ пришел OpenCL. Однако, не многие догадываются, что писать код для ATI-шных карточек можно при помощи другой технологии: AMD Compute Abstraction Layer (CAL) / Intermediate Language (IL). Технология CAL предназначена для написания кода, взаимодействующего с GPU и выполняющегося на CPU, в то время как технология IL позволяет писать код, который будет выполняться непосредственно на GPU.

Введение

2x при использовании связки CAL/IL

* означает, что язык хоть и похож на ассемблер, он все же оптимизируется компилятором и преобразовывается в разный код для разных GPU

За счет чего же можно получить такой выигрыш в производительности?

Особенности архитектуры AMD GPU

Таким образом, за одну (почти за одну) операцию AMD GPU может изменить вплоть до 4-х n-битных регистров, а Nvidia GPU — только один n-битный регистр (имеется в виду в пределах одного GPU-потока). Но ведь OpenCL также позволяет объявлять многокомпонентные вектора и работать с ними! Тогда в чем отличие и зачем вообще нужен этот IL ?

Отличие от OpenCL

А все отличия заключаются банально в том, что разработчикам AMD APP SDK было либо сложно, либо технически невозможно создать компилятор, переводящий код, написанный по спецификации OpenCL, в код, написанный на AMD IL . Отсюда и возникли ограничения по поддержке стандарта OpenCL:

  • OpenCL 1.0 поддерживается начиная примерно с Radeon HD 4000 Series (Beta Level Support) (возможно, отсутствует поддержка image object, т.е. текстурной памяти)
  • OpenCL 1.1 поддерживается начиная примерно с Radeon HD 5000 Series
  • OpenCL 1.2 поддерживается начиная примерно с Radeon HD 7000, но при этом еще даже не вышло SDK, поддерживающее эту версию стандарта

При этом стоит отметить, что AMD IL позволяет использовать для GPGPU-вычислений некоторые карточки из Radeon HD 3000 Series и даже из Radeon HD 2000 Series! (если быть совсем точным, то это GPU на чипах R600, RV610, RV630 и RV670)
Далее для краткости будем обозначать все GPU, начиная с Radeon HD 5000 Series, как Evergreen GPUs (это чип Radeon HD 5700), потому что только для этих карточек поддерживаются некоторые интересные операции.

Прежде чем перейти к объяснению принципов написания кода на AMD IL , я бы хотел заострить ваше внимание на

Особенности работы с памятью

Как я уже упоминал, AMD GPU работает с 4-х компонентыми векторами n-битных регистров, где n=32 (о том, как работать с 64-битными регистрами, далее). Это накладывает основное ограничение на память: выделять память можно только объемом, кратным 16 байтам. При этом нужно помнить, что при загрузке дынных из памяти минимальным объемом передачи являются опять же эти 16 байт. То есть совершенно неважно, укажите вы, что ваша память состоит из 4-х компонентых векторов по 1 байту (char4), что из 4-х компонентых векторов по 4 байта (int4), результат будет один — из памяти за одну операцию обмена загрузятся 16 байт.

Далее, в отличие от Nvidia GPU, AMD GPU выделяет локальную память в глобальной области (а это означает очень медленную скорость обмена данных), так что забудьте про локальную память. Используйте регистры и глобальную память.

И на последок: опять же в отличие от Nvidia GPU, есть только одна глобальная память, работающая на чтение-запись (далее это будет «g[]»), и много различных источников текстурной памяти (далее это будет «i0», «i1» и т.д.) и константной памяти (далее это будет «cb0», «cb1» и т.д.), работающих только на чтение.
Особенностью константной памяти является наличие кеширования при доступе всеми GPU-потоками к одной области данных (работает также быстро, как и регистры).
Особенностью текстурной памяти является кеширование чтения (от 8 КБ, если мне не изменяет память, в расчете на один потоковый процессор) и возможность обращения к памяти по вещественным координатам. При выходе за границы текстуры можно либо считывать граничный элемент, либо закольцовываться и считывать сначала (координата берется по модулю ширины/длины текстуры).

А теперь приступим к самому интересному:

Структура кода для AMD IL

Работа с регистрами

Сперва небольшое пояснение, как происходит обмен между регистрами в операциях.
Выходной регистр на месте компоненты вектора может содержать либо имя компоненты, либо знак "_", что означает, что данная компонента не будет изменена.
Каждый входной регистр на месте каждой компоненты может содержать любое имя из четырех компонент, либо «0», либо «1». Это означает, что в операции над соответствующей компонентой выходного регистра участвует либо компонента входного регистра, либо константа. Поясню сказанное на примере:

Шейдеры

Код для AMD GPU оформляется в виде шейдеров. Есть возможность запускать как компьютерный шейдер (Compute Shader, CS), так и пиксельный шейдер (Pixel Shader, PS). Однако CS поддерживается, начиная только с Radeon HD 4000 Series. При этом скорость их работы почти одинаковая.

Известно, что количество одновременно запускаемых потоков на GPU определяется параметрами запуска: количество блоков, количество потоков на блок. Каждый мультипроцессор (от 8 штук) GPU берет на исполнение один блок. Затем делит запрошенное количество потоков на блок на куски (warp, кратно 32) и отдает каждому своему поточному процессору на исполнение один warp. Таким образом, реальное количество одновременно работающих потоков равно:

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

Для того чтобы не рассматривать сферического коня в вакууме, рассмотрим простую задачу: каждый поток вычисляет свой локальный идентификатор в пределах блока (32 бита), глобальный идентификатор (32 бита), считывает константы (64 бита) из памяти команд и из памяти данных, считывает элемент из текстуры (128 бит). Все это он записывает в выходную память, каждому потоку для этого потребуется 256 бит.
Примечание: каждая строка текстуры содержит данные для потоков одного блока.

Pixel Shader

Compute Shader

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

Различия шейдеров

Кроме поддержки на разных карточках, основное отличие шейдеров заключается в месте хранения количества запускаемых потоков на блок. Для PS это значение можно хранить в памяти, для CS это значение нужно пробивать в коде. Кроме того, для CS проще вычислять идентификаторы потока.

Читайте также:  Проблема с копированием текста

Рекомендуем к прочтению

Добавить комментарий

Ваш адрес email не будет опубликован.