* Изменено * 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}_{транзакции, пропускная способность}.