gpucoder.profile

Создайте отчет профиля выполнения для сгенерированного кода CUDA

Описание

пример

gpucoder.profile(func_name,codegen_inputs) генерирует выполнение профильный отчет кода CUDA, сгенерированного для файла проекта func_name. codegen_inputs задает входные параметры к файлу проекта. Продукт Embedded Coder® должен быть установлен, чтобы сгенерировать профильный отчет. Профилирование только поддержано на платформе Linux®.

Примечание

Профильный рабочий процесс зависит от nvprof инструмент от NVIDIA®. В инструментарии CUDA® v10.1, NVIDIA ограничивает доступ к счетчикам производительности только пользователям администратора. Чтобы включить счетчики производительности графического процессора для всех учетных записей пользователей, см. инструкции, предоставленные в https://developer.nvidia.com/nvidia-development-tools-solutions-ERR_NVGPUCTRPERM-permission-issue-performance-counters.

gpucoder.profile(___,Name,Value) генерирует отчет профилирования выполнения с одной или несколькими профильными опциями, заданными как пара "имя-значение"

Примеры

свернуть все

Этот пример показывает вам, как выполнить мелкозернистый анализ для алгоритма MATLAB и его сгенерированного кода CUDA через программное обеспечение в цикле (SIL) профилирование выполнения. Продукт Embedded Coder должен быть установлен, чтобы сгенерировать отчет профилирования выполнения.

Запишите функцию точки входа, которая выполняет быстрое преобразование Фурье N-D. Используйте coder.gpu.kernelfun прагма, чтобы сопоставить БПФ с графическим процессором. По умолчанию, EnableCUFFT свойство включено, таким образом, генератор кода пользуется cuFFT библиотекой, чтобы выполнить операцию FFT.

function [Y] = gpu_fftn(X)
  coder.gpu.kernelfun();
  Y = fftn(X);
end

Используйте gpucoder.profile функция, чтобы сгенерировать отчет профилирования выполнения.

cfg = coder.gpuConfig('exe');
cfg.GpuConfig.MallocMode = 'discrete';
gpucoder.profile('gpu_fftn',{rand(2,4500,4)},'CodegenConfig',cfg,...
    'CodegenArguments','-d profilingdir','Threshold',0.001);

Отчет профилирования выполнения кода открывается. Этот отчет обеспечивает метрики на основе данных, собранных от выполнения SIL. Времена выполнения вычисляются из данных, зарегистрированных зондами инструментирования, добавленными к тестовой обвязке SIL или в коде, сгенерированном для каждого компонента. Времена выполнения Вида на море (Embedded Coder) для получения дополнительной информации.

Входные параметры

свернуть все

Имя функции точки входа или файла проекта.

Пример: gpucoder.profile('xdot',{1000,rand(1000,1),1,1,rand(1000,1),1,1})

Время компиляции вводит к функции точки входа или файлу проекта.

Пример: gpucoder.profile('xdot',{1000,rand(1000,1),1,1,rand(1000,1),1,1})

Аргументы в виде пар имя-значение

Задайте дополнительные разделенные запятой пары Name,Value аргументы. Name имя аргумента и Value соответствующее значение. Name должен появиться в кавычках. Вы можете задать несколько аргументов в виде пар имен и значений в любом порядке, например: Name1, Value1, ..., NameN, ValueN.

Пример: gpucoder.profile('xdot', {1000,rand(1000,1),1,1,rand(1000,1),1,1},'NumCalls',2,'CodegenConfig',cfg,'CodegenArguments','-d discrete','Threshold',0.01)

Задайте число раз, профилируемый раздел кода запущен. Значение по умолчанию равняется 6. Первый показ исключен из отчета, поскольку это обычно - выброс.

Укажите, что объект настройки генерации кода раньше генерировал код CUDA и профиль для. coder.EmbeddedCodeConfig по умолчанию объект используется, когда это значение не задано.

Задайте любой дополнительный codegen аргументы как строка. Значением по умолчанию является NULL (пустая строка).

Используйте пороговое значение, чтобы управлять вызовами графического процессора, которые отображены в отчете. Если максимальным временем выполнения от выполнения является x секунды, программное обеспечение сообщает обо всех вызовах графического процессора, которые превышают x * threshold.

Введенный в R2018b