Throw transform throws error: «bulk_kernel_by_value: обнаружен недопустимый доступ к памяти»

Я довольно новичок в CUDA / Thrust и у меня проблема с фрагментом кода. Чтобы облегчить, я сократил это до минимума. Код следующий:

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));
}

Идея состоит в том, что я могу передать любую функцию функтору, чтобы применить эту функцию к каждому элементу в векторе. К сожалению, я не уверен, почему я получаю описанную ошибку. Я компилирую с-w -O3 -shared -arch=sm_20 -std=c++11 -DTHRUST_DEBUG

Я благодарен за любую помощь, которую вы все можете мне дать :)

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

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