CUDA 的"推力::min_element"函数的时间复杂度是多少?

What is the time complexity of CUDA's 'thrust::min_element' function?

本文关键字:时间复杂度 函数 多少 推力 min CUDA element      更新时间:2023-10-16

Thrust库的文档没有提供函数的时间复杂度。我需要知道这个特定函数的时间复杂度。我怎样才能知道呢?

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

当涉及到CUDA Thrust中算法的时间复杂性时,它们主要是基于CUDA的STL算法的并行实现。所以,你通常可以参考STL文档。

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