我有以下结构:
struct Param
{
double** K_RP;
};
我想在CUDA中对“K_RP”执行以下操作
__global__ void Test( struct Param prop)
{
int ix = threadIdx.x;
int iy = threadIdx.y;
prop.K_RP[ix][iy]=2.0;
}
如果“prop”具有以下形式,我该如何进行“cudaMalloc”和“cudaMemcpy”操作?
int main( )
{
Param prop;
Param cuda_prop;
prop.K_RP=alloc2D(Imax,Jmax);
//cudaMalloc cuda_prop ?
//cudaMemcpyH2D prop to cuda_prop ?
Test<<< (1,1), (Imax,Jmax)>>> ( cuda_prop);
//cudaMemcpyD2H cuda_prop to prop ?
return (0);
}
答案 0 :(得分:3)
这样的问题不时被问到。如果您搜索cuda标签,您会找到各种带答案的示例。这是one example。
*
)案例执行此操作。**
)很困难,以至于大多数人会建议“展平”存储,以便可以通过单个指针(*
)进行处理。如果您真的想看看双指针(**
)方法的工作原理,请查看this question/answer。这不是一件轻而易举的事。