2013-04-07 61 views
2

在C++中,以创建具有整数的10个矢量我会做一个向量执行下列操作:CUDA推理库:如何创建host_vector的整数host_vector?

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

由于我想推力使用相同的逻辑与我试图做同样的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); 

会给我同样的错误(太多给他们贴在这里)。

而且使用推力时,一般来说,它使使用host_vector之间的差值的STL的vector

预先感谢您

回答

4

推力的容器只专为POD(普通旧数据)类型。通过在推力中实例化“向量向量”,创建多维向量是不可能的,这主要是因为GPU端的限制,使得不可能在设备代码路径中传递和使用。

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

+0

谢谢,我可能不得不从多维创建单个向量才能完成我的工作。 – ksm001 2013-04-08 14:39:39

+0

@ ksm001:这是人们用推力来做这件事的正常方式。如果你有兴趣,看看尖头。该项目仅使用推力容器实施了复杂的稀疏矩阵计算 – talonmies 2013-04-08 14:47:00