【发布时间】:2021-01-01 09:36:45
【问题描述】:
所以我尝试开始使用 GPU 编程并使用 Thrust 库来简化事情。 我已经创建了一个测试程序来使用它并查看它是如何工作的,但是每当我尝试创建一个非零大小的推力::device_vector 时,程序就会因“运行时检查失败 #3 - 变量‘结果’而崩溃正在使用而未初始化。 (这来自 allocator_traits.inl 文件)而且......我不知道如何解决这个问题。 以下是导致此错误所需的全部内容。
#include <thrust/device_vector.h>
int main()
{
int N = 100;
thrust::device_vector<int> d_a(N);
return 0;
}
我怀疑这可能是环境设置的问题,因此详细信息... 使用 Visual Studio 2019 创建,在 CUDA 11.0 运行时项目中(但是打开此项目时给出的示例程序可以正常工作),Thrust 版本 1.9,给定的 GPU 是 GTX 970。
【问题讨论】:
-
如果你改成
{ thrust::device_vector<int> d_a(N); }会发生什么 -
您正在构建调试项目吗?尝试切换到发布项目。如果这对您来说是个问题,我建议使用说明here 在 developer.nvidia.com 上提交错误。 FWIW,作为一个简单的测试,我可以单击对话框上的“忽略”,否则运行/调试 CUDA 程序。您还可能会在执行结束时看到一个对话框,您也可以单击忽略。这似乎只体现在调试项目中。 (也许只有 CUDA 11。我无法重现 CUDA 10.1 的问题)
-
切换到发布或忽略弹出窗口有效。我没想到程序之后会继续正常运行,但考虑到它被指定为调试错误,这有点道理。非常感谢!