У меня был небольшой проект, в котором я использовал CUDA, и я помню, что float там тоже был быстрее, чем double. На этот раз трафик между хостом и устройством ниже (хост - это ЦП, а «нормальная» ОЗУ, а устройство - это графический процессор и соответствующая ОЗУ). Но даже если данные постоянно находятся на устройстве, это медленнее. Думаю, я где-то читал, что это изменилось недавно или должно измениться в следующем поколении, но я не уверен.
Таким образом, кажется, что графический процессор просто не может изначально обрабатывать двойную точность в этих случаях, что также объясняет, почему обычно используется GLFloat, а не GLDouble.
(Как я уже сказал, это насколько я помню, я просто наткнулся на это, когда искал float vs. double на CPU.)