Глава 1 Архитектура OpenCL и Ускоренная параллельная обработка AMD

AMD Accelerated Parallel Processing OpenCLProgramming Guide

June 2013

Rev2.5

© 2013 Advanced Micro Devices, Inc. Все права защищены AMD, the AMD Arrow logo, AMD Accelerated Parallel Processing, the AMD Accelerated Parallel Processing logo, ATI, the ATI logo, Radeon, FireStream, FirePro, Catalyst, и любые их комбинации являются товарными знаками Корпорации AMD, Ink. Microsoft, Visual Studio, Windows и Windows Vista являются зарегистрированными товарными знаками Корпорации Microsoft в США и / или других юрисдикциях. Другие названия носят исключительно информационный характер и могут являться товарными знаками соответствующих владельцев. OpenCL и логотип OpenCL являются торговыми марками Apple Inc. используется с разрешения Khronos.

 

Содержание этого документа предоставляется в связи с Advanced Micro Devices, Inc. (“продукты AMD”). Компания AMD не делает никаких заверений или гарантий относительно точности или полноты содержания этой публикации и оставляет за собой право вносить изменения в спецификации и описания продукции в любое время без предварительного уведомления. Информация, содержащаяся в настоящем документе, может носить предварительный или предварительный характер и может быть изменена без предварительного уведомления. Настоящая публикация не предоставляет никаких лицензий, явных, подразумеваемых, возникающих в связи с эстоппелем или иным образом, на любые права интеллектуальной собственности. За исключением случаев, изложенных в стандартных условиях продажи AMD, AMD не несет никакой ответственности и отказывается от каких-либо явных или подразумеваемых гарантий, касающихся ее продуктов, включая, но не ограничиваясь, подразумеваемую гарантию товарной пригодности, пригодности для конкретной цели или нарушения любого права интеллектуальной собственности.

 

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

 

Advanced Micro Devices, Inc.

One AMD Place

P.O. Box 3453

Sunnyvale, CA 94088-3453

Www.amd.com

For AMD Accelerated Parallel Processing:

URL: developer.amd.com/appsdk

Developing: developer.amd.com/

Forum: developer.amd.com/openclforum

Введение:

Об этом документе:

Этот документ предоставляет базовое описание среды и компонентов ускоренной параллельной обработки AMD. Он описывает базовую архитектуру потоковых процессоров и предоставляет полезные советы по производительности. Этот документ также предоставляет руководство для программистов, которые хотят использовать ускоренную параллельную обработку AMD для ускорения своих приложений.

 

Аудитория:
Этот документ предназначен для программистов. Это предполагает предыдущий опыт в написании кода для ЦП и базовое понимание потоков (рабочих элементов). В то время как основное понимание архитектур GPU полезно, этот документ не принимает предыдущие графические знания. Это далее предполагает понимание глав 1, 2 и 3 спецификации OpenCL (для последней версии см. http://www.khronos.org/registry/cl/ ).

 

Организация
Это AMD Accelerated Parallel Processing документов начинается в главе 1, Обзор: Видеокарта AMD Accelerated Parallel Processing обработки моделей программирования, технологии OpenCL, Видеокарта AMD вычислительных абстракций (CAL), AMD APP Kernel Analyzer, и the AMD APP Profiler. В главе 2 рассматривается компиляция и запуск программ OpenCL. В главе 3 описывается использование отладчика GNU (gdb) для отладки программ OpenCL. В главе 4 обсуждаются общие вопросы производительности и оптимизации при программировании для устройств ускоренной параллельной обработки AMD. Глава 5 детализирует представление и оптимизирование рассмотрение специфически для приборов Южного острова. В главе 6 подробно описывается производительность и оптимизация устройств для устройств вечнозеленых и северных островов. В приложении A описаны поддерживаемые дополнительные расширения OpenCL. Приложение B детализирует устанавливаемый клиентский драйвер (ICD) для OpenCL. Приложение C детализирует вычислительное ядро и сопоставляет его с пиксельным шейдером. В приложении D приведены параметры устройства. Приложение e описывает двоичный Формат образа OpenCL (BIF). Приложение F описывает API декодирования OpenVideo. В приложении G описывается взаимодействие между OpenCL и OpenGL. Последний раздел этой книги-глоссарий сокращений и терминов, а также указатель.

 

Конвенции
В этом документе используются следующие соглашения.

1. mono-spaced font - имя файла, пути к файлу, или код.

2. * - Любое количество буквенно-цифровых символов в имени формата кода, параметра или инструкции.

3. [1,2) - Диапазон, который включает самое левое значение (в данном случае 1), но исключает самое правое значение (в данном случае 2).

4. [1,2] - Диапазон, включающий как самые левые, так и самые правые значения (в данном случае 1 и 2).

5. {x | y} - Один из перечисленных вариантов. В этом случае x или y.

6. 0.0f - Одинарная точность (32 бита) с плавающей запятой.

0.0 - Двойная точность (64-бит) с плавающей запятой.

7. 1011b - Двоичное значение, в данном примере 4-битное значение.

8. 7:4 - Диапазон битов, от бит 7 до 4 включительно. Бит высокого порядка показан первым.

9. italicized word or phrase - Первое использование термина или понятия, базового для понимания потоковых вычислений

 

Связанные документы:

 The OpenCL Specification, Version 1.1, Published by Khronos OpenCL Working Group, Aaftab Munshi (ed.), 2010.

  AMD, R600 Technology, R600 Instruction Set Architecture, Sunnyvale, CA, est. pub. date 2007. This document includes the RV670 GPU instruction details.

 ISO/IEC 9899:TC2 - International Standard - Programming Languages - C

 Kernighan Brian W., and Ritchie, Dennis M., The C Programming Language, Prentice-Hall, Inc., Upper Saddle River, NJ, 1978.

 I. Buck, T. Foley, D. Horn, J. Sugerman, K. Fatahalian, M. Houston, and P. Hanrahan, “Brook for GPUs: stream computing on graphics hardware,” ACM Trans. Graph., vol. 23, no. 3, pp. 777–786, 2004.

 AMD Compute Abstraction Layer (CAL) Intermediate Language (IL) Reference Manual. Published by AMD.

 Buck, Ian; Foley, Tim; Horn, Daniel; Sugerman, Jeremy; Hanrahan, Pat; Houston, Mike; Fatahalian, Kayvon. “BrookGPU” http://graphics.stanford.edu/projects/brookgpu/

 Buck, Ian. “Brook Spec v0.2”. October 31, 2003. http://merrimac.stanford.edu/brook/brookspec-05-20-03.pdf

 OpenGL Programming Guide, at http://www.glprogramming.com/red/

 Microsoft DirectX Reference Website, at http://msdn.microsoft.com/enus/directx

 GPGPU: http://www.gpgpu.org, and Stanford BrookGPU discussion forum http://www.gpgpu.org/forums/

 

 

Контактная информация:

URL: developer.amd.com/appsdk

Developing: developer.amd.com/

Forum: developer.amd.com/openclforum

 

ИСТОРИЯ ИЗМЕНЕНИЙ

Изменение — Описание

1.) 1.3 e - Удаленная ссылка шифрования.

2.) 1.3f - Добавлено основных направлений в CL-GL взаимодействия приложение. Исправлен код в двух выборках в Chpt. 4.

3.) 1.3g - Многочисленные изменения приложения Cl-GL Interop. Добавлены подразделы для дополнительного руководства по производительности программистов, использующих OpenCL для программирования процессоров и использования специальных инструкций процессора в подразделе Оптимизация Kernel кода ядра.

4.) 2.0 - Добавлен раздел заголовка ELF в приложении E.

5.) 2.1 - Новый Профайлер и KernelAnalyzer разделах главы 4. Новый раздел AMD gDEBugger в главе 3. Добавлены расширения для приложения A. многочисленные обновления для южных островов, особенно в главах 1 и 5. Разбейте оригинальную главу 4 на три главы. Теперь, Глава 4-общие соображения для вечнозеленых, северных островов и южных островов; Глава 5-специально для устройств южных островов; Глава 6-для устройств вечнозеленых и северных островов. Обновление параметров устройств в приложении D.

PS от переводчика — острова это скорее всего генотипы людей(веганы, люди из южных и северных стран)

6.) 2.1a - Восстановлены некоторые дополнительные параметры компилятора в разделе 2.1.4. Изменения / дополнения к таблице 4.3

7.) 2.1b - Незначительные изменения в разделе 1.8.3, указывающие на то, что модель LDS не изменилась по сравнению с предыдущими семействами GPU

8.) 2.4 - Добавление картографической информации канала (chpt 5). Незначительные исправления. Удаление дубликатов материал из Глава 6. Включение обновленного индекса. Незначительные изменения и исправления. Исправления в формулировках. Исправления к рисунку 1.8 для SI. Добавление расширений AMD. Таблица свойств объекта памяти для виртуальной машины включена/отключена. Добавлена Таблица для сравнения процессора/GPU в АМД Trinity APU.

PS1/ - SI – СИ
PS2/ - Вот и Тринити из матрицы появилась, надо бы пересмотреть фильмы Матрица. Выпал из-за этого на 2 часа наверно.

PS3/ - буду липить физический антивирус-лечилко-омоложение организма при AMD

9.) 2.4a - Незначительные нетехнические исправления.

10.) 2.5 - Многочисленные индивидуальные исправления повсюду. Обновление значений производительности до значений, соответствующих серии Radeon HD 7XXX. Изменения в таблице 4.2, Рисунок 5.1, Таблица 6.8. Добавление перечислений на стр. E-3. Добавление описания порядка создания контекста OCL в приложении G.

 

 

Оглавление

Введение

Глава 1 Архитектура OpenCL и Ускоренная параллельная обработка AMD

1.1 Software Overview – 1-1

1.1.1     Synchronization – 1-1

1.2 Hardware Overview for Southern Islands Devices = 1-2

1.3 Hardware Overview for Evergreen and Nothern Islands Devices = 1-4

1.4 The AMD Accelerated Parallel Processing Implementation of OpenCL = 1-6

1.4.1 Work-Item Processing = 1-9

1.4.2 Flow Control = 1-10

1.4.3 Work-Item Creation = 1-11

1.5 Memory Architecture and Access = 1-11

1.5.1 Memory Access = 1-13

1.5.2 Global Buffer = 1-13

1.5.3 Image Read/Write = 1-13

1.5.4 Memory Load/Store = 1-14

1.6 Communication Between Host and GPU in a Compute Device = 1-14

1.6.1 PCI Express Bus = 1-14

1.6.2 Processing API Calls: The Command Processor = 1-14

1.6.3 DMA Transfers = 1-15

1.6.4 Masking Visible Devices = 1-15

1.7 GPU Compute Device Scheduling = 1-15

1.8 Terminology = 1.7

1.8.1 Compute Kernel = 1.17

1.8.2 Wavefronts and Work-groups = 1-18

1.8.3 Local Data Store (LDS) = 1-18

1.9 Programming Model = 1-18

1.10 Example Prrograms = 1-20

1.10.1 First Example: Simple Buffer Write = 1-20

1.10.2 Example: Parallel Min() Function = 1-23

 

 

Далее оглавление буду постепенно заполнять, муторно всё это.

 

Глава 1 Архитектура OpenCL и Ускоренная параллельная обработка AMD

В этой главе представлен общий обзор программного и аппаратного обеспечения реализации ускоренной параллельной обработки AMD стандарта OpenCL. Это объясняет структуру памяти и дает простые примеры программирования.

 

1.1 Обзор Программного Обеспечения

 

Модель программирования OpenCL состоит из создания сложных графиков задач из узлов параллельного выполнения данных.
В данном параллельном выполнении данных, известном как запуск ядра, вычисление определяется в терминах последовательности инструкций, которые выполняются в
каждой точке в N-мерном пространстве индексов. Общая, несмотря на требования, формулировка алгоритма, в котором каждый вычислительный индекс сопоставляется
 с элементом в наборе входных данных.

Модель OpenCL для параллельного программирования данных является иерархической. Иерархическую структуру разбиения можно указать двумя способами:

А.) Явным образом - Разработчик определяет общее количество рабочих элементов для выполнения параллельного программирования, а также разделение рабочих элементов на конкретные рабочие группы.

Б.) Неявно - Разработчик указывает общее число рабочих элементов для выполнения
параллельного программирования, и OpenCL управляет разделением на рабочие группы.

 

API для технологии OpenCL также поддерживает концепцию задач диспетчеризации. Это эквивалентно выполнением ядра на компьютерном устройстве с рабочей группой и NDRange,
содержим отдельный рабочий элемент. Параллелизм выражается с помощью типов векторных данных, реализованных устройством, постановкой в очередь нескольких задач и / или постановка в очередь собственных ядер, разработанных с использованием модели программирования, ортогональной OpenCL.

 

1.1.1 Синхронизация

 

 Два домена синхронизации в OpenCL - это рабочие элементы в одной рабочей группе и очереди команд в одном контексте. Помехи рабочей группы обуславливают синхронизацию рабочих элементов в пределах одной рабочей группы. Шумы-помехи рабочей группы позволяют синхронизировать рабочих элементов внутри рабочей группы. Каждому рабочему элементу в рабочей группе обходимо сначала преодолеть сигнал сильнее шума-помехи внутри рабочей группы чтобы выполнить команду, сигнализирующую за пределами этого шума-помехи. Либо все либо ни один рабочий элемент в рабочей группе преодолевает шум-помеху от рабочей группы. Команда преодоления шума-помехи от рабочей группы или mem_fence — не имеет глобальной области действия, но относится только к рабочей локальной группе, в которой работают рабочие элементы.

 

Существует два типа синхронизации между командами в commandqueue:
1. Команда очереди помех синхронизации — принуждает действовать внутри одиночной очереди. Любые результирующие обращения к памяти доступны для выполнения только после завершения текущих команд.

2. События — осуществляет синхронизацию между или внутри команд обращения к памяти. Команды очереди в OpenCL возвращают выполнение к той команде, когда она обновляется памятью. Это гарантирует, что следующие команды ждут этого события до тех пор, пока обновляются объекты памяти, следующие после события.

 

 


Дата добавления: 2019-02-12; просмотров: 218; Мы поможем в написании вашей работы!

Поделиться с друзьями:




Мы поможем в написании ваших работ!