版主您好 我在编写程序是使用到了二级指针,总是出错,说分配显存失败,是不是CUDA上不能使用二级指针啊
我的代码如下
int dev_a =0;
checkCudaErrors(cudaMalloc((void)&(*(dev_a)), arraySize * sizeof(int)));
其中dev_a就是二级指针。
就这两行??
你需要先分配行指针,然后再给行指针分配一维显存。二级指针每次访问都需要两次寻址,很费时。
建议你用这个函数:cudaMallocPitch ,专门申请二维空间(但不是返回二级指针,是一级指针,带状存储二维空间),用法自己看手册吧。
LZ您好:
1:可以用的。
2:可以用不代表LZ您的写法正确,请勿随便怀疑CUDA。
实际上二级指针,二维数组,结构体内的指针这类问题已经反复在论坛中讨论过了,请参照如下旧帖:
http://cudazone.nvidia.cn/forum/forum.php?mod=viewthread&tid=7056
http://cudazone.nvidia.cn/forum/forum.php?mod=viewthread&tid=6810
http://cudazone.nvidia.cn/forum/forum.php?mod=viewthread&tid=6439
http://cudazone.nvidia.cn/forum/forum.php?mod=viewthread&tid=6820
http://cudazone.nvidia.cn/forum/forum.php?mod=viewthread&tid=6718
http://cudazone.nvidia.cn/forum/forum.php?mod=viewthread&tid=6248
http://cudazone.nvidia.cn/forum/forum.php?mod=viewthread&tid=6326
祝您好运~