Сохранение кэша L1 в ядрах CUDA

Я понимаю, что общая память на GPU не сохраняется в разных ядрах. Однако сохраняется ли кеш L1 при разных вызовах ядра?


person gmemon    schedule 02.07.2012    source источник
comment
В исследовательской работе оценивалась возможность сохранения данных в кэше L2: dl.acm.org/citation. .cfm?id=2159443 Этой функции нет в существующих графических процессорах.   -  person Heatsink    schedule 04.07.2012


Ответы (1)


Кэш SM L1 становится недействительным между всеми операциями в одном и том же потоке или пустом потоке, чтобы гарантировать согласованность. Но на самом деле это не имеет значения, потому что кэш L1 на графических процессорах на самом деле не предназначен для улучшения временной локальности в данном потоке выполнения. В массивно-параллельном процессоре важна параллельная пространственная локальность. Это означает, что вы хотите, чтобы потоки, которые выполняются рядом друг с другом, имели доступ к данным, которые находятся рядом друг с другом.

Когда выполняется загрузка кэшированной памяти, это делается для одного варпа, и в кеше хранятся строки(и) кеша, к которым обращаются потоки в этом варпе (в идеале только одна строка). Если следующий варп обращается к той же строке (строкам) кеша, то кеш сработает, и задержка уменьшится. В противном случае кеш будет обновляться разными строками кеша. Если доступ к памяти очень разбросан, то более поздние варпы, вероятно, вытеснят строки кэша из более ранних варпов, прежде чем они будут использованы повторно.

К тому времени, когда запустится другое ядро, маловероятно, что данные в кеше будут действительными, потому что многие деформации, вероятно, были запущены этим SM для предыдущего ядра, поэтому на самом деле не имеет значения, сохраняются ли они.

person harrism    schedule 02.07.2012
comment
Спасибо за ответ. Есть ли способ убедиться, что кеш недействителен при разных вызовах ядра? Я ищу пространственную, а также временную локальность :) - person gmemon; 02.07.2012
comment
Кэш SM L1 становится недействительным между всеми операциями в одном и том же потоке или пустом потоке, чтобы гарантировать согласованность. - person Greg Smith; 03.07.2012
comment
Заменил мое, я думаю, заявлением Грега выше. - person harrism; 04.07.2012
comment
Графический конвейер, кажется, сильно выигрывает от этого. ссылка - person Gunay Orbay; 24.01.2019