exponenta event banner

gpucoder.profile

Создание отчета профиля выполнения для созданного кода CUDA

Описание

пример

gpucoder.profile(func_name,codegen_inputs) создает отчет о профилировании выполнения кода CUDA, созданного для файла конструкции func_name. codegen_inputs аргумент задает входные данные для файла конструкции. Для создания отчета о профилировании необходимо установить продукт Embedded Coder ®.

Примечание

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

gpucoder.profile(___,Name,Value) создает отчет о профилировании выполнения с одним или несколькими параметрами профилирования, заданными в качестве аргумента пары имя-значение.

Примеры

свернуть все

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

Запишите функцию точки входа, которая выполняет 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 или внутри кода, сгенерированного для каждого компонента. Дополнительные сведения см. в разделе Время выполнения просмотра (встроенный кодер).

Входные аргументы

свернуть все

Имя функции точки входа или файла конструкции.

Пример: gpucoder.profile('xdot',{1000,rand(1000,1),1,1,rand(1000,1),1,1})

Компиляция входных данных для функции начального уровня или файла конструкции.

Пример: gpucoder.profile('xdot',{1000,rand(1000,1),1,1,rand(1000,1),1,1})

Аргументы пары «имя-значение»

Укажите дополнительные пары, разделенные запятыми Name,Value аргументы. Name является именем аргумента и Value - соответствующее значение. Name должен отображаться внутри кавычек. Можно указать несколько аргументов пары имен и значений в любом порядке как Name1,Value1,...,NameN,ValueN.

Пример: gpucoder.profile('xdot', {1000,rand(1000,1),1,1,rand(1000,1),1,1},'NumCalls',2,'CodegenConfig',cfg,'CodegenArguments','-d discrete','Threshold',0.01)

Укажите количество запусков профилированного раздела кода. Значение по умолчанию - 6. Первый прогон исключается из отчета, поскольку он обычно является отклонением.

Укажите объект конфигурации создания кода, используемый для создания кода CUDA и отчета о профилировании. Если это значение не указано, используется значение по умолчанию coder.EmbeddedCodeConfig используется объект.

Укажите любое дополнительное codegen аргументы в виде строки. Значением по умолчанию является NULL (пустая строка).

Для управления вызовами графического процессора, отображаемыми в отчете, используется пороговое значение. Если максимальное время выполнения из выполнения равно x секунд, программное обеспечение сообщает обо всех вызовах GPU, которые превышают x * threshold.

Представлен в R2018b