gpt4 book ai didi

c++ - CUDA 4.1 问题

转载 作者:太空狗 更新时间:2023-10-29 23:19:24 25 4
gpt4 key购买 nike

我刚刚从 4.0 更新到最新(发布)的 CUDA 4.1,我的所有项目都无法正常运行。此外,问题似乎不稳定。我能理解的是,一些指向设备内存的指针在 cudaMalloc 之后仍然是 NULL,但这不会立即发生。 Nsight 和可视化分析器告诉我一些与内存相关的函数(cudaMemcpy 等)正在返回未知错误标志。 cudaStreamQuery 也主要返回未就绪流标志。

抱歉含糊不清,但这就是它的要点。不同的项目以不同的方式表现问题,但主要是空指针。

任何人都知道是什么给了?

更新: 好吧,在其中一个项目中,Nsight 调试器标记内存负载超出范围,但我仍然不明白为什么。这以前有效。此外,鉴于代码,CUDA 调试器说我正在尝试访问的地址没有多大意义:

        //  Get the mask pixel, if it has been supplied.
if (maskImage != NULL)
maskPixel = *(static_cast<uchar*>(maskImage->imageData) + maskImage->widthStep * (int) yPosition + (int) xPosition);

现在,根据调试器,整个 warp 正试图访问越界地址。但是 yPositionxPosition 值都小于 mask 尺寸!此外,此 warp 中的所有线程(少数除外)尝试访问的地址是 0x200000002。我无法理解它。

更新 2: 我已经解决了最后一个问题 - 正如预期的那样,这是用户错误。现在我在另一个项目中得到了另一个,这次,我可以确认它与 CUDA 4.1 相关。 cudaBindTexture2D() 引发了一个 invalid argument 错误,而以前没有。我猜这是纹理对齐问题?

最佳答案

正如我上面所说,CUDA 在 cudaBindTexture2D() 上失败了。我通过确保内存分配良好对齐来解决这个问题;特别是,我通过将 cudaMalloc() 替换为 cudaMallocPitch() 来更改所有 2D(图像)分配以使用倾斜内存。这会处理对齐问题。

关于c++ - CUDA 4.1 问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9113972/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com