Программирование CUDA - кеши L1 и L2
Не могли бы вы объяснить разницу между использованием кешей "L1 и L2" или кеша "только L2" в программировании CUDA? Чего мне ожидать во время исполнения? Когда я мог ожидать меньшее время GPU? Когда я включаю оба кэша L1 и L2 или просто включаю L2? Спасибо
1 ответ
Обычно вы оставляете включенными кеши L1 и L2. Вы должны попытаться как можно больше объединить доступ к вашей памяти, т. Е. Потоки внутри деформации должны как можно больше получать доступ к данным в том же сегменте 128B (см. Руководство по программированию CUDA для получения дополнительной информации по этой теме).
Некоторые программы не могут быть оптимизированы таким образом, например, их обращения к памяти являются абсолютно случайными. Для этих случаев может быть полезно обойти кэш L1, тем самым избегая загрузки всей строки 128B, когда вам нужно только, например, 4 байта (вы все равно загрузите 32B, так как это минимум). Очевидно, что есть повышение эффективности: 4 полезных байта с 128 улучшены до 4 с 32.