exponenta event banner

Отчеты о создании кода

Графический процессор 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 (MATLAB Source). Чтобы просмотреть информацию о типе переменной или выражения, остановитесь над переменной или выражением.

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

Ядра CUDA

Зеленый маркер графического процессора рядом с mandelbrot_count функция указывает, что сгенерированный код имеет секции CPU и GPU. Зеленая вертикальная полоса обозначает строки кода, отображаемые на графический процессор. Чтобы просмотреть информацию о типе переменной или выражения и имени соответствующей функции ядра графического процессора, наведите паузу на переменную или выражение. При выборе выделенного кода щелчком по нему код становится синим, и информация отображается даже при удалении указателя от выделенного фрагмента. Код остается выбранным до нажатия 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 на панели кода, щелкните файл на вкладке «Файлы» на панели «Сгенерированный код». Вкладка Ядра GPU на панели Сгенерированный код содержит список ядер CUDA в сгенерированном коде. Щелкните по имени ядра, чтобы перейти непосредственно к определению соответствующего ядра в сгенерированном коде.

Переменные MATLAB

На вкладке Переменные (Variables) представлена информация о переменных для выбранной функции MATLAB. Чтобы выбрать функцию, щелкните ее на панели Источник MATLAB (MATLAB Source).

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

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

  • Свойства типов с фиксированной точкой

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

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

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

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

Индикаторы компоновки массива на вкладке «Переменные»

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

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

Макет основного массива строк.

Макет основного массива столбцов.

Смесь макетов «строка-основная» и «столбец-основная».

См. Макеты строк и столбцов.

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

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

  • Интерактивная визуализация сопоставления между кодом MATLAB и сгенерированным кодом. Чтобы получить доступ к интерактивной трассировке, в отчете щелкните Код трассировки. Кнопка «Код трассировки» доступна только при наличии встроенного кодера и возможности отслеживания кода при создании кода. См. раздел Интерактивная трассировка между кодом MATLAB и сгенерированным кодом C/C + + (встроенный кодер).

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

Анализ кода

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

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

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

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

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

Вкладка Сводка может содержать ссылки на следующие дополнительные отчеты:

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

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

  • В отчете не указана информация о мертвом коде.

Связанные темы