3

在 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

先感谢您

4

1 回答 1

5

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

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

于 2013-04-08T05:26:06.143 回答