exponenta event banner

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

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

Примечание

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

Создание файла конструкции

В этом примере создается функция точки входа, которая выполняет N-D быстрое преобразование Фурье. Используйте coder.gpu.kernelfun pragma для отображения FFT в GPU. По умолчанию 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 или внутри кода, сгенерированного для каждого компонента. Дополнительные сведения см. в разделе Время выполнения просмотра (встроенный кодер).

См. также

| |

Связанные темы