Используйте выход компилятора для системного интегрирования

The compile метод:

  • Генерирует карту внешнего адреса памяти.

  • Оптимизирует сети для развертывания.

  • Разделяет сети на ножки для развертывания.

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

Карта адресов внешней памяти

Когда вы создаете dlhdl.Workflow объект и использовать compile способ, формируют карту внешнего адреса памяти. The compile метод генерирует эти смещения адреса на основе нейронной сети для глубокого обучения и целевой платы: Используйте карту адреса для:

  • Загрузите входы сети.

  • Загрузите инструкции IP-ядра процессора глубокого обучения.

  • Загрузка весов и смещений сети.

  • Получение результатов выхода.

The compile метод генерирует эти смещения адреса:

  • InputDataOffset - Смещение адреса, где загружаются входные изображения.

  • OutputResultOffset - Выходные результаты записываются начиная с этого смещения адреса.

  • SchedulerDataOffset - Смещение адреса, где записываются данные активации во время выполнения планировщика. Данные активации во время выполнения включают информацию, такую как передача обслуживания между различными ядрами процессора глубокого обучения, инструкции для различных ядер процессора глубокого обучения и так далее.

  • SystemBufferOffset - Не используйте адрес памяти, начиная с этого смещения и заканчивая в начале InstructionDataOffset.

  • InstructionDataOffset - Все инструкции по строению слоя (LC) записываются начиная с этого смещения адреса.

  • ConvWeightDataOffset - Все веса модулей конв-обработки записываются начиная с этого смещения адреса.

  • FCWeightDataOffset - Все веса полносвязных модулей обработки (FC) записываются начиная с этого смещения адреса.

  • EndOffset - смещение конца памяти DDR для сгенерированного процессора глубокого обучения IP.

В примере отображается карта внешней памяти, сгенерированная для сети распознавания ResNet-18, которая использует zcu102_single битовый поток. См., Скомпилируйте сетевой объект diagnet.

Оптимизация компилятора

compile функция оптимизирует сети для развертывания путем идентификации слоев сети, которые можно выполнить за одну операцию на оборудовании и затем объединить их вместе. compile функция выполняет эти слои слияния и оптимизации:

  • Нормализация партии . (batchNormalizationLayer) и 2-D слой свертки (convolution2dLayer).

  • 2-D нулевой слой заполнения (nnet.keras.layer.ZeroPadding2dLayer) и 2-D слой свертки (convolution2dLayer).

  • 2-D нулевой слой заполнения (nnet.keras.layer.ZeroPadding2dLayer) и 2-D максимального слоя опроса (maxPooling2dLayer).

Этот выход кода является примером оптимизации компилятора в журнале компилятора.

Optimizing series network: Fused 'nnet.cnn.layer.BatchNormalizationLayer' into 'nnet.cnn.layer.Convolution2DLayer'

Компиляции уровня стойки

compile функция разделяет сеть на ноги во время компиляции. Ветвь является подмножеством сети, которую можно преобразовать в последовательную сеть. compile функция группирует ноги на основе выходного формата слоев. Формат выхода уровня определяется как формат данных модуля глубокого обучения, который обрабатывает этот уровень. Формат выхода слоев - conv, fc или adder. Для примера, на этом изображении, compile функция группирует все слои в Leg 2 вместе, потому что они имеют формат выхода conv. Сведения о выходных форматах слоев см. в разделе Поддерживаемые слои.

ResNet-18 leg grouping

На этом изображении показаны ноги ResNet-18 сети, созданной compile функция и ножки, подсвеченные в архитектуре ResNet-18 слоя.

ResNet-18 architecture and compiler legs

Похожие темы