Отчеты генерации кода

GPU Coder™ создает отчет генерации кода, который помогает вам:

  • Отлаживайте проблемы генерации кода и проверьте, что MATLAB® код подходит для генерации кода.

  • Просмотр сгенерированного CUDA® код.

  • Трассировка между исходным кодом MATLAB и сгенерированным кодом CUDA.

  • Смотрите, как генератор кода определяет и распространяет информацию о типах для переменных и выражений в коде MATLAB.

  • Идентифицируйте потенциальные проблемы в сгенерированном коде.

  • Доступ к дополнительным отчетам, доступным с помощью Embedded Coder®.

Генерация отчетов

Когда вы активируете генерацию отчетов или когда происходит ошибка, генератор кода создает отчет генерации кода. Чтобы контролировать производство и открытие отчета о генерации кода, используйте настройки приложения, codegen опции или свойства объекта строения.

В приложении GPU Coder:

  • Чтобы сгенерировать отчет, установите Always create a report равным Yes.

  • Если вы хотите, чтобы приложение открыло для вас отчет, установите Automatically launch a report if one is generated равным Yes.

В командной строке используйте codegen опции:

  • Чтобы сгенерировать отчет, используйте -report опция.

  • Чтобы сгенерировать и открыть отчет, используйте -launchreport опция.

Кроме того, используйте свойства объекта строения (coder.CodeConfig):

  • Чтобы сгенерировать отчет, задайте GenerateReport на true.

  • Если хотите codegen чтобы открыть отчет для вас, установите LaunchReport на true.

Расположение отчета

Имя отчета генерации кода report.mldatx. Он расположен в html подпапка выходной папки генерации кода. Если у вас есть MATLAB R2018a или позже, можно открыть report.mldatx дважды кликнув по файлу.

Ошибки и предупреждения

Просмотрите ошибки генерации кода, предупреждения и информационные сообщения на вкладке All Messages. Чтобы выделить исходный код ошибки или предупреждения, щелкните сообщение. Это лучшая практика адресовать первое сообщение, поскольку последующие ошибки и предупреждения могут быть связаны с первым сообщением.

Просмотрите ошибки компиляции и связи и предупреждения на вкладке Build Logs.

Файлы и функции

В отчете перечислены исходные функции MATLAB и сгенерированные файлы. На панели MATLAB Source представление Function List организует функции согласно содержащему файл файлу. Для визуализации функций в соответствии со структурой вызова используйте представление Call Tree.

Чтобы просмотреть функцию в области кода отчета, щелкните функцию в списке. При нажатии на функцию открывается файл, содержащий функцию. Чтобы отредактировать выбранный файл в редакторе MATLAB, щелкните Edit in MATLAB или номер линии на панели кода.

Если у вас есть Embedded Coder и вы генерируете отчет с включенной трассируемостью, чтобы просмотреть исходный код и сгенерированный код рядом друг с другом в панели кода, нажмите Trace Code. Между исходным кодом и сгенерированным кодом можно в интерактивном режиме проследить. Смотрите Интерактивное Отслеживание между Кодом MATLAB и Сгенерированным Кодом C/C + + (Embedded Coder).

Если вы хотите переместить сгенерированные файлы для автономного кода (библиотеки или исполняемого файла) в другую среду разработки, можно поместить их в zip-файл, нажав Package Code.

Специализированные функции или классы

Когда вызывается функция с различными типами входов или класс использует различные типы для своих свойств, генератор кода производит специализации. На панели MATLAB Source нумерованные функции (или классы) указывают на специализации. Для примера:

Источник MATLAB

Чтобы просмотреть функцию MATLAB на панели кода, щелкните функцию на панели MATLAB Source. Чтобы увидеть информацию о типе переменной или выражения, остановитесь на переменной или выражении.

На панели кода подсветка синтаксиса исходного кода MATLAB помогает вам идентифицировать элементы синтаксиса MATLAB. Подсветка синтаксиса также помогает вам идентифицировать определенные атрибуты генерации кода, такие как является ли функция внешней или является ли аргумент постоянным.

Ядра CUDA

Зеленый маркер GPU рядом с mandelbrot_count функция указывает, что сгенерированный код имеет разделы как центральный процессор, так и графический процессор. Зеленая вертикальная полоса указывает строки кода, которые сопоставлены с графическим процессором. Чтобы увидеть информацию о типе переменной или выражения и имени соответствующего GPU Kernel Function, остановитесь на переменной или выражении. Когда вы выбираете подсвеченный код, нажимая на него, код становится синим, и вы можете увидеть информацию, даже когда вы уводите указатель от выбора. Код остается выбранным, пока вы не нажмете Esc или выберите другой код.

Entry-point function in the code pane highlighting code sections mapped to GPU kernels

Внешние функции

В коде MATLAB отчет идентифицирует внешнюю функцию с фиолетовым текстом. Информационное окно указывает, что функция является внешней.

Entry-point function in the code pane highlighting extrinsic functions

Постоянные аргументы

В коде MATLAB оранжевый текст указывает на аргумент константы времени компиляции в функцию точки входа или специализированную функцию. Информационное окно включает постоянное значение.

Знание значения постоянных аргументов помогает вам понять сгенерированные сигнатуры функции. Это также помогает вам увидеть, когда генерация кода создала специализации функции для различных значений постоянных аргументов.

Чтобы экспортировать значение в переменную в рабочей области, щелкните.

Сгенерированный код

Чтобы просмотреть сгенерированный исходный файл CUDA или файл заголовка на панели кода, щелкните файл на вкладке Files на панели Generated Code. Вкладка GPU Kernels на панели Generated Code содержит список ядер CUDA в сгенерированном коде. Нажмите на имя ядра, чтобы перейти непосредственно к определению соответствующего ядра в сгенерированном коде.

Переменный MATLAB

Вкладка Variables содержит информацию о переменных для выбранной функции MATLAB. Чтобы выбрать функцию, щелкните ее на панели MATLAB Source.

Таблица переменных показывает:

  • Класс, размер и сложность

  • Свойства фиксированных точек

Эта информация помогает вам отлаживать ошибки, такие как ошибки несоответствия типов, и понять, как генератор кода распространяет типы и представляет данные в сгенерированном коде.

Визуальные индикаторы на вкладке Переменные

Эта таблица описывает символы, значки и другие индикаторы в таблице переменных.

Столбец в таблице переменныхИндикаторОписание
ИмярасширительПеременная имеет элементы или свойства, которые можно увидеть, щелкнув по расширителю.
Имя{:}Неоднородный массив ячеек (все элементы имеют одинаковые свойства)
Имя{n}n-й элемент массива гетерогенного массива ячеек
Классv > nv используется повторно с другим классом, размером и сложностью. Номер n определяет каждое уникальное повторное использование (повторное использование с уникальным набором свойств). Когда вы останавливаетесь на переименованной переменной, в отчете подсвечиваются только образцы этой переменной, которые имеют общий класс, размер и сложность.
Размер:nРазмерность переменного размера с верхней границей n
Размер:?Переменный размер без верхней границы
РазмеркурсивМассив переменного размера, размерности которого не изменяют размер во время выполнения
Классsparse префиксРазреженный массив
Классcomplex префиксКомплексное число

Индикаторы размещения массива на вкладке Переменные

Эта таблица описывает значки, которые указывают на размещение массива в таблице переменных.

ЗначокОписание

Основная строка размещения массива.

Основной столбец размещения массива.

Смесь основных и основных размещений столбцов.

См. Разделы «Основная строка» и «Основной столбец» Размещений

Код трассировки

Между исходным кодом MATLAB и сгенерированным кодом CUDA можно проследить с помощью одного из следующих методов:

Аналитика кода

Генератор кода может обнаруживать и сообщать о проблемах, которые потенциально могут возникнуть в сгенерированном коде. Просмотрите сообщения на вкладке Code Insights. К числу таких вопросов относятся:

  • Потенциальные различия между поведением сгенерированного кода и поведением кода MATLAB. Отчет включает сообщения о потенциальных различиях только в том случае, если вы включили создание отчетов о потенциальных различиях. Смотрите Отчеты о потенциальных различиях.

  • Отчет диагностики генерации кода GPU, который определяет проблемы во время генерации кода и предлагает потенциальные решения для максимизации эффективности.

  • Потенциальные основные проблемы. Смотрите Проект для Row-Major Array Layout.

Дополнительные отчеты

Вкладка Summary может иметь ссылки на эти дополнительные отчеты:

Ограничения по отчетам

  • В отчете не показана полная информация для развернутых циклов. Он отображает типы данных одной произвольной итерации.

  • В отчете не отображается информация о мертвом коде.

Похожие темы

Для просмотра документации необходимо авторизоваться на сайте