cuda - 为什么我收到有关 cudaMemcpyToArray(...) 已弃用的警告?

标签 cuda compiler-warnings

此警告是什么以及如何修复它?

warning: ‘cudaError_t cudaMemcpyToArray(cudaArray_t, size_t, size_t, const void*, size_t, cudaMemcpyKind)’ is deprecated [-Wdeprecated-declarations]

最佳答案

已弃用意味着不建议使用它,并且在下一个 CUDA 版本中可能会删除对它的支持

here 给出了如何处理的描述。 .

对于将整个分配从主机复制到设备的典型用法,源(主机)分配是宽度 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 .

请注意,在我给出的示例中,如果您没有意识到由行和列组成的“2D”分配,而是有一个单一的平面分配(比方说)w元素,您只需在上面的公式中设置 h=1 即可。

关于cuda - 为什么我收到有关 cudaMemcpyToArray(...) 已弃用的警告?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67772887/

相关文章:

arrays - CUDA中的一维最小卷积

android - 为 Tegra GPU 编程需要什么

c++11 - 具有 c++11 支持的 CUDA NSight 7.0 - 在哪里设置?

object - 我如何摆脱这个 'warning: the expression is unused' 警告?

c++ - 是否存在 C4930 Visual C++ 警告未指示错误的真实案例?

xcode - 仅在 xcode 的实时检查中禁用特定警告

cuda - 什么时候可以在 Volta+ 上独立调度 warp 线程?

visual-studio-2010 - OpenCV GPU程序未运行

c++ - 为什么 'control reaches end of non-void function' 只是一个警告?合法吗?

java - 为方法参数分配新值是否有问题?