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