本文共 921 字,大约阅读时间需要 3 分钟。
template__device__ SizeT binarySearch(T* elements, SizeT lower_bound, SizeT upper_bound, T element_to_find, Compare lessThan){ while (lower_bound < upper_bound) { SizeT mid_point = (lower_bound + upper_bound) >> 1; auto element = elements[mid_point]; if (lessThan(element, element_to_find)) lower_bound = mid_point + 1; else upper_bound = mid_point; } SizeT retval = horovod::dgc::PreDefinedValues ::InvalidValue; if (upper_bound == lower_bound) { if (lessThan(element_to_find, elements[upper_bound])) retval = upper_bound - 1; else retval = upper_bound; } return retval;}template __device__ SizeT binarySearch(T* elements, SizeT lower_bound, SizeT upper_bound, T element_to_find){ return binarySearch(elements, lower_bound, upper_bound, element_to_find, []__device__ (const T &a, const T &b) //上面使用lambda函数编程 { return (a < b); });}
转载地址:http://uuwmi.baihongyu.com/