gpucoder.profile

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

Описание

пример

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

Примечание

Рабочий процесс профилирования зависит от nvprof инструмент от NVIDIA®. В CUDA® toolkit v10.1, NVIDIA ограничивает доступ к счетчикам эффективности пользователям admin. Чтобы включить счетчики эффективности графический процессор для всех учетных записей пользователей, смотрите инструкции в 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 или внутри кода, сгенерированного для каждого компонента. Для получения дополнительной информации смотрите View Execution Times (Embedded Coder).

Входные параметры

свернуть все

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

Пример: 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 секунд, программное обеспечение сообщает обо всех вызовах графический процессор, которые превышают x * threshold.

Введенный в R2018b