2017-01-17 13 views
7

Я пытаюсь профилировать приложение OpenCL, a.out, в системе с NVIDIA TITAN X и CUDA 8.0.Как профилировать приложение OpenCL с CUDA 8.0 nvprof

Если бы это было приложение CUDA, nvprof ./a.out было бы достаточно. Но я обнаружил, что это не работает с приложением OpenCL, с сообщением «Никакие ядра не были профилированы».

До CUDA 7.5, я успешно использовал COMPUTE_PROFILE=1this. К сожалению, в документации говорится: «Поддержка командной строки с использованием переменной среды COMPUTE_PROFILE была отключена в выпуске CUDA 8.0».

Вопрос в том, есть ли какой-либо иной способ, кроме понижения CUDA, к профилю приложения OpenCL с nvprof?

+0

Вы вызываете 'clReleaseContext' в своем приложении? – talonmies

+0

@talonmies Да, он правильно вызывает функции освобождения для контекста, очереди, программы, ядра и объекта памяти. – csehydrogen

ответ

4

Насколько я знаю, nvprof никогда не поддерживал профилирование OpenCL.

Код запуска с COMPUTE_PROFILE=1 вызывает механизм профилирования, основанный на драйверах, который предшествует введению nvprof. Этот механизм, основанный на драйверах, был устарел некоторое время назад и теперь удален с CUDA 8 в пользу использования nvprof.

В результате оказалось, что нет способа профилировать код OpenCL, работающий на оборудовании NVIDIA, с помощью инструментария CUDA.

 Смежные вопросы

  • Нет связанных вопросов^_^