我正在搜索如何创建指针数组并将其复制到CUDA内存。我发现了这篇帖子CUDA Double pointer memory copy,但接受了答案中的以下一行
int ** devicePointersStoredInDeviceMemory;
cudaMalloc( (void**)&devicePointersStoredInDeviceMemory, sizeof(int*)*N);
有点烦我。
传递双指针地址并将其转换为void**
的含义是什么?
不会&devicePointerStoredInDeviceMemory
与int***
相同,那么为什么要将其投放到void**
而不是void***
?
它有效,但我不明白为什么。
答案 0 :(得分:1)
传递双指针的地址并将其转换为void **的含义是什么?不会& devicePointerStoredInDeviceMemory与int ***相同,那么为什么要将它转换为void **而不是void ***?
"@angular/common": "2.0.0",
"@angular/compiler": "2.0.0",
"@angular/core": "2.0.0",
"@angular/forms": "2.0.0",
"@angular/http": "2.0.0",
"@angular/material": "^2.0.0-alpha.9-3",
"@angular/platform-browser": "2.0.0",
"@angular/platform-browser-dynamic": "2.0.0",
"@angular/router": "3.0.0",
"rxjs": "5.0.0-beta.12"
函数将cudaMalloc
作为其第一个参数,因此如果我们要调用void **
,那就是我们需要的类型。第一个参数的目的是告诉cudaMalloc
将指针存储到我们分配的内存的位置。
你也可以这样做:
codaMalloc