Я не знаю, здесь ли это критическая точка, но я заметил следующее:
если вы посмотрите примеры кода nvidia (не знаете, где именно), вы обнаружите что-то вроде функции «разогрева», которая вызывается перед тем, как вызывается какое-то критическое ядро, которое должно измеряться.
Почему?
Поскольку драйвер nvidia будет динамически оптимизировать искусство управления процессором во время первого доступа (в вашем случае до timer1) каждый раз при выполнении программы. Будет много служебных данных. Это было не ясно для меня в течение длительного времени. Когда я сделал 10 пробежек, первая пробежка была оооочень бездарной. Теперь я знаю почему.
Решение: просто используйте фиктивную / разогревающую функцию, которая обращается к оборудованию GPU до начала реального выполнения вашего кода.