異なる浮動小数点精度 (float / double) を対象とする通常の方法は、typedefs によるものです。
typedef float Real;
//typedef double Real;
またはテンプレートを使用して
template<typename Real>
...
これは便利ですが、CUDA 型の float2/float3/... と make_float2/make_float3/... を使用する方法を知っている人はいますか? 確かに、それらすべてに対して #defines または typedefs を作成できますが、それはあまりエレガントではないようです。