以下代码没有可能导致它在 CPU 或 GPU 上运行的信息。我想知道“减少”操作在哪里执行?
#include <thrust/iterator/counting_iterator.h>
...
// create iterators
thrust::counting_iterator<int> first(10);
thrust::counting_iterator<int> last = first + 3;
first[0] // returns 10
first[1] // returns 11
first[100] // returns 110
// sum of [first, last)
thrust::reduce(first, last); // returns 33 (i.e. 10 + 11 + 12)
此外,
thrust::transform_reduce(
thrust::counting_iterator<unsigned int>(0),
thrust::counting_iterator<unsigned int>(N),
MyOperation(data), 0 ,thrust::plus<unsigned int>())
即使数据被定义为thrust::host_vector,这个函数还是试图在GPU上执行(编译器给出了相关的错误,因为文件名以.cpp结尾)。如何使代码在 CPU 上运行。或者我应该寻找另一种方法来执行相同的操作,例如不使用counting_iterator?