Error de lanzamiento de transformación de empuje: "bulk_kernel_by_value: se encontró un acceso ilegal a la memoria"

Soy bastante nuevo en CUDA / Thrust y tengo un problema con un fragmento de código. Para hacerlo más fácil, lo he reducido al mínimo. El código es el siguiente:

struct functor{
functor(float (*g)(const float&)) : _g{g} {}

__host__ __device__ float operator()(const float& x) const { 
        return _g(x);
    }
private:
    float (*_g)(const float&);
};

__host__ __device__ float g(const float& x){return 3*x;}

int main(void){
thrust::device_vector<float> X(4,1);
thrust::transform(X.begin(), X.end(), X.begin(), functor(&g));
}

La idea es que puedo pasar cualquier función al functor, por lo que puedo aplicar esa función a cada elemento en un Vector. Lamentablemente, no estoy seguro de por qué me sale el error descrito. Compilo con-w -O3 -shared -arch=sm_20 -std=c++11 -DTHRUST_DEBUG

Estoy agradecido por cualquier ayuda que me puedan brindar :)

Respuestas a la pregunta(1)

Su respuesta a la pregunta