本文介绍了使用CUDA Thrust查找最大元素值及其位置的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
如何得到不仅值的最大值(最小)元素的位置( res.val
和 res.pos
)?
How do I get not only the value but also the position of the maximum (minimum) element (res.val
and res.pos
)?
thrust::host_vector<float> h_vec(100);
thrust::generate(h_vec.begin(), h_vec.end(), rand);
thrust::device_vector<float> d_vec = h_vec;
T res = -1;
res = thrust::reduce(d_vec.begin(), d_vec.end(), res, thrust::maximum<T>());
推荐答案
不要使用 :: reduce
。在中使用
: thrust :: max_element
( thrust :: min_element
)thrust / extrema.h
Don't use thrust::reduce
. Use thrust::max_element
(thrust::min_element
) in thrust/extrema.h
:
thrust::host_vector<float> h_vec(100);
thrust::generate(h_vec.begin(), h_vec.end(), rand);
thrust::device_vector<float> d_vec = h_vec;
thrust::device_vector<float>::iterator iter =
thrust::max_element(d_vec.begin(), d_vec.end());
unsigned int position = iter - d_vec.begin();
float max_val = *iter;
std::cout << "The maximum value is " << max_val << " at position " << position << std::endl;
将空范围传递到 max_element
- 您将无法安全地取消引用结果。
Be careful when passing an empty range to max_element
-- you won't be able to safely dereference the result.
这篇关于使用CUDA Thrust查找最大元素值及其位置的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!