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