Скопировать из std :: deque в тягу device_vector

Я пытаюсь сделать пример кода, где я копирую из std::deque к thrust::device_vector но компилятор предупреждает calling a __host__ function from a __host__ __device__ function is not allowed (Я попытался скопировать и вставить всю ошибку здесь, но это за пределами символов в вопросах). Я могу опубликовать более подробную информацию, если это необходимо.

Код успешно компилируется, но меня очень раздражают эти ошибки, так как они не происходят с другими контейнерами stl, так как std::list а также std::vector,
Я хочу знать, почему они происходят, и как мне исправить эти предупреждения.

Здесь nvcc --version результат:

nvcc: драйвер компилятора NVIDIA (C) Cuda
Copyright (c) 2005-2016 NVIDIA Corporation
Построен в Вт_Ян_10_13: 22: 03_CST_2017
Инструменты для компиляции Cuda, выпуск 8.0, V8.0.61

Вот мой пример кода

#include <iostream>
#include <algorithm>
#include <deque>
#include <thrust/device_vector.h>

const uint size = 100;

__global__
void hello (int *a) {
a[threadIdx.x] += threadIdx.x;
}

int main (int argc, const char **argv) {
std::deque<int> a(size);
std::fill(a.begin(), a.end(), 1);

thrust::device_vector<int> a_cuda(a.begin(), a.end());

dim3 dimBlock(size, 1);
dim3 dimGrid(1, 1);
hello<<< dimGrid, dimBlock >>>(thrust::raw_pointer_cast(&a_cuda[0]));

thrust::copy(a_cuda.begin(), a_cuda.end(), a.begin());

for (const int i : a) {
std::cout << i << ' ';
}

std::cout << std::endl;

return EXIT_SUCCESS;
}

И вот команда, которую я использую для компиляции:

nvcc file.cu -std = c ++ 11 -O3 -o привет

заранее спасибо

2

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]