CUDA Thrust库:如何创建一个整数host_vector的host_vector?

时间:2013-04-07 23:22:41

标签: 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会有所不同吗?

提前谢谢

1 个答案:

答案 0 :(得分:5)

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

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