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

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

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

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

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

Упорядоченное по строкам размещение массивов.

Упорядоченное по столбцам размещение массивов.

Смесь упорядоченных по строкам и упорядоченных по столбцам размещений.

Смотрите упорядоченные по строкам и упорядоченные по столбцам размещения массивов.

Трассировка кода

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

Понимание кода

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

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

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

  • Потенциальные упорядоченные по строкам проблемы. См. Проект Кода для Упорядоченного по строкам Размещения Массивов.

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

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

Сообщите об ограничениях

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

  • Отчет не показывает информацию о мертвом коде.

Похожие темы