предикатная метрика неожиданно высока

#cuda

Вопрос:

Я профилирую ядро (nsight 2021.2.1, вычислительные возможности 8.3, cuda 11.4) и рассматриваю поток метрики Avg, выполняемый для исходной строки. Насколько я понимаю, это значение может находиться между 0 и 32. Однако, по моему профилю, это намного выше.

изображение

Очевидно, что я плохо понимаю метрику инструкций с предикатами и, следовательно, средства выполнения потока avg. Как я должен интерпретировать эту ценность и могу ли я сделать из нее какие-либо выводы?

Ответ №1:

Это ошибка в исходном представлении. Столбцы представления источника сворачиваются от инструкций по сборке до строк источника. Это работает для выполняемых инструкций и инструкций, связанных с потоками, но не для среднего значения. Поток Выполнен.

Правильное значение —

 Predicated-On Thread Instructions Executed / Instructions Executed = Avg Thread Executed
91,714,560,000 / 2,866,080,000 = 32
 

Если вы нажмете на исходную строку и посмотрите соответствующий код сборки в представлении SASS, вы, скорее всего, найдете 7 инструкций.

 224 / 32 = 7.