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

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

См. также

| |

Похожие темы