如何在CUDA设备上为thrust :: vector添加值?
我想做一些事情(内核中的push_back):
__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;
}
好的,我尝试不同
__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;
}