I have the following (compilable and executable) code using CUDA Thrust to perform reductions of float2 arrays. It works correctly
float2
using namespa
This is a known incompatibility with MSVC and nvcc. See here for example. The solution is to define your own version of double2 and use that instead.
double2
Just for reference, I can compile and run your code correctly on a Linux 64 bit box with CUDA 5.5.