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 Source. Чтобы увидеть информацию о типе переменной или выражения, остановитесь на переменной или выражении.
На панели кода подсветка синтаксиса исходного кода MATLAB помогает вам идентифицировать элементы синтаксиса MATLAB. Подсветка синтаксиса также помогает вам идентифицировать определенные атрибуты генерации кода, такие как является ли функция внешней или является ли аргумент постоянным.
Зеленый маркер GPU рядом с mandelbrot_count
функция указывает, что сгенерированный код имеет разделы как центральный процессор, так и графический процессор. Зеленая вертикальная полоса указывает строки кода, которые сопоставлены с графическим процессором. Чтобы увидеть информацию о типе переменной или выражения и имени соответствующего GPU Kernel Function, остановитесь на переменной или выражении. Когда вы выбираете подсвеченный код, нажимая на него, код становится синим, и вы можете увидеть информацию, даже когда вы уводите указатель от выбора. Код остается выбранным, пока вы не нажмете Esc
или выберите другой код.
В коде MATLAB отчет идентифицирует внешнюю функцию с фиолетовым текстом. Информационное окно указывает, что функция является внешней.
В коде MATLAB оранжевый текст указывает на аргумент константы времени компиляции в функцию точки входа или специализированную функцию. Информационное окно включает постоянное значение.
Знание значения постоянных аргументов помогает вам понять сгенерированные сигнатуры функции. Это также помогает вам увидеть, когда генерация кода создала специализации функции для различных значений постоянных аргументов.
Чтобы экспортировать значение в переменную в рабочей области, щелкните.
Чтобы просмотреть сгенерированный исходный файл CUDA или файл заголовка на панели кода, щелкните файл на вкладке Files на панели Generated Code. Вкладка GPU Kernels на панели Generated Code содержит список ядер CUDA в сгенерированном коде. Нажмите на имя ядра, чтобы перейти непосредственно к определению соответствующего ядра в сгенерированном коде.
Вкладка Variables содержит информацию о переменных для выбранной функции MATLAB. Чтобы выбрать функцию, щелкните ее на панели MATLAB Source.
Таблица переменных показывает:
Класс, размер и сложность
Свойства фиксированных точек
Эта информация помогает вам отлаживать ошибки, такие как ошибки несоответствия типов, и понять, как генератор кода распространяет типы и представляет данные в сгенерированном коде.
Эта таблица описывает символы, значки и другие индикаторы в таблице переменных.
Столбец в таблице переменных | Индикатор | Описание |
---|---|---|
Имя | расширитель | Переменная имеет элементы или свойства, которые можно увидеть, щелкнув по расширителю. |
Имя | {:} | Неоднородный массив ячеек (все элементы имеют одинаковые свойства) |
Имя | {n} | n-й элемент массива гетерогенного массива ячеек |
Класс | v > n | v используется повторно с другим классом, размером и сложностью. Номер n определяет каждое уникальное повторное использование (повторное использование с уникальным набором свойств). Когда вы останавливаетесь на переименованной переменной, в отчете подсвечиваются только образцы этой переменной, которые имеют общий класс, размер и сложность. |
Размер | :n | Размерность переменного размера с верхней границей n |
Размер | :? | Переменный размер без верхней границы |
Размер | курсив | Массив переменного размера, размерности которого не изменяют размер во время выполнения |
Класс | sparse префикс | Разреженный массив |
Класс | complex префикс | Комплексное число |
Эта таблица описывает значки, которые указывают на размещение массива в таблице переменных.
Значок | Описание |
---|---|
Основная строка размещения массива. | |
Основной столбец размещения массива. | |
Смесь основных и основных размещений столбцов. |
См. Разделы «Основная строка» и «Основной столбец» Размещений
Между исходным кодом MATLAB и сгенерированным кодом CUDA можно проследить с помощью одного из следующих методов:
Интерактивно визуализируйте отображение между кодом MATLAB и сгенерированным кодом. Для доступа к интерактивной трассировке в отчете нажмите Trace Code. Кнопка Trace Code активируется, только если у вас есть Embedded Coder и вы включили трассируемость кода, когда вы сгенерировали код. Смотрите Интерактивное Отслеживание между Кодом MATLAB и Сгенерированным Кодом C/C + + (Embedded Coder).
Включите исходный код в качестве комментариев в сгенерированный код CUDA. В комментарии генератор кода создает тег, который помогает вам найти соответствующий исходный код MATLAB. Если у вас есть Embedded Coder, тег является ссылкой на исходный код. Смотрите Трассировка между сгенерированным кодом CUDA и исходным кодом MATLAB.
Генератор кода может обнаруживать и сообщать о проблемах, которые потенциально могут возникнуть в сгенерированном коде. Просмотрите сообщения на вкладке Code Insights. К числу таких вопросов относятся:
Потенциальные различия между поведением сгенерированного кода и поведением кода MATLAB. Отчет включает сообщения о потенциальных различиях только в том случае, если вы включили создание отчетов о потенциальных различиях. Смотрите Отчеты о потенциальных различиях.
Отчет диагностики генерации кода GPU, который определяет проблемы во время генерации кода и предлагает потенциальные решения для максимизации эффективности.
Потенциальные основные проблемы. Смотрите Проект для Row-Major Array Layout.
Вкладка Summary может иметь ссылки на эти дополнительные отчеты:
Отчет о метриках кода графического процессора. Смотрите Отчет о генерации статических метрик кода для кода, сгенерированного из кода MATLAB (Embedded Coder).
В отчете не показана полная информация для развернутых циклов. Он отображает типы данных одной произвольной итерации.
В отчете не отображается информация о мертвом коде.