我想知道当我分配一个结构然后分配(?)并复制相同结构的指针元素时,设备上发生了什么(内存方面).
我是否还需要cudaMalloc
元素*a?
示例代码:
typedef struct {
int *a;
...
} StructA;
int main()
{
int row, col, numS = 10; // defined at runtime
StructA *d_A = (StructA*)malloc(numS * sizeof(StructA));
int *h_A = d_a->a;
cudaMalloc( (void**)&(d_A), numS * sizeof(StructA) );
cudaMalloc( &(d_A->a), row*col*sizeof(int) ); // no (void**) needed?
cudaMemcpy( d_A->a, h_A, row*col*sizeof(int), cudaMemcpyHostToDevice );
kernel<<<grid, block>>>(d_A); // Passing pointer to StructA in device
...
}
Run Code Online (Sandbox Code Playgroud)
内核定义:
__global__ kernel(StructA *d_A)
{
d_A->a = ...;
... …
Run Code Online (Sandbox Code Playgroud)