C++ 带偏置的推力功能访问元件

C++ 带偏置的推力功能访问元件,c++,cuda,thrust,C++,Cuda,Thrust,在推力函数中,如何访问具有偏移量的向量元素 例如,在推力::变换中,如果需要使用输入向量1[0]和输入向量2[3]计算输出向量[0],那么如何实现这一点呢?有多种方法可以实现这一点。如果您有向量,并且希望变换在向量中的连续序列上工作,只是在不同的偏移量下,那么您可以将所需的偏移量直接添加到传递给调用的迭代器中: $cat t602.cu #包括 #包括 #包括 #包括 #包括 #定义DSIZE 10 int main(){ 推力:设备_向量i1(DSIZE)、i2(DSIZE)、o(DSIZE)

在推力函数中,如何访问具有偏移量的向量元素


例如,在推力::变换中,如果需要使用输入向量1[0]和输入向量2[3]计算输出向量[0],那么如何实现这一点呢?

有多种方法可以实现这一点。如果您有向量,并且希望变换在向量中的连续序列上工作,只是在不同的偏移量下,那么您可以将所需的偏移量直接添加到传递给调用的迭代器中:

$cat t602.cu
#包括
#包括
#包括
#包括
#包括
#定义DSIZE 10
int main(){
推力:设备_向量i1(DSIZE)、i2(DSIZE)、o(DSIZE);
序列(i1.begin(),i1.end());
序列(i2.begin(),i2.end());
转换(i1.begin(),i1.begin()+4,i2.begin()+3,o.begin(),推力::plus());
推力::复制(o.begin(),o.begin()+4,std::ostream_迭代器(std::cout,“”);
标准::cout
$ cat t602.cu
#include <iostream>
#include <thrust/device_vector.h>
#include <thrust/transform.h>
#include <thrust/sequence.h>
#include <thrust/copy.h>

#define DSIZE 10

int main(){

  thrust::device_vector<int> i1(DSIZE), i2(DSIZE), o(DSIZE);
  thrust::sequence(i1.begin(), i1.end());
  thrust::sequence(i2.begin(), i2.end());
  thrust::transform(i1.begin(), i1.begin()+4, i2.begin()+3, o.begin(), thrust::plus<int>());
  thrust::copy(o.begin(), o.begin()+4, std::ostream_iterator<int>(std::cout, " "));
  std::cout << std::endl;
}
$ nvcc -arch=sm_20 -o t602 t602.cu
$ ./t602
3 5 7 9
$