Графический процессор Coder™ создает отчет о создании кода, который помогает:
Выполните отладку генерации кода и убедитесь, что код MATLAB ® подходит для генерации кода.
Просмотр созданного кода CUDA ®.
Трассировка между исходным кодом MATLAB и сгенерированным кодом CUDA.
Узнайте, как генератор кода определяет и распространяет информацию о типе переменных и выражений в коде MATLAB.
Определите потенциальные проблемы в созданном коде.
Получите доступ к дополнительным отчетам с помощью Embedded Coder ®.
При включении генерации отчета или возникновении ошибки генератор кода создает отчет о генерации кода. Для управления созданием и открытием отчета о создании кода используйте настройки приложения, codegen или свойства объекта конфигурации.
В приложении Кодер графического процессора:
Чтобы создать отчет, установите для параметра Всегда создавать отчет значение Yes.
Если вы хотите, чтобы приложение открыло отчет для вас, установите параметр Автоматически запускать отчет, если он создан в Yes.
В командной строке используйте codegen опции:
Для создания отчета используйте -report вариант.
Для создания и открытия отчета используйте -launchreport вариант.
Либо используйте свойства объекта конфигурации (coder.CodeConfig):
Чтобы создать отчет, установите GenerateReport кому true.
Если хотите codegen чтобы открыть отчет, установите LaunchReport кому true.
Отчет о создании кода имеет имя report.mldatx. Он расположен в html подпапка выходной папки генерации кода. При наличии MATLAB R2018a или более поздней версии можно открыть report.mldatx двойным щелчком на файле.
Просмотр сообщений об ошибках генерации кода, предупреждений и информации на вкладке «Все сообщения». Чтобы выделить исходный код для ошибки или предупреждения, щелкните сообщение. Рекомендуется обращаться к первому сообщению, поскольку последующие ошибки и предупреждения могут быть связаны с первым сообщением.
Просмотр ошибок компиляции и связывания, а также предупреждений на вкладке Журналы построения.
В отчете перечислены исходные функции MATLAB и созданные файлы. На панели Источник MATLAB (MATLAB Source) представление Список функций (Function List) организует функции в соответствии с содержимым файла. Для визуализации функций в соответствии со структурой вызова используется ракурс дерева вызовов.
Чтобы просмотреть функцию на панели кода отчета, щелкните ее в списке. При щелчке на функции открывается файл, содержащий эту функцию. Чтобы изменить выбранный файл в редакторе MATLAB, нажмите кнопку Изменить в MATLAB или щелкните номер строки на панели кода.
Если включен встроенный кодер и отчет создается с возможностью отслеживания, чтобы просмотреть исходный код и созданный код рядом друг с другом на панели кода, щелкните Трассировка кода. Между исходным кодом и сгенерированным кодом можно выполнять интерактивную трассировку. См. раздел Интерактивная трассировка между кодом MATLAB и сгенерированным кодом C/C + + (встроенный кодер).
Если требуется переместить созданные файлы для автономного кода (библиотеки или исполняемого файла) в другую среду разработки, их можно поместить в zip-файл, щелкнув Код пакета (Package Code).
Когда функция вызывается с различными типами входных данных или класс использует различные типы для своих свойств, генератор кода производит специализации. На панели MATLAB Source пронумерованные функции (или классы) указывают специализации. Например:
![]()
Чтобы просмотреть функцию MATLAB на панели кода, щелкните ее на панели Источник MATLAB (MATLAB Source). Чтобы просмотреть информацию о типе переменной или выражения, остановитесь над переменной или выражением.
На панели кода выделение синтаксиса исходного кода MATLAB помогает идентифицировать элементы синтаксиса MATLAB. Подсветка синтаксиса также помогает определить определенные атрибуты генерации кода, например, является ли функция внешней или аргумент постоянным.
Зеленый маркер графического процессора рядом с mandelbrot_count функция указывает, что сгенерированный код имеет секции CPU и GPU. Зеленая вертикальная полоса обозначает строки кода, отображаемые на графический процессор. Чтобы просмотреть информацию о типе переменной или выражения и имени соответствующей функции ядра графического процессора, наведите паузу на переменную или выражение. При выборе выделенного кода щелчком по нему код становится синим, и информация отображается даже при удалении указателя от выделенного фрагмента. Код остается выбранным до нажатия Esc или выберите другой код.

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

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

Знание значения постоянных аргументов помогает понять сгенерированные сигнатуры функций. Это также помогает увидеть, когда создание кода создает специализации функций для различных значений постоянных аргументов.
Чтобы экспортировать значение в переменную в рабочей области, щелкните значок.![]()
Чтобы просмотреть созданный исходный или заголовочный файл CUDA на панели кода, щелкните файл на вкладке «Файлы» на панели «Сгенерированный код». Вкладка Ядра GPU на панели Сгенерированный код содержит список ядер CUDA в сгенерированном коде. Щелкните по имени ядра, чтобы перейти непосредственно к определению соответствующего ядра в сгенерированном коде.
На вкладке Переменные (Variables) представлена информация о переменных для выбранной функции MATLAB. Чтобы выбрать функцию, щелкните ее на панели Источник MATLAB (MATLAB Source).
Таблица переменных показывает:
Класс, размер и сложность
Свойства типов с фиксированной точкой
Эта информация помогает отладить ошибки, такие как ошибки несоответствия типов, и понять, как генератор кода распространяет типы и представляет данные в сгенерированном коде.
В этой таблице описываются символы, значки и другие индикаторы в таблице переменных.
| Столбец в таблице переменных | Индикатор | Описание |
|---|---|---|
| Имя | расширитель | Переменная имеет элементы или свойства, которые можно увидеть, щелкнув расширитель. |
| Имя | {:} | Гетерогенный массив ячеек (все элементы имеют одинаковые свойства) |
| Имя | {n} | n-й элемент гетерогенного клеточного массива |
| Класс | v > n | v повторно используется с другим классом, размером и сложностью. Число n определяет каждое уникальное повторное использование (повторное использование с уникальным набором свойств). При наведении паузы на переименованную переменную отчет выделяет только экземпляры этой переменной, которые имеют общий класс, размер и сложность. |
| Размер | :n | Размер переменного размера с верхней границей n |
| Размер | :? | Переменный размер без верхней границы |
| Размер | курсив | Массив переменного размера, размеры которого не изменяют размер во время выполнения |
| Класс | sparse префикс | Разреженный массив |
| Класс | complex префикс | Комплексное число |
В этой таблице описываются значки, указывающие макет массива в таблице переменных.
| Значок | Описание |
|---|---|
| Макет основного массива строк. |
| Макет основного массива столбцов. |
| Смесь макетов «строка-основная» и «столбец-основная». |
Можно выполнить трассировку между исходным кодом MATLAB и сгенерированным кодом CUDA одним из следующих способов:
Интерактивная визуализация сопоставления между кодом MATLAB и сгенерированным кодом. Чтобы получить доступ к интерактивной трассировке, в отчете щелкните Код трассировки. Кнопка «Код трассировки» доступна только при наличии встроенного кодера и возможности отслеживания кода при создании кода. См. раздел Интерактивная трассировка между кодом MATLAB и сгенерированным кодом C/C + + (встроенный кодер).
Включить исходный код в качестве комментариев в созданный код CUDA. В комментарии генератор кода создает тег, который помогает найти соответствующий исходный код MATLAB. При наличии встроенного кодера тег является ссылкой на исходный код. См. раздел Трассировка между сгенерированным кодом CUDA и исходным кодом MATLAB.
Генератор кода может обнаруживать и сообщать о проблемах, которые потенциально могут возникнуть в сгенерированном коде. Просмотрите сообщения на вкладке Анализ кода. К числу вопросов относятся:
Потенциальные различия между поведением сгенерированного кода и поведением кода MATLAB. Отчет включает сообщения о потенциальных различиях, только если включена отчетность о потенциальных различиях. См. раздел Отчеты о потенциальных различиях.
Отчет о диагностике генерации кода GPU, который выявляет проблемы во время генерации кода и предлагает потенциальные решения для максимизации производительности.
Потенциальные основные проблемы ряда. См. раздел Разработка кода для компоновки основного массива строк.
Вкладка Сводка может содержать ссылки на следующие дополнительные отчеты:
Отчет по метрикам кода GPU. См. раздел Создание отчета о показателях статического кода для кода, сгенерированного из кода MATLAB (встроенный кодер).
Отчет не содержит полной информации для невыпущенных циклов. Он отображает типы данных одной произвольной итерации.
В отчете не указана информация о мертвом коде.