小编mre*_*rei的帖子

cudaMalloc的结构和相同结构的元素

我想知道当我分配一个结构然后分配(?)并复制相同结构的指针元素时,设备上发生了什么(内存方面).

我是否还需要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)

c c++ memory-management cuda

3
推荐指数
1
解决办法
980
查看次数

标签 统计

c ×1

c++ ×1

cuda ×1

memory-management ×1