已弃用意味着不建议使用,并且下一个 CUDA 版本中可能会取消对它的支持.
给出了如何处理的描述here https://forums.developer.nvidia.com/t/cudamemcpytoarray-is-deprecated/71385/10.
对于将整个分配从主机复制到设备的典型用法,并且源(主机)分配是宽度的平坦(无间距)分配w
按高度排列的元素h
行,也许是这样的:
cudaMemcpyToArray(dst, 0, 0, src, h*w*sizeof(src[0]), cudaMemcpyHostToDevice)
您可以将其替换为:
cudaMemcpy2DToArray(dst, 0, 0, src, w*sizeof(src[0]) , w*sizeof(src[0]), h, cudaMemcpyHostToDevice);
替换 API (cudaMemcpy2DToArray
)已记录在案here https://docs.nvidia.com/cuda/cuda-runtime-api/group__CUDART__MEMORY.html#group__CUDART__MEMORY_1g9509226164aaa58baf0c5b8ed165df58.
请注意,在我给出的示例中,如果您没有意识到由行和列组成的“2D”分配,而是有一个单一的平面分配(比方说)w
元素,您可以简单地设置h=1
在上面的公式中。