thrust :: device_vector в CUDA [дубликат]

На этот вопрос уже есть ответ:

Надежность внутри написанных пользователем ядер 4 ответа

Я новичок в CUDA и пытаюсь изучить использование. Может кто-нибудь, пожалуйста, помогите. У меня есть следующее в основной функции (я нахожусь в Visual Studio, и мои исходные и заголовочные файлы .cu и .cuh соответственно)

 thrust::device_vector<float> d_vec(100);
 kernel<<<100,1>>>(d_vec);

а потом в ядре у меня есть

    template <typename T> __global__ kernel(thrust::device_vector<T> d_vec)
    {  int tid = threadIdx.x + blockIdx.x*blockDim.x;
       T xxx = 3.0;
       d_vec[tid] = xxx;
     }

ель @my - вызывать ядро один раз с плавающей точкой и один раз с двойным. Также обратите внимание, что в этом простом примере у меня есть переменная ххх (которая в моем реальном случае является некоторым вычислением, производящим двойные числа или числа с плавающей запятой).

и я получаю две ошибки: 1> вызов__host__ function (operator =) из__global__ функция не разрешена 2> вызов__host__ function (оператор []) из__global__ функция не разрешена

Так что я думаю, "[]" и "=" в "d_vec [tid] = .." - это проблема. Но мой вопрос - как мне получить доступ к вектору устройства внутри моего ядра? Может кто-нибудь уточнить, пожалуйста, что такое правильная процедура и что я делаю не так. заранее спасиб

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

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