NVIDIA запустила графические процессоры Maxwell на некоторое время, но, читая «Руководство по настройке Maxwell», я был смущен функциональностью кеша L1. В эпоху Кеплера доступ к глобальной памяти был кэширован только в L2, а L1 используется для кэширования доступа к локальной памяти, что вызвано разливом реестров. Из чтения документа NVIDIA это кэширование локальной памяти - единственное, что я знаю, что выиграет от кеша L1. Тем не менее, в разделе 1.4.2.1 из «Максвелл Руководство по настройке», NVIDIA говорит:Что такое кеш L1, используемый для графических процессоров NVIDIA maxwell?
Как Kepler, глобальные нагрузки в первом поколении Максвелла кэшируются в L2 только ... Местные нагрузки также кэшируются в L2 только
CUDA 6.0 добавлено два новых атрибутов устройства globalL1CacheSupported и localL1CacheSupported, чтобы проверить, если устройство поддерживает глобальной памяти L1 кэш и локальной памяти L1 кэш, так что я сделал тест на этих двух атрибутов как GTX 780 и GTX 980, и результат меня еще больше смущает:
globalL1CacheSupported localL1CacheSupported
GTX780 1 1
GTX980 0 0
Результат от GTX 980 подтверждает утверждение в «Руководстве по настройке Maxwell», которое меня озадачивает, потому что, если это так, то для чего используется кеш L1? Еще одна вещь, которую я не могу понять, это GTK 780 - это карта GK110, из белой бумаги GK110, Keper также кэширует доступ к глобальной памяти только в L2, поэтому мне не имеет смысла, что globalL1CacheSupported возвращает 1 для карты GTX 780. Надеюсь, кто-то может прояснить мою загадку.
Я не уверен, что я должен принять ваш ответ. Как вы сказали, L1 абсолютно бесполезен, кроме того, что я «отказываюсь» использовать его. Это действительно странно для меня. Во всяком случае, я подожду еще два дня и приму свой ответ, если не появится лучшее решение.Но я очень благодарен за ваш ответ, спасибо Роберту. –