vector - CUDA推力库: How can I create a host_vector of host_vectors of integers?

标签 vector thrust

在 C++ 中,为了创建一个包含 10 个整数向量的向量,我将执行以下操作:

  std::vector< std::vector<int> > test(10);

因为我认为 Thrust 使用与 STL 相同的逻辑,所以我尝试做同样的事情:

  thrust::host_vector< thrust::host_vector<int> > test(10);

但是我遇到了太多令人困惑的错误。我尝试这样做:

  thrust::host_vector< thrust::host_vector<int> > test;

它有效,但是我无法向这个向量添加任何内容。正在做

  thrust::host_vector<int> temp(3);
  test.push_back(temp);

会给我同样的错误(太多而无法将它们粘贴到此处)。

另外,一般来说,在使用 Thrust 时,使用 host_vector 和 STL 的 vector 之间有区别吗?

提前谢谢

最佳答案

Thrust 的容器仅设计用于 POD(普通旧数据)类型。无法通过在推力中实例化“向量的向量”来创建多维向量,主要是因为 GPU 端的限制导致无法在设备代码路径中传递和使用。

C++ 标准库类型和算法与这些 STL 派生模型的推力主机实现之间存在一定程度的兼容性,但是当您想要同时使用主机和设备库后端时,您应该真正坚持使用主机向量。

关于vector - CUDA推力库: How can I create a host_vector of host_vectors of integers?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15869049/

相关文章:

c++ - 如何 thrust::make_transform_iterator 取消引用 device_ptr?

lambda - CUDA 推力快捷数学函数

r - 给定向量长度的向量到 r 中的数据帧

c++ - 理解查找和 vector C++

boost::shared_ptr vector 的 C++ 静态初始化

c++ - 我如何根据另一个预先排序的字符串 vector 来排序包含字符串的 vector ?

c++ - 如何使用迭代器从文件中读取 n 个字节并将它们放入 vector<uint8_t> 中?

cuda - Thrust::transform 自定义函数

c++ - 基于 cuda 推力的方法对 TCP 流中的数据包进行分组

c++ - CUDA/推力图像处理