Способ измерения пропускной способности памяти для определенной инструкции или строки кода в CUDA?
Есть ли способ измерения пропускной способности памяти для определенной инструкции памяти или строки кода в CUDA? (nvprof может выводить пропускную способность памяти для всего ядра.) Если функция clock() является единственным способом сделать это, то каково уравнение для вычисления пропускной способности? (Количество объединенных адресов на {инструкцию или строку кода}, поделенное на разницу в часах ()?)
Я хочу посмотреть, не использует ли определенная инструкция или строка кода пропускную способность памяти. (напр., MSHR..)
У меня есть два устройства, GTX980 (Maxwell, sm_52) и P100 (Pascal, sm_60) в системе x86_64 бит Linux.
2 ответа
Одним из инструментов, который может дать некоторое представление, является профилирование на уровне инструкций в инструменте nsight. Это может дать вам представление о том, какую линию винить, когда СМ "зависает" (не выдает никаких инструкций). Поскольку инструкции LD/ST не блокируют выполнение, вы часто видите остановку сразу после извлечения данных.
Вот девблог NVIDIA по этой теме. https://devblogs.nvidia.com/parallelforall/cuda-7-5-pinpoint-performance-problems-instruction-level-profiling/
Используйте визуальный профилировщик от nvidia. Более или менее, он расскажет вам все, что можно знать о производительности вашего кода CUDA.
Если вы компилируете свой код с -lineinfo, профилировщик может сообщить вам статистику для каждой строки в ядре. Когда вы запустите свой код, переключитесь на неуправляемый анализ (слева внизу в макете по умолчанию). Дайте ему сгенерировать временную шкалу, щелкните нужное ядро на временной шкале, затем нажмите кнопку воспроизведения для шаблона доступа к глобальной памяти в нижней левой панели. Он предоставит список глобальных загрузок памяти с каждой строкой, с транзакциями / доступом, а также сообщит вам, какое число является идеальным. Двойной щелчок по одной из этих строк приведет вас к строке в исходном коде и покажет вам соответствующие инструкции по сборке.