Когда вы создаете приложение, которое использует сгенерированный Код С++ CUDA®, необходимо предоставить C++ CUDA основную функцию, которая вызывает сгенерированный код. По умолчанию, для генерации кода исходного кода, статических библиотек, динамических библиотек и исполняемых файлов при помощи codegen
команда, GPU Coder™ генерирует пример CUDA C++ основные файлы (main.cu
исходный файл и main.h
заголовочный файл в examples
подпапка папки сборки). Основной файл этого примера является шаблоном, который помогает вам включить сгенерированный код CUDA в свое приложение. Пример основная функция объявляет и инициализирует данные, включая динамически выделенные данные. Это вызывает функции точки входа, но не использует значения, которые возвращают функции точки входа.
При генерации кода для глубоких сверточных нейронных сетей (CNN) генератор кода использует в своих интересах NVIDIA® cuDNN, TensorRT для NVIDIA графические процессоры или Библиотека ARM® Compute для графических процессоров ARM Mali. Эти библиотеки имеют определенные требования формата данных для входного тензора, содержащего изображения, видео и любые другие данные. При авторской разработке пользовательских основных функций для того, чтобы создать приложение, необходимо создать входные буферы, которые предоставляют данные сгенерированным функциям точки входа в формате, ожидаемом этими библиотеками.
Для глубоких сверточных нейронных сетей (CNN) 4-D дескриптор тензора используется, чтобы задать формат для пакетов 2D изображений со следующими буквами:
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