cudaMalloc第一个参数演员,为什么?

时间:2015-01-28 08:53:26

标签: cuda gpgpu

版本后: 我想知道为什么cudaMalloc的第一个参数应该转换为void** ,例如(void**)&d_A其中d_A是指针。我不理解语法,但特别是使用它的内容 cudaError_t cudaMalloc(void ** devPtr,         size_t size
    )

干杯

2 个答案:

答案 0 :(得分:4)

从来没有必要为void**转换为cudaMemcpy,因为它需要void*。您可能会对{em> <{1}}的{​​{1}}感到困惑。

从任何指针类型到cudaMalloc的转换隐含在C中,但在C ++中则不需要强制转换。

答案 1 :(得分:0)

来自NVidia教程:

int main()
{
    int a[N], b[N], c[N];
    int *dev_a, *dev_b, *dev_c;
    // I deleted the code here, we don't need it
    cudaMemcpy(dev_a, a, N * sizeof(int), cudaMemcpyHostToDevice);
}

似乎没有必要将cudaMemcpy的第一个参数转换为void **。但是,您可能必须将其转换为void *。