cuda - 无法创建推力设备向量

标签 cuda thrust

因此,我尝试开始 GPU 编程并使用 Thrust 库来简化事情。 我已经创建了一个测试程序来使用它并查看它是如何工作的,但是每当我尝试创建一个非零大小的 thrust::device_vector 时,程序就会崩溃并显示“运行时检查失败#3 - 变量'result'正在使用而没有被初始化。' (这来自 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 Runtime 项目中(但是打开此项目时给出的示例程序运行良好),Thrust 版本 1.9,给定的 GPU 是 GTX 970。

最佳答案

这个问题似乎只出现在与 CUDA 11.0 关联的推力版本 (1.9.x) 中,并且只出现在 Windows/Visual Studio 上的调试项目中。

一些解决方法是切换到构建发布项目,或者只需单击运行时出现的对话框上的“忽略”。根据我的测试,这允许在此时进行普通运行或调试。

我还没有确认,但我相信这个问题在最新的 thrust 中得到了修复(1.10.x) 刚刚发布(虽然目前还不是任何正式 CUDA 版本的一部分,但我希望它会成为 future 某个 CUDA 版本的一部分)。

关于cuda - 无法创建推力设备向量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63888117/

相关文章:

cuda - 我可以在编译时通过 #define 获得 CUDA 计算能力(版本)吗?

c++ - 推力::复杂的推力::device_vector编译错误,可能是由于错误的实现

CUDA推力矢量专门扩展

c++ - 返回推力二值函数

cuda - 为什么编译器会给出错误?

c++ - thrust::binary_search 在运行时失败,执行策略指定了用户流

CUDA 和 nvcc : using the preprocessor to choose between float or double

cuda - cudaMemcpyToSymbol 的问题

c++ - 在内核外使用 CUDA printf 打印设备变量

c++ - Thrust/CUDA reduce_by_key 给出不确定的结果