Thrust是并行算法和数据结构的基于GPU CUDA的C++库,类似于C++标准库stl,cuda安装后自带。Trust用于求最值的函数为min_element和max_element,和stl名字一样;
我是偶然发现原来cuda还有一个这个库,在项目中,因为中间有一个过程需要最值的索引,原本我是把数据从显存中拷贝到主机,然后使用stl的标准库计算的,因为主机与设备之间的数据交换慢,速度不是很理想,本来想自己写核函数了,突然百度冒出来一个这个库,真是久旱逢甘霖啊;
以max_element为例,一种方法是使用容器:
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());
int position = iter - d_vec.begin();
float max_val = * iter;
std :: cout<< 最大值是”< max_val<< at position”<<位置<< st