* Изменено * Nvidia Maxwell, увеличено количество команд в глобальной памяти

У меня был эксперимент на GTX760(Kepler) и GTX750Ti(Maxwell) с использованием тестов (Parboil, Rodinia). Затем я проанализировал результаты с помощью визуального профилировщика Nvidia. В большинстве приложений количество глобальных команд в архитектуре Maxwell увеличено в 7-10 раз.

спекуляция для обеих графических карт

GTX760 6,0 Гбит / с 2048 МБ 256 бит 192,2 ГБ / с

GTX750Ti 5,4 Гбит / с 2048 МБ 128 бит 86,4 Гбит / с

Убунту 14.04

CUDA водитель 340.29

Инструментарий 6.5

Я скомпилировал тестовое приложение (без изменений), затем собрал результаты NVVP(6.5). Анализировать все> Память ядра> Из раздела L1/Shared Memory я собрал общее количество транзакций загрузки.

Я приложил скриншоты нашего результата симуляции гистограммы на kepler(ссылка) и maxwell(ссылка)

Кто-нибудь знает, почему увеличивается число глобальных подсчетов команд в архитектуре Максвелла?

Спасибо.

1 ответ

Решение

Счетчик gld_transactions не сопоставим между архитектурой Кеплера и Максвелла. Кроме того, это не эквивалентно количеству выполненных глобальных команд.

На Ферми / Кеплере это подсчитывает количество запросов SM к L1 128 байт. Это может увеличиваться от 0 до 32 за выполненную глобальную / общую инструкцию.

На глобальных операциях Maxwell все проходят через TEX (унифицированный кеш). Кеш TEX полностью отличается от кеша Fermi/Kepler L1. Глобальные транзакции измеряют количество секторов 32B, к которым обращаются в кеше. Это может увеличиваться от 0 до 32 за выполненную глобальную / общую инструкцию.

Если мы посмотрим на 3 разных случая:

Случай 1: Каждый поток в деформации получает доступ к одному и тому же 32-битному смещению.

Случай 2: Каждый поток в деформации получает 32-битное смещение с шагом 128 байт.

СЛУЧАЙ 3: Каждый поток в деформации получает доступ к уникальному 32-битному смещению на основе своего индекса полосы движения.

Случай 4: Каждый поток в деформации получает доступ к уникальному 32-битному смещению в 128-байтовом диапазоне памяти, который выровнен по 128 байтов.

gld_transcations для каждого случая списка по архитектуре

            Kepler      Maxwell
Case 1      1           4
Case 2      32          32
Case 3      1           8
Case 4      1           4-16

Моя рекомендация - не смотреть на gld_transactions. В будущей версии профилировщиков CUDA должны использоваться другие метрики, которые более действенны и сопоставимы с предыдущими архитектурами.

Я бы порекомендовал посмотреть на l2_{read, write}_{транзакции, пропускная способность}.

Другие вопросы по тегам