Когда вы создаете приложение, которое использует сгенерированный CUDA® Код С++ необходимо предусмотреть основную функцию CUDA C++, которая вызывает сгенерированный код. По умолчанию для генерации кода исходного кода, статических библиотек, динамических библиотек и исполняемых файлов при помощи codegen
команда, GPU Coder™ генерирует пример CUDA C++ основных файлов (main.cu
исходный файл и main.h
заголовочный файл в examples
подпапка папки сборки). Этот пример основного файла является шаблоном, который помогает вам включать сгенерированный код CUDA в ваше приложение. Пример основной функции объявляет и инициализирует данные, включая динамически распределенные данные. Он вызывает функции точки входа, но не использует значения, которые возвращают функции точки входа.
При генерации кода для глубоких сверточных нейронных сетей (CNN) генератор кода использует преимущества NVIDIA® cuDNN, TensorRT для графических процессоров NVIDIA или ARM® Вычислите библиотеку для графических процессоров ARM Mali. Эти библиотеки имеют определенные требования к размещению данных для входа тензора, содержащего изображения, видео и любые другие данные. При разработке пользовательских основных функций для создания приложения необходимо создать входные буферы, которые предоставляют данные сгенерированным функциям точки входа в формате, ожидаемом этими библиотеками.
Для глубоких сверточных нейронных сетей (CNN) для определения формата для пакетов 2-D изображений со следующими буквами используется 4-D тензорный дескриптор:
N
- размер партии
C
- количество функции (количество каналов)
H
- высота
W
- ширина
Показаны наиболее часто используемые 4-D тензорные форматы, где буквы сортируются в порядке убывания шагов.
NCHW
NHWC
CHWN
Из них GPU Coder использует NCHW
формат (по умолчанию - основной столбец размещения). Чтобы использовать основную строку размещения передайте -rowmajor
опция для codegen
команда. Кроме того, сконфигурируйте код для размещения основной строки, изменив cfg.RowMajor
параметр в объекте строения генерации кода.
Например, рассмотрим пакет изображений со следующими размерностями: N=1
, C=3
, H=5
, W=4
. Если элементы пикселя изображения представлены последовательностью целых чисел, входные изображения могут быть визуально представлены следующим образом.
При создании входа буфера в основной функции 4-D изображение выкладывается в память в NCHW
формат как:
Начиная с первого канала (C=0
), элементы расположены смежно в основном порядке.
Продолжите работу со вторым и последующим каналами до тех пор, пока не будут проложены элементы всех каналов.
Переходите к следующему пакету (если N > 1
).
Сеть долгой краткосрочной памяти (LSTM) является типом рекуррентной нейронной сети (RNN), который может изучать долгосрочные зависимости между временными шагами данных последовательности. Для LSTM формат размещения данных может быть описан следующими буквами:
N
- размер партии
S
- длина последовательности (количество временных шагов)
d
- количество модулей в одной входной последовательности
Для LSTM, GPU Coder использует SNd
формат по умолчанию.
coder.CodeConfig
| coder.CuDNNConfig
| coder.EmbeddedCodeConfig
| coder.gpuConfig
| coder.gpuEnvConfig
| coder.TensorRTConfig