thrust::device_vector in CUDA
thrust::device_vector in CUDA
我是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(在我的实际情况中,它是一些产生双精度或浮点数的计算)。
得到两个错误:1>不允许从__global__
函数调用__host__
函数(operator =)2>不允许从__global__
函数调用__host__
函数(operator [])
所以我猜"[]"answers"="在"d_vec[tid] = .."是问题所在。但我的问题是我如何访问我的内核内的设备矢量。有人可以澄清什么是正确的程序和我做错了什么。提前感谢
thrust::device_vector对象/引用不能用作内核参数。您可以使用原始指针来传递设备向量数据。
thrust::device_vector<float> d_vec(100);
float* pd_vec = thrust::raw_pointer_cast(d_vec.data());
kernel<<<100,1>>>(pd_vec);
这是内核的原型
template <typename T> __global__ kernel(T* pd_vec)
你的Q和这个差不多。如何转换推力::device_vector
相关文章:
- netcat command in c++
- Difference in displaying cv2 Mat
- 编译时未启用intel oneApi CUDA支持
- 在cuda线程之间共享大量常量数据
- 为什么即使使用-cudart-static进行编译,库用户仍然需要链接到cuda运行时
- Cuda C++:设备上的Malloc类,并用来自主机的数据填充它
- C++ MFC Libraries in Travis CI
- CUDA内核和数学函数的显式命名空间
- 如何在OpenSSL中从configuration.h.in获取configuration.h
- CUDA:统一内存和指针地址的更改
- 创建具有 new in 函数和"this is nullptr"异常的对象
- IN, OUT, INOUT Parameters
- 应用程序崩溃并显示"symbol _ZdlPvm, version Qt_5 not defined in file libQt5Core.so.5 with link time reference"
- cuda 10.2 in Qt 5.14 ubuntu 18.04
- <<< >>> cuda in vscode
- Performance in CUDA
- float(0.0) vs 0.0f in CUDA
- 64bit atomicAdd in CUDA
- count3's in cuda is very slow
- thrust::device_vector in CUDA