1
在GPGPU上,用cuda我的問題是: 我有一個256個元素的矢量,我想創建一個程序,零值並將它們複製到另一個矢量。CUDA:將矢量的非零值位置複製到另一個
請幫我。
我的代碼不工作:
dev_Hist:是數據,初始向量的來源;
dev_Xn:是非零的矢量值上dev_Hist位置;
NN:非零的個數上dev_Hist值
1.內核調用:
gpu_Xn<<<1, nN>>>(dev_Hist, nN, dev_Xn) ;
2.設備功能
__global__ void gpu_Xn(int *pHist, int pnN, int* pXn)
{
int Tid ;
Tid = threadIdx.x ;
__shared__ T tmpXn[256] ;
tmpXn[Tid] = 0 ;
__syncthreads() ;
__shared__ int idx ;
if(Tid == 0)
idx = -1 ;
syncthreads() ;
if(pHist[Tid] !=0)
{
atomicAdd(&idx, 1) ;
tmpXn[idx] = Tid ;
}
__syncthreads() ;
if(Tid < pnN)
pXn[Tid] = tmpXn[Tid] ;
}
謝謝預先