CUDA'推力:: min_element'的时间复杂度是多少?功能?

时间:2014-06-04 00:26:57

标签: c++ c cuda time-complexity thrust

Thrust库的文档没有提供函数的时间复杂性。我需要知道这个特定功能的时间复杂性。我怎么能找到它?

1 个答案:

答案 0 :(得分:3)

min-element算法只是在未排序的范围内找到最小值。如果有任何方法可以在低于线性O(n)时间复杂度的情况下做到这一点,那么我的名字就是米老鼠。任何比线性更差的实现都必须写得非常糟糕。

当谈到CUDA Thrust中算法的时间复杂性时,它们主要是基于CUDA的STL算法并行化实现。因此,您通常可以参考STL文档。

算法并行化的事实不会改变时间复杂度。至少,它通常不能使时间复杂度更好。并行运行只是将总执行时间除以并行执行次数。换句话说,它只会影响常数因素"这是" Big-O"分析。你获得了一定的加速因子,但复杂性仍然相同。但是,通常存在与并行化相关的困难/开销,因此speedup is rarely "ideal"。很少复杂性降低,而且它只适用于一些精心设计的花哨动态编程算法,而不是你在CUDA Thrust中找到的那种东西。因此,对于Thrust,可以安全地假设所有复杂性与相应或最接近匹配的STL算法的复杂性相同。