Этот пример показывает вам, как выполнить мелкозернистый анализ для алгоритма MATLAB и его сгенерированного кода CUDA через программное обеспечение в цикле (SIL) профилирование выполнения. Embedded Coder® продукт должен быть установлен, чтобы сгенерировать отчет профилирования выполнения.
Примечание
Профильный рабочий процесс зависит от nvprof
инструмент от NVIDIA®. В CUDA® инструментарий v10.1, NVIDIA ограничивает доступ к счетчикам производительности только пользователям администратора. Чтобы позволить счетчикам производительности графического процессора использоваться всеми пользователями, см. инструкции, предоставленные в https://developer.nvidia.com/ERR_NVGPUCTRPERM (NVIDIA).
Поскольку этот пример создает функцию точки входа, которая выполняет быстрое преобразование Фурье 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
| codegen
| coder.EmbeddedCodeConfig