NVIDIA launched Maxwell GPUs for a while, but as I read the Maxwell Setup Guide, I was confused about the functionality of the L1 cache. In the Kepler era, access to global memory was cached only in L2, and L1 was used to cache access to local memory, which was caused by the spill of registries. From reading an NVIDIA document, this caching of local memory is the only thing I know that will be useful for L1 cache. However, in section 1.4.2.1 of the โMaxwell Configuration Guideโ, NVIDIA says:
Like Kepler, the first generation Maxwell global loads are cached only in L2 ... Local loads are also cached only in L2
CUDA 6.0 added two new device attributes globalL1CacheSupported and localL1CacheSupported to check if the device supports the global L1 cache and L1 local memory cache, so I checked these two attributes on the GTX 780 and GTX 980 cards, and the result confuses me even more:
globalL1CacheSupported localL1CacheSupported
GTX780 1 1
GTX980 0 0
Result The GTX 980 checks the statement in the Maxwell Configuration Guide, which puzzles me, because if so, what is the L1 cache used for? Another thing I canโt understand is the GTK 780 is a GK110 card, from white paper GK110, Keper also caches global memory access only in L2, so it makes no sense to me that globalL1CacheSupported returns 1 for a GTX 780 card. I hope , someone can clarify my riddle.