关于你的两个问题,
1)有多方面的资料。一般的来说,对于local memory访问,因为总是存在强制性自动交错的。即warp中的32个线程,每个人拿到的相同的1个4B变量地址(local memory中),实际上的地址会被自动交错到连续的128B上。所以一般来说local memory你无需担忧。可以认为是正常情况下总是100%合并的L1 - L2 - 显存的访问(在你的计算能力架构是上)。
而对于global memory的访问,在你的计算能力架构上,读取是会通过L1 <- L2 <- 显存或者内存的。而写入则一般会L1 -> L2, 然后再不定的时候L2 -> 显存/内存。你搜索nvidia + gpu + l1 write through + l2 write back,可以获取更多信息。
2) 你的第二个问题,虽然你询问的是L1的hit ratio,这个不一定是越高越好,要看问题(例如streaming风格的访问,例如常见的2个向量的加法,直接回写显存)。但是profiler给出的另外一个方面是一个重大问题,它指出(你没有源代码)你的global memory的load和store,均是warp里的每个线程地址分散的很厉害的情况。虽然看不到代码,但是建议先解决这个问题,再看时间和cache命中率的变化。可能你解决了这个问题,你发现你不在需要解决问题2了。