Анализируйте профили выполнения сгенерированного кода

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

Примечание

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

Создайте файл проекта

Поскольку этот пример создает функцию точки входа, которая выполняет быстрое преобразование Фурье 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) для получения дополнительной информации.

Смотрите также

| |