C++ 如何有效地插入/合并到推力::设备_向量中?

C++ 如何有效地插入/合并到推力::设备_向量中?,c++,cuda,thrust,C++,Cuda,Thrust,我想将几个设备向量合并为一个,如下所示: thrust::device_vector<int> allinput = input0; allinput.insert(allinput.end(),input1.begin(),input1.end()); allinput.insert(allinput.end(),input2.begin(),input2.end()); allinput.insert(allinput.end(),input3.begin(),i

我想将几个设备向量合并为一个,如下所示:

thrust::device_vector<int>         allinput = input0;
allinput.insert(allinput.end(),input1.begin(),input1.end());
allinput.insert(allinput.end(),input2.begin(),input2.end());
allinput.insert(allinput.end(),input3.begin(),input3.end());
但很明显,我想做得更有效率。我正在使用关键设备向量和值设备向量,我想为这两个都这样做

实现这一目标最有效的方法是什么

我的另一个问题是,我只知道在运行时之前我将拥有多少键和值设备_向量。有没有办法制作一个设备向量或通过指针访问多个向量

谢谢

您可以在插入前使用reserve size\u type n以加快后续插入:

thrust::device_vector<int>         allinput = input0;

allinput.reserve(input1.size()+input2.size()+input3.size());

allinput.insert(allinput.end(),input1.begin(),input1.end());
allinput.insert(allinput.end(),input2.begin(),input2.end());
allinput.insert(allinput.end(),input3.begin(),input3.end());
...

定义效率。@Talonmes我是说时间效率。我想同时做这件事。通常,我会使用指针向量来循环所有的输入,但这不是使用推力的意义,谢谢你的回答!我会实施的。你知道我如何并行这个过程吗?