В профилировщике CUDA nvvp, что означают накладные расходы на воспроизведение общей/глобальной памяти? Как это вычисляется?

Когда мы используем CUDA профилировщик nvvp, есть несколько «накладных расходов», связанных с инструкциями, например:

  • Накладные расходы на расхождение ветвей;
  • Накладные расходы на воспроизведение общей/глобальной памяти; а также
  • Накладные расходы на воспроизведение локального/глобального кэша.

Мои вопросы:

  1. Чем вызваны эти накладные расходы? И
  2. как они вычисляются?
  3. Аналогичным образом, как рассчитывается глобальная эффективность загрузки/хранения?

Приложение: я нашел все формулы, вычисляющие эти накладные расходы, в «Руководстве пользователя CUDA Profiler», упакованном в набор инструментов CUDA5.


person troore    schedule 25.11.2012    source источник


Ответы (1)


Некоторые ответы на ваши вопросы вы можете найти здесь:

Почему CUDA Profiler указывает воспроизведенные инструкции: 82% != глобальный повтор + локальный повтор + общий повтор?

Повторно воспроизведенные инструкции (%) Это процент инструкций, воспроизведенных во время выполнения ядра. Воспроизведенные инструкции — это разница между количеством инструкций, фактически выданных аппаратным обеспечением, и количеством инструкций, которые должны быть выполнены ядром. В идеале он должен быть равен нулю. Рассчитывается как 100 * (выданные инструкции - выполненные инструкции) / выданные инструкции

Воспроизведение глобальной памяти (%) Процент инструкций, воспроизведенных из-за доступа к глобальной памяти. Это рассчитывается как 100 * (l1 глобальная ошибка загрузки) / выданные инструкции

Воспроизведение в локальной памяти (%) Процент инструкций, воспроизведенных из-за доступа к локальной памяти. Это рассчитывается как 100 * (l1 промах локальной загрузки + l1 промах локального хранилища) / выданные инструкции

Воспроизведение конфликтов общего банка (%) Процент воспроизведенных инструкций, вызванных конфликтами банков общей памяти. Рассчитывается как 100 * (l1 общий конфликт)/выпущенные инструкции

person BenC    schedule 10.12.2012
comment
Спасибо за ваши ответы, BenC, я вычислил проценты воспроизведения повторных инструкций и общих банковских конфликтов. Однако, учитывая формулы для повторов глобальной/локальной памяти, я до сих пор не могу понять, почему промахи глобального/локального кеша вызывают повторы инструкций. Когда происходят промахи кеша, ему просто нужно обратиться к глобальной памяти, чтобы получить то, что необходимо. ПОЧЕМУ ПОВТОР? - person troore; 12.12.2012
comment
Я думаю, вы можете найти некоторые ответы на свой вопрос на этих слайдах. Операции с памятью выполняются для каждой деформации, как и для любой другой инструкции. Когда деформация запрашивает следующие слова, плохое объединение памяти приведет к множеству промахов загрузки l1, что приведет к повторному воспроизведению инструкций. Обратите внимание, что я не эксперт по CUDA, поэтому мое понимание может быть неверным :-) - person BenC; 12.12.2012
comment
Эта другая ссылка может быть тем, что вы искали, но технические детали требуют реальной мотивации. - person BenC; 12.12.2012
comment
Спасибо за эти полезные материалы! - person troore; 13.12.2012