В моей программе CUDA используются только теги float
, int
, short
и char
. Ни один из входных или выходных массивов не имеет элементов типа double
. И ни один из ядер не создает во всех вычислениях тип double
внутри них.
Эта программа была скомпилирована с использованием CUDA SDK 5.5 в режиме Release с использованием NSight Eclipse. Типичная строка компиляции выглядит так:
nvcc -O3 -gencode arch=compute_35,code=sm_35 -M -o "src/foo.d" "../src/foo.cu"
Я запускаю эту программу на GTX Titan в Linux. К моему удивлению, я заметил, что эта программа работает на 10% быстрее, когда я включаю полноскоростной режим FP64 на Titan. Это можно сделать, включив опцию CUDA Double Precision в программе настройки сервера NVIDIA X.
В то время как я рад этому бесплатному бонусу за скорость, я хотел бы узнать причины, по которым плавающая программа CUDA может ускориться в режиме FP64?