Cuda推力::device_vector从特定范围获取指针
Cuda thrust::device_vector get pointer from specific range
我有一个向量的向量:
thrust::device_vector weights_;
这是连续量的存储器,其中每个w项,表示矢量。
在我的一个函数中,我将该范围的开始和结束作为参数传递,如下所示:
__host__ ann::d_vector ann::prop_layer (
unsigned int weights_begin,
unsigned int weights_end,
ann::d_vector & input
) const
然后,我去复制到一个新的向量中,这个范围,然后得到一个可以在内核中使用的原始指针:
thrust::device_vector<float> weights ( weights_.begin() + weights_begin,
weights_.begin() + weights_end );
float * weight_ptr = thrust::raw_pointer_cast( weights.data() );
some_kernel<<<numBlocks,numThreads>>>( weight_ptr, weight.size() );
- 我可以在不首先将指针复制到新向量的情况下从该范围中获取指针吗?对我来说,这似乎是一种浪费
- 如果我无法从该范围中获取指针,我至少可以在不复制实际值的情况下为该范围分配一个向量吗
我可以在不首先将指针复制到新向量的情况下从该范围中获取指针吗?对我来说,这似乎是一种浪费。
是的,你可以得到一个指向该范围的指针。
float * weight_ptr = thrust::raw_pointer_cast( weights_.data() ) + weights_begin;
如果我无法从该范围中获取指针,我至少可以在不复制实际值的情况下为该范围分配一个向量吗?
不,推力矢量不能在现有数据之上实例化。
相关文章:
- 在 gcc/clang (C++) 中获取函数范围之外的标签地址
- 解析模板和范围后获取编译文件?
- 如何获取特定范围内的地图lower_bound?
- 从(排序的)数字列表中获取数字范围
- QT图表:如何获取QAbstractAxis的范围?
- 在<Object>基于范围的 for 循环中从 std::vector 获取指向对象的指针
- 在某些范围更新后获取整数数组的最终状态的有效算法是什么?
- 获取变量的中间范围值
- 范围 V3:获取基本迭代器
- 如何在标题文件中获取成员功能的正确代码覆盖范围
- 直接获取基于范围的循环中的元素类型 **例如"using"
- 给定 N 个范围.有多少种方法可以从这些范围中获取 N 个数字,这些数字的总和达到某个值
- 获取提升程序选项以在函数范围之后保留
- 为什么基于范围的 for 语句通过 auto&& 获取范围?
- 如何获取当前的 Windows 系统范围的计时器分辨率
- 获取迭代器范围的每个第 n 个元素
- 按字典顺序从范围中获取下一个数字(不包含所有字符串的容器)
- 在基于范围的 for 循环中获取无效引用
- 向量故障中的shared_ptr-迭代和丢失范围-获取损坏的数据
- Cuda推力::device_vector从特定范围获取指针