fmad = false дает хорошую производительность

Из примечаний к выпуску Nvidia:

 The nvcc compiler switch, --fmad (short name: -fmad), to control the contraction of    
 floating-point multiplies and add/subtracts into floating-point multiply-add   
 operations (FMAD, FFMA, or DFMA) has been added: 
 --fmad=true and --fmad=false enables and disables the contraction respectively. 
 This switch is supported only when the --gpu-architecture option is set with     
 compute_20, sm_20, or higher. For other architecture classes, the contraction is     
  always enabled. 
 The --use_fast_math option implies --fmad=true, and enables the contraction.

У меня есть два ядра - одно чисто вычислительное с большим количеством умножений, а другое - с памятью. Я замечаю постоянное улучшение производительности (около 5%) для моего интенсивного вычислительного ядра, когда я делаю-fmad=false... и примерно на том же процентном снижении производительности, когда я выключаю его для своего ядра с привязкой к памяти. Итак, FMA работает лучше для моего ядра с привязкой к памяти, но мое ядро с привязкой к вычислениям может немного снизить производительность, отключив его. Что может быть причиной? Мое устройство M2090, и я использую CUDA 4.2.

Варианты полной компиляции:-arch,sm_20,-ftz=true,-prec-div=false,-prec-sqrt=false,-use_fast_math,-fmad=false (или я просто удаляюfmad=false потому что это по умолчанию в любом случае.

Ответы на вопрос(1)

Ваш ответ на вопрос