Spaces:
Runtime error
Runtime error
| // this example fuses a gather operation with a reduction for | |
| // greater efficiency than separate gather() and reduce() calls | |
| int main(void) | |
| { | |
| // gather locations | |
| thrust::device_vector<int> map(4); | |
| map[0] = 3; | |
| map[1] = 1; | |
| map[2] = 0; | |
| map[3] = 5; | |
| // array to gather from | |
| thrust::device_vector<int> source(6); | |
| source[0] = 10; | |
| source[1] = 20; | |
| source[2] = 30; | |
| source[3] = 40; | |
| source[4] = 50; | |
| source[5] = 60; | |
| // fuse gather with reduction: | |
| // sum = source[map[0]] + source[map[1]] + ... | |
| int sum = thrust::reduce(thrust::make_permutation_iterator(source.begin(), map.begin()), | |
| thrust::make_permutation_iterator(source.begin(), map.end())); | |
| // print sum | |
| std::cout << "sum is " << sum << std::endl; | |
| return 0; | |
| } | |