Предположим, вы говорите о кеше данных L2 в Fermi.
Я думаю, что кеши сбрасываются после каждого вызова ядра. По моему опыту, выполнение двух последовательных запусков одного и того же ядра с большим количеством обращений к памяти (и отсутствием кэша # L2) не вносит существенных изменений в статистику кэша L1 / L2.
В вашей проблеме, я думаю, в зависимости от зависимости от данных, можно поместить два этапа в одно ядро (с некоторой синхронизацией), чтобы вторая часть ядра могла повторно использовать данные, обработанные первой частью.
Вот еще одна хитрость: вы знаете, что у gpu есть, например, N SM, вы можете выполнить первую часть, используя первые блоки N * M1. Следующие блоки N * M2 для второй части. Убедитесь, что все блоки в первой части заканчиваются одновременно (или почти) с использованием синхронизации. По моему опыту, порядок планирования блоков действительно детерминирован.
Надеюсь, это поможет.