gpt4 book ai didi

c++ - CUDA 中的 thrust::device_vector

转载 作者:行者123 更新时间:2023-11-28 00:50:23 32 4
gpt4 key购买 nike

<分区>

我是 CUDA 的新手,正在尝试学习用法。有人可以帮忙吗?我在主要功能中有以下内容(我在 visual studio 中,我的源文件和头文件分别是 .cu 和 .cuh)

 thrust::device_vector<float> d_vec(100);
kernel<<<100,1>>>(d_vec);

然后在内核中我有

    template <typename T> __global__ kernel(thrust::device_vector<T> d_vec)
{ int tid = threadIdx.x + blockIdx.x*blockDim.x;
T xxx = 3.0;
d_vec[tid] = xxx;
}

我的目标是用 float 调用内核一次,用 double 调用一次。另请注意,在这个简单的示例中,我有变量 xxx(在我的实际情况中是一些计算产生 double 或 float )。

我得到两个错误:1> 不允许从 __global__ 函数调用 __host__ 函数 (operator =)2> 不允许从 __global__ 函数调用 __host__ 函数(operator [])

所以我猜“d_vec[tid] = ..”中的“[]”和“=”是问题所在。但我的问题是如何访问内核中的设备 vector 。有人可以澄清什么是正确的程序以及我做错了什么。提前致谢

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