Статистика GPU L1 и L2 кеша - PullRequest
       69

Статистика GPU L1 и L2 кеша

5 голосов
/ 19 сентября 2011

Я написал несколько простых тестов, которые выполняют серию глобальных обращений к памяти.Когда я измерял статистику кэша L1 и L2, я обнаружил, что (в GTX580, который имеет 16 SM):

 total L1 cache misses * 16 != total L2 cache queries

Действительно, правая сторона намного выше левой (примерно в пять раз),Я слышал, что некоторые разливы регистров могут быть помещены и в L2.Но в моем ядре всего 28 регистров, не так много.Интересно, что будет источником этой разницы?Или я неправильно понимаю значение этих счетчиков производительности?

Спасибо

Ответы [ 2 ]

2 голосов
/ 28 ноября 2011

Руководство по программированию cuda G.4.2 раздел:

Доступ к глобальной памяти кэшируется. Используя флаг компиляции –dlcm, их можно настроить во время компиляции для кэширования в L1 и L2 (-Xptxas -dlcm = ca) (это настройка по умолчанию) или только в L2 (-Xptxas -dlcm = cg). Строка кэша имеет размер 128 байт и соответствует 128-байтовому выровненному сегменту в памяти устройства. Доступы к памяти, которые кэшируются как в L1, так и в L2, обслуживаются 128-байтовыми транзакциями памяти, тогда как доступы к памяти, которые кэшируются только в L2, обслуживаются 32-байтовыми транзакциями памяти. Следовательно, кэширование только в L2 может уменьшить чрезмерную выборку, например, в случае доступа к разрозненной памяти.

1 голос
/ 28 ноября 2011

Это может быть связано с тем, что чтение из L1 имеет длину 128 байт, а чтение из L2 - 32 байта.

...