|
#include <thrust/iterator/permutation_iterator.h> |
|
#include <thrust/reduce.h> |
|
#include <thrust/device_vector.h> |
|
#include <iostream> |
|
|
|
|
|
|
|
|
|
int main(void) |
|
{ |
|
|
|
thrust::device_vector<int> map(4); |
|
map[0] = 3; |
|
map[1] = 1; |
|
map[2] = 0; |
|
map[3] = 5; |
|
|
|
|
|
thrust::device_vector<int> source(6); |
|
source[0] = 10; |
|
source[1] = 20; |
|
source[2] = 30; |
|
source[3] = 40; |
|
source[4] = 50; |
|
source[5] = 60; |
|
|
|
|
|
|
|
int sum = thrust::reduce(thrust::make_permutation_iterator(source.begin(), map.begin()), |
|
thrust::make_permutation_iterator(source.begin(), map.end())); |
|
|
|
|
|
std::cout << "sum is " << sum << std::endl; |
|
|
|
return 0; |
|
} |
|
|