Платы fpga где opencl из коробки
Перейти к содержимому

Платы fpga где opencl из коробки

  • автор:

Русские Блоги

FPGA на базе OpenCL обучения примечание 1 — Hello World

Возьмите Окна в качестве примера

1. Во-первыхами, установка инструмента и FPGA можно скачать версию OpenCL Pro на официальный сайт. Visual Studio использует версию 2017 года. Версия сообщества также должна быть использована, но некоторые обходные пути имели место, чтобы думать, что вы должны иметь профессиональную версию.

2. Поскольку потребность ядра для компиляции под командной строкой, среда VC должна быть установлена ​​первым:

cdC:\Program Files (x86)\Microsoft VisualStudio\2017\Professional\VC\Auxiliary\Build

Если этот шаг не будет сделан, он может сообщать об ошибках компоновщика.

3. Compile KERNEL

Пример на Download hello_world онлайн

Переключение в рабочий каталог:

aoc -march=emulator -v -board=a10gxdevice\hello_world.cl -o bin\hello_world_emulation.aocx

Примечание: Вы можете постучать в КРО, чтобы увидеть значение этих параметров команды. Руководство по началу работы в официальном документе, является неправильным, и параметры позади -о должны быть расположены на расстоянии без использования знака равенства. Кроме того, структура каталогов отличается от этого.

4. Хост компиляции

Для выполнения хост-компиляции, VS необходимо сделать некоторые настройки, иначе вы не сможете найти файл CL:

VS: Вид -> Другое Window -> Диспетчер свойств,

В приложении к C ++ Содержит каталог: D: \ Program Files (x86) \ Intel \ OpenClsdk \ 6.3 \ Include

Эмулятор, компоновщик -> Общие дополнительные библиотеки включены: C: \ intelfpga_pro \ 17,1 \ HLD \ хост \ Windows64 \ LIB

LED -> Enter: Добавить OpenCl.lib

Нажмите на решение компиляции.

5. PC операции на стороне моделирования

Под файл бен в создании хоста, режим командной строки:

Примечание: A10GX этого название доски развития эталонной для моделирования хода.

Rename Hello_World_emulation.Aocx файлы в hello_world.aocx (это потому, что Хост hello_world) и размещается в том же каталоге Host.

Затем запустите хост

6. AOCX файл, запущенный на борту:

До тех пор, как вы скомпилировать ядро, удалить -march = эмулятор

Installing an fpga board, Installing an fpga board -5 – Altera RTE for OpenCL User Manual

background image

the Altera SDK for OpenCL Cyclone V SoC Getting Started Guide for more information.

1. Follow your board vendor’s instructions to connect the FPGA board to your system.

2. Download the Custom Platform for your FPGA board from your board vendor’s website.

For more information, refer to the OpenCL Reference Platforms page on the Altera website.

3. Install the Custom Platform in a folder that you own (that is, not a system folder).

4. Set the environment variable AOCL_BOARD_PACKAGE_ROOT to point to the location of the

Custom Platform subfolder containing the

board_env.xml

For example, for the Stratix

V Network Reference Platform (s5_net), set

AOCL_BOARD_PACKAGE_ROOT to point to the

5. Add the Custom Platform library paths to the PATH environment variable setting. You may apply

permanent settings manually by adding the path to the memory-mapped (MMD) library within the

Custom Platform. Alternatively, you may apply transient settings to the current session by running the

%ALTERAOCLSDKROOT%\init_opencl.bat

For example, if you use s5_net, the Windows PATH environment variable setting is

%AOCL_BOARD_PACKAGE_ROOT%\windows64\bin

For information on

init_opencl.bat

, refer to the Setting the Environment Variables for Windows section.

6. Invoke the command

at a command prompt.

also installs a board driver that allows communication between host

applications and hardware kernel programs.

7. To query a list of FPGA devices installed in your machine, invoke the

The software generates an output that includes the , which is an acl number that ranges

from acl0 to acl15.
For more information on querying the of your accelerator board, refer to the Querying

the Device Name of Your FPGA Board section.

Installing an FPGA Board

Getting Started with the Altera RTE for OpenCL for 64-Bit Windows

Altera Corporation

Русские Блоги

Анализ конструкции платформы OpenCL (1) -GPU и FPGA

Введение в OpenCL

OpenCL — это набор API с открытым исходным кодом и языков программирования для параллельных вычислений разнородных устройств, выпущенный некоммерческой организацией Khronos Group.

Он обеспечивает два режима распараллеливания, включая параллелизм задач и параллелизм данных.В настоящее время ссылка на GPU в основном основана на параллелизме данных. OpenCL API определяется в соответствии с C API и инкапсулируется в C и C ++. Код, написанный на языке OpenCL C, может работать на устройствах, которые поддерживают OpenCL. OpenCL C является подмножеством языка C99 и соответствующим образом расширен для возможности выполнения параллельного кода данных на многих разнородных устройствах.

Так называемые гетерогенные устройства относятся к устройствам с относительно разными базовыми аппаратными архитектурами, такими как CPU и GPU, FPGA (программируемая матрица шлюзов). Блок управления и кэш, отвечающие за предсказание ветвления и скачок в CPU, занимают большую площадь, и Доля АЛУ (Арифметическая логическая единица) намного меньше, чем доля площади АЛУ в графическом процессоре, иными словами, ЦП сильнее, чем контроль и слабее, чем вычисление, в то время как ГП сильнее, чем расчет, и слабее, чем контроль.

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

Развертывание FPGA в центрах глубокого обучения и обработки данных в последние годы привело к его постепенному появлению. Его внутренняя структура не закрепляет структуру схемы в микросхеме, такой как CPU и GPU, но состоит из базовых устройств, таких как LUT (таблица соответствия) и регистров, а затем подключается к IO через внутренние плотные линии межсоединения. При использовании двоичный файл (поток битов) передается на устройство через интерфейс USB, а его внутренний базовый набор устройств устанавливается на определенную структуру схемы для приложения. Проще говоря, это эквивалентно наличию большого количества переключателей внутри ПЛИС, а затем мы вводим постоянный ток, чтобы поднять задействованные переключатели на высокое значение и временно фиксируем положение, и как только переключатели все установлены, схема может Выполнять определенные функции.

Теперь два основных производителя FPGA — Intel (по сути, Altera, приобретенная Intel) и Xilinx, оба предоставляют программные пакеты, разработанные для стандарта OpenCL, с целью избежать использования языка описания аппаратных средств (verilog) в традиционной разработке FPGA. Или VHDL) недостатки длинного цикла и сложного процесса разработки, использующего языки высокого уровня (такие как язык C) для разработки приложений FPGA, снижая порог для использования разработки FPGA.
По сути, текущие основные гетерогенные вычислительные архитектуры — это все ведущие-ведомые архитектуры, хост — это обычно ЦП, а ведомое устройство — это ГП или ПЛИС, и они взаимодействуют через интерфейс PCIe.

Установка среды разработки

Платформа OpenCL и устройства OpenCL
Платформа opencl обычно соответствует поставщику. Он отвечает за обеспечение реализации opencl для своих устройств. Например, компьютер с процессором Intel i7-4790 будет иметь платформу opencl, примерно называемую Intel opencl. Платформа будет включать два устройства opencl: одно — это сам процессор Intel, а другое — графический процессор Intel HD Graphics 4600. Платформа Intel opencl обеспечивает реализацию opencl для этих двух устройств и отвечает за управление ими.
Давайте рассмотрим другой пример, но на этот раз из-за пределов экосистемы Windows. MacBook и Intel iris Pro GPU с операционной системой OS X и выделенной GeForce-картой покажут платформу Opencl под названием «Apple». И gpus, и cpu будут отображаться как устройства, принадлежащие этой платформе. Это связано с тем, что платформа Apple является платформой, обеспечивающей реализацию opencl для всех трех устройств.

Но помните:
1. Платформа opencl может иметь одно или несколько устройств.
2. Одно и то же устройство может иметь одну или несколько реализаций opencl от разных поставщиков. Другими словами, устройства opencl могут принадлежать не только одной платформе.
3. Версия платформы opencl не обязательно совпадает с версией устройства opencl.

ICD и ICD загрузчик
1. icd (устанавливаемый драйвер клиента), это специальная реализация opencl для конкретного устройства, то есть среды выполнения opencl. Его можно найти в файлах, таких как amdocl.so/dll или intelopencl.so/dll. Это относится к модели, которая позволяет сосуществовать множеству платформ opencl. Это не основная функция, а расширение opencl.

2. Загрузчик icd (в opencl.dll / libopencl.so): Загрузчик устанавливаемого клиентского драйвера (ICD) OpenCL — это промежуточная библиотека, которая реализует изоляцию между приложениями OpenCL и драйвером (платформой) OpenCL, предоставляемыми различными производителями оборудования. Он используется для управления несколькими icds в одной системе

  • Он связан с приложением opencl и служит заполнителем для icd.
  • Приложение вызывает функцию, экспортируемую библиотекой загрузчика icd. Однако загрузчик icd решает, на какой icd перенаправить, основываясь на выбранной платформе opencl.
  • Механизм загрузки icd необходим, потому что реализация opencl поставщика обычно поддерживает только оборудование этого поставщика, но вы можете использовать несколько устройств разных производителей в одном приложении opencl.

icd — это необязательное расширение opencl, идентификатор — cl_khr_icd. При установке SDK определенного производителя соответствующая запись реестра будет добавлена ​​в реестр операционной системы. Загрузчик opencl icd позволяет приложениям вызывать функцию clIcdGetPlatformIDsKHR, чтобы получить список всех установленных платформ, выбрать платформу из них и отправить вызовы opencl api в базовую реализацию. Исходный код библиотеки загрузчика icd приведен в реестре khronos.https://github.com/KhronosGroup/OpenCL-ICD-Loader。

Обратите внимание, что машина может иметь несколькоПлатформа opencl, каждая платформа имеет свой собственный драйвер и версию opencl, всегда есть только один загрузчик icd. Загрузчик icd выступает в роли супервизора всех установленных платформ opencl и предоставляет уникальную точку входа для всех вызовов opencl. Основываясь на идентификаторе платформы, он назначает вызовы хоста opencl правильному драйверу.

Таким образом, вы можете скомпилировать icd (opencl.dll в Windows или libopencl.so в Linux) вместо прямой компиляции всех возможных драйверов. Во время выполнения приложение opencl будет искать icd и загружать его. В свою очередь, icd ищет зарегистрированный драйвер opencl в реестре (Windows) или специальном каталоге (linux). Каждый вызов opencl вашего программного обеспечения будет обрабатываться icd, который будет дополнительно отправлять запрос выбранной платформе opencl.

Как загрузчик ICD перечисляет поставщиков в Windows?
В Windows файл библиотеки, который производитель хочет закрыть, устанавливается в реестре. Загрузчик ICD будет сканировать раздел реестра HKEY_LOCAL_MACHINE\SOFTWARE\Khronos\OpenCL\Vendors Значение, когда каждое значение в DWORD равно 0, загрузчик ICD открывает библиотеку динамических ссылок, указанную именем, и использует значение LoadLibraryA. Например, если реестр [HKEY_LOCAL_MACHINE\SOFTWARE\Khronos\OpenCL\Vendors] Содержит следующие значения «c:\\vendor a\\vndra_ocl.dll»=dword:00000000 , Тогда откроется загрузчик ICD «c:\vendor a\vndra_ocl.dll» Библиотечный файл
Добавить поставщиков
После успешной загрузки библиотеки ICD поставщика загрузчик ICD запросит следующие функции из файла библиотеки clIcdGetPlatformIDsKHR, clGetPlatformInfo и clGetExtensionFunctionAddress. Если какая-либо из этих функций не существует, загрузчик ICD закроется. И игнорируйте библиотеку ICD этого производителя.
Затем загрузчик ICD запрашивает доступные платформы с поддержкой ICD. Этот процесс использует функцию clIcdGetPlatformIDsKHR в библиотеке. Для каждой платформы загрузчик ICD запрашивает расширенную строку платформы для проверки поддержки cl_khr_icd, а затем использует функцию clGetPlatformInfo для запроса расширенного суффикса поставщика платформы ICD. Функция использует параметр CL_PLATFORM_ICD_SUFFIX_KHR. Если какой-либо из этих шагов завершится неудачей, загрузчик ICD проигнорирует Поставщик ICD и переход к следующему.

Настройте среду разработки VS2012 OpenCL:

Платформа AMD GPU

Обратите внимание, что ниже для среды разработки OpenCL Win7 AMD APP SDK версии 2.9

1. Переменные среды
После установки AMD APP SDK 2.9 система автоматически добавит $(AMDAPPSDKROOT) Переменная среды, значением является путь, указанный при установке.
2. Добавьте файлы заголовков
Добавить в проект -> свойства -> свойства конфигурации -> C / C ++ -> дополнительный каталог include
$(AMDAPPSDKROOT)/include
(C: \ Users \ сервер \ AMD APP SDK \ 2.9-1 \ include и C: \ Users \ сервер \ AMD APP SDK \ 2.9-1 \ include \ SDKUtil могут быть добавлены или не добавлены)
3. Добавить каталог библиотеки
Добавить в проект -> свойства -> свойства конфигурации -> компоновщик -> каталог дополнительной библиотеки
$ (AMDAPPSDKROOT) \ lib \ x86 (конфигурация проекта win32) или: \ $ (AMDAPPSDKROOT) \ lib \ x86_64 (конфигурация проекта x64)
4. Добавьте входные данные библиотеки
При использовании платформы AMD SDK вам необходимо сконфигурировать файл OpenCL.lib, конкретный метод: проект -> свойства -> свойства конфигурации -> соединитель -> вход -> зависимая библиотека аксессуаров -> редактировать, добавить в OpenCL.lib
5. Код хоста
Добавьте в программный код хоста #include

Платформа Intel FPGA

Обратите внимание, что ниже для среды разработки OpenCL Win7 Quartus версии 14.0
Последовательность установки: ПО Intel FPGA Design -> Intel FPGA SDK для OpenCL-> Драйвер FPGA PCIe -> Visual Studio 2012 -> CodeXL

Адрес для загрузки программного обеспечения Intel FPGA Design и Intel FPGA SDK для OpenCL
Примечание. Для Intel FPGA SDK для OpenCL требуется лицензия, в противном случае файл проекта ядра OpenCL не может быть скомпилирован. Одновременно скопируйте BSP (пакет разработки на уровне платы) соответствующей платы разработки в каталог программного обеспечения Intel FPGA Design. BSP содержит файл описания board_env.xml платы FPGA, который указывает имя устройства, имя входной библиотеки компоновщика и каталог, в котором расположен соответствующий драйвер.

1. Переменные среды
После установки ПО Intel FPGA Design и пакета Intel FPGA SDK для OpenCL переменные среды будут добавлены автоматически. ALTERAOCLSDKROOT , Чьим значением является путь после установки соответствующей платформы. Кроме того, вам нужно добавить AOCL_BOARD_PACKAGE_ROOT Это переменная среды, ее значением является путь соответствующего BSP

2. Настройте конфигурацию решения
Поскольку Intel OpenCL поддерживает только 64-разрядные системы, нет различия между 32-разрядными и 64-разрядными. Project-> Properties-> Active Solution Platform-> New-> Type Или выберите новую платформу и выберите x64 в качестве текущей платформы решения.
3. Добавьте заголовочные файлы
Добавить в проект -> свойства -> свойства конфигурации -> C / C ++ -> дополнительный каталог include
$(ALTERAOCLSDKROOT)\host\include
4. Добавьте каталог библиотеки
Добавить в проект -> свойства -> свойства конфигурации -> компоновщик -> каталог дополнительной библиотеки
$(ALTERAOCLSDKROOT)\host\windows64\lib с участием $(AOCL_BOARD_PACKAGE_ROOT)\de5net\windows64\lib
5. Добавьте входные данные библиотеки
Проект-> Свойства-> Свойства конфигурации-> Соединитель-> Ввод-> Библиотека зависимостей аксессуаров-> Изменить, добавить

alterahalmmd.lib terasic_apb_14_0_mmd.lib alteracl.lib acl_emulator_kernel_rt.lib pkg_editor.lib libelf.lib acl_hostxml.lib

На этом этапе платформа разработки программного обеспечения для OpenCL установлена ​​~

Русские Блоги

Анализ бумаги PipeCNN: использование OpenCL для ускорения больших сверточных сетей на FPGA

Эта статья представляет собой углубленный анализ тезиса PipeCNN, и источник воспроизводится.

Ссылки:

Адрес диссертации: https://arxiv.org/abs/1611.02450

Кодовый адрес: https://github.com/doonny/PipeCNN

оглавление

1. Аннотация:

1.1 motivation:

  • FPGA более настраиваемый и потребляет меньше энергии, чем GPU
  • В прошлом исследования на базе OpenCL не использовали преимущества параллельной обработки FPGA и сводили к минимуму пропускную способность памяти.

1.2 Взносы:

  • На основе OpenCL добавлены глубокая распараллеливание (глубоко конвейерная), повторное использование данных (повторное использование задач) и распараллеливание задач (отображение задач)
  • Проверка AlexNet и VGG на FPGA Altera Stratix-V A7 достигла скорости расчета 33,9 GOP, а блок DSP уменьшен на 34% по сравнению с предыдущей работой

1.3 Связанные знания

1.3.1 OpenCL

OpenCL(Полное название Open Computing Language, Open Computing Language) — это первый открытый бесплатный стандарт для параллельного программирования общего назначения для гетерогенных систем, а также унифицированная среда программирования, которая помогает разработчикам программного обеспечения для высокопроизводительных вычислительных серверов, настольных вычислительных систем, Портативные устройства пишут эффективный и легкий код и широко применяются для многоядерных процессоров (CPU), графических процессоров (GPU), архитектуры типа Cell иЦифровой сигнальный процессор(DSP) и другие параллельные процессоры.

1.3.2 GOPS

(Гига операций в секунду (миллиард операций в секунду (от 10 до 9-й мощности), миллиард операций в секунду)) Блок индикатора, который измеряет вычислительную мощность процессора. Сейчас чаще используетсяFLOPS。

2. Введение

2.1 Фон

  • Сверточные сети (CNN) широко используются, но большие сверточные сети будут иметь миллионы нейронов и миллиарды весов соединений.
  • Процессор не может эффективно рассчитать CNN, графический процессор широко используется, но энергосберегающий.
  • FPGA имеет 1. большое количество процессорных блоков, 2. настраиваемые модули, 3. низкое энергопотребление, поэтому она очень подходит для реализации нейронных сетей.
  • Традиционный процесс проектирования, основанный на RTL (уровень передачи регистров), требует написания большого количества сложного кода RTL, который занимает очень много времени и требует моделирования и сборки.
  • Инструмент HLS, синтез высокого уровня может перевести соответствующий язык высокого уровня, такой как c / c ++, в базовый язык RTL.

2.2 Предыдущая работа

2.2.1 C. Zhang, P. Li, G. Sun, Y. Guan, B. J. Xiao, and J. Cong, “Optimizing FPGA-based accelerator design for deep convolutional neural networks,”in Proc. ACM/SIGDA International Symposium on Field-Programmable Gate Arrays (FPGA ’15), 2015.

Используя Vivado HLS для достижения на Xilinx VC707, соответствующая вычислительная скорость потока (пропускная способность вычислений) и пропускная способность памяти (пропускная способность памяти) оптимизируются до максимума. Но оптимизируется только операция свертки.

2.2.2 N. Suda, V. Chandra, G. Dasika, A. Mohanty, Y. F. Ma, S. Vrudhula, J. S.Seo, and Y. Cao, “Throughput-Optimized OpenCL-based FPGA accelerator for large-scale convolutional neural networks,” in Proc. ACM/SIGDA
International Symposium on Field-Programmable Gate Arrays (FPGA’16), 2016.

Использование OpenCL и CNN с фиксированной точкой (CNN с фиксированной точкой) систематически предлагало, как использовать ограниченные ресурсы, чтобы минимизировать время выполнения.

2.3 Основные вклады

2.3.1. Внедрить соответствующее ускорение ПЛИС на основе OpenCL. Эффективная архитектура и параллельное конвейерное (конвейерное ядро) для создания больших сетей CNN

2.3.2 Проверьте AlexNet и VGG на ПЛИС Altera Stratix-V A7

2.3.3 Автор опубликовал код этой статьи на github для других пользователей. (Автор добавляет несколько слов)

3. Внедрение CNN на основе OpenCL

3.1 Архитектура OpenCL

OpenCL — это открытый кроссплатформенный язык параллельных вычислений, который можно использовать для графических процессоров и FPGA. Процесс проектирования показан на рис.1

  • На рисунке плата FPGA используется в качестве устройства OpenCL, а центральный процессор настольного компьютера — в качестве хоста OpenCL, а гетерогенная вычислительная система устанавливается через высокоскоростной PCIe.
  • Код OpenCL определяет параллельные вычислительные блоки (CU: вычислительные блоки) с функциями ядра, которые компилируются и синтезируются и используются на плате FPGA.
  • На хосте код c / c ++ будет выполняться на процессоре, предоставлять реализованный API для платы FPGA и обмениваться данными с соответствующими ядрами. (Ядра являются основными функциями OpenCL. В xilinx высокоуровневый семантический синтез HLS интегрирует соответствующие функции в IPcore, и мы можем понимать ядра как IPcore)

3.2 Архитектура, предложенная в этой статье

3.2.1 Типичная CNN состоит из несколькихСверточный слой, объединяющий слой, полностью связанный слойсочинение.

  • типичныйСверточный слойЭто может быть выражено как:

из ихПредставляет нейрон в точке (x, y) во входной карте объектов и в выходной карте объектов.представительLВес свертки в слое с соответствующей входной картой объектов

  • Пул слойВ, нейрон в карте объектов будет понижен в 2D.
  • Полностью связанный слойВ каждом выходе есть взвешенная сумма всех входов.
  • LRN(Нормализация локального отклика) Уровень нормализации локального отклика, некоторые модели CNN имеют LRN. Нейрон будет нормализован в соответствии со значениями соседних нейронов, за LRN обычно следует объединяющий слой.

На рис. 2 четыре модуля подключены с использованием канала / пипса Altera OpenCL.

На картинкеConv kernelМожет быть достигнуто как трехмерное суммирование формулы (1), так и операция с внутренним произведением формулы (2).

Pooling kernelНепосредственно уменьшите поток выходных данных.

Два ядра обработки данных,MemRD и MemWRВ и из данных в глобальной памяти.

3.3 Convolution Kernel

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

3.3.1. Мы изменяем формулу (1) на структуру, аналогичную формуле (2), и затем используем функцию только для реализации двухуровневой структуры вложенного цикла. Для псевдокода, см. Рис. 3 выше, когда установлена ​​подходящая глубина буфера N, эффективный конвейер с начальным интервалом в два может быть синтезирован компилятором OpenCL Altera.

Примечание: начальный интервал часто появляется выше, также известный как II, что означает II? Мы видели подобное в HLS, например:

//Load input image data for (i = 0; i < 27 * 600; i++) < #pragma HLS PIPELINE II=1 buf_in[i] = streamPop < float, FloatAxis, FloatStream >(streamIn); >

Если один для цикла II равен 1, а два для цикла II равен 2, вам необходимо добавить значение II после ознакомления с документацией позже.

3.3.2 Векторизация данных и распараллеливание CU (вычислительные единицы)

  • Векторизованный ввод и весаБудет интегрирован в поток данных.
  • Параметр VEC_SIZE будет введен для управления соответствующей входной пропускной способностью.
  • Внешний цикл for будет расширен в соответствии с параметром CU_NUM для создания конвейера свертки.

Итак, вывод в другую Feature-картуfoсреднийDoБудет генерироваться параллельно.

В режиме трехмерной свертки CN устанавливается на K * K * C ‘, а в режиме FC CN устанавливается на C’, C ‘= C / VEC_SIZE. Когда доступ к каналу не генерирует конвейер, ускорение VEC_SIZE * CU_NUM

3.4 Data mover Kernels

Два многорежимных ядра 3D NDRange предназначены для доступа к данным для вычислительных конвейеров в глобальной памяти. (Multi-mode и 3D NDRange являются концепциями в OpenCL)

3.4.1 В режиме Conv

3.4.2 В режиме FC

Функция ввода и вес 1D, см. Формулу (2), прямое использование MemRD уменьшит повторное использование данных. Итак, мы ввели пакетную обработку в MemRD. Например, пакет из 64 категорий может использоваться в качестве ядра в качестве 3D-карты объектов (C, 8, 8)

3.5 Pooling kernel

Фиг.5 — аппаратная архитектура на основе линейного буфера. Ядро сначала читает строку за строкой из той же функции, а затем сохраняет ее в группе L-линейных буферов. Когда все буферы заполнены, данные карты объектов окна считываются и отправляются на следующий этап логики пула. В CNN широко используются максимальный и средний пулы, поэтому логическая модель пула может поддерживать вычисление среднего и максимального значений (L + 1) входов. Ядро может быть закрыто контрольным регистром.

3.6 LRN kernel

4. Эксперимент

  • Эта статья экспериментировала на плате DE5 от Altera Stratix-V FPGA. FPGA Stratix-V A7 имеет 622K логических блоков (LE), 256DSP-блоков и 2560 M20K RAM, и есть две DDR3 DRAM на 2 ГБ, подключенные к FPGA в качестве глобальной памяти.
  • Коды ядра OpenCL были скомпилированы с помощью Altera OpenCL SDK v15.1.
  • Для проектирования использовались две большие сети, AlexNet (8 уровней) и VGG (16 уровней).

V. Личное резюме

ПЛИС для достижения ускорения крупных нейронных сетей:

  • OpenCL Framework
  • HLS высокоуровневый семантический синтез
  • Архитектура, предложенная в этой статье, максимизирует повторное использование данных
  • Попробуйте увеличить повторное использование ресурса

Более подробный анализ будет продолжать обновляться, приветствуются вопросы и критика.

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

Ваш адрес email не будет опубликован. Обязательные поля помечены *