如何在CUDA内核中累积向量

时间:2017-04-25 13:56:44

标签: c++ cuda

如何在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;
}

0 个答案:

没有答案