How to add a value to a thrust::vector on the CUDA device ?
I want to do something like (push_back in kernel):
__global__ void genVect( thrust::device_vector<int> & D )
{
int i = threadIdx.x + blockIdx.x * blockDim.x;
int j = i*i*i;
D.push_back( j ); // i need this method in kernel
}
int main(void)
{
thrust::device_vector<int> D;
genVect<<< 1, 10 >>>( D );
for(int i = 0; i < D.size(); i++) std::cout << D[i] << std::endl;
return 0;
}
ok, i try differently
__global__ void genVect( int * p )
{
int i = threadIdx.x + blockIdx.x * blockDim.x;
int j = i*i*i;
p->push_back( j ); // where is push_back()
}
int main(void)
{
thrust::device_vector<int> & D ;
int * pD = thrust::raw_pointer_cast(D.data());
genVect<<< 1, 100 >>>( pD );
for(int i = 0; i < 100; i++) std::cout << D[i] << std::endl;
return 0;
}