CUDA 的"推力::min_element"函数的时间复杂度是多少?
What is the time complexity of CUDA's 'thrust::min_element' function?
Thrust库的文档没有提供函数的时间复杂度。我需要知道这个特定函数的时间复杂度。我怎样才能知道呢?
最小元素算法只在未排序的范围内查找最小值。如果有任何方法可以在小于线性O(n)的时间复杂度内做到这一点,那么我的名字就是米老鼠。任何比线性更差的实现都必须写得非常糟糕。
当涉及到CUDA Thrust中算法的时间复杂性时,它们主要是基于CUDA的STL算法的并行实现。所以,你通常可以参考STL文档。
算法并行化的事实并没有改变时间复杂度。至少,它通常不能使时间复杂度更好。并行运行只是将总执行时间除以并行执行的次数。换句话说,它只影响"常量因素",而"大o"分析忽略了这个因素。你获得了一定的加速因素,但复杂性保持不变。但是,通常存在与并行化相关的困难/开销,因此,加速很少是"理想的"。复杂性很少会被降低,而且它只适用于一些精心设计的花哨的动态规划算法,而不是你在CUDA Thrust中找到的那种东西。因此,对于Thrust,可以安全地假设所有复杂性与对应的或最接近匹配的STL算法相同。
相关文章:
- 函数的时间复杂度是多少?
- 如何计算此排序函数的时间复杂度?
- 如何计算函数的时间复杂度?
- 在确定函数的时间复杂度时需要帮助
- C++ 数学库 pow() 函数的时间复杂度
- 递归函数的时间复杂度计算
- 一个清晰的函数的时间复杂度是多少,根据大 O,是 std::map
- 加泰罗尼亚数字,递归函数时间复杂度
- 递归函数的渐近时间复杂度
- 这个函数的时间复杂度是多少
- C++中strstr()函数的时间复杂度、空间复杂度和算法是什么
- std::deque::erase函数的时间复杂度是多少
- 当一个std::vector对象在堆栈中而另一个在堆中时,vector的交换函数的时间复杂度为O(1)或O(n)
- 用大0符号表示函数的时间复杂度
- 下面这个函数的时间复杂度应该是多少?
- 这个递归函数的时间复杂度是多少?
- CUDA 的"推力::min_element"函数的时间复杂度是多少?
- 这个递归函数的时间复杂度是多少?
- c++中调用虚函数的时间复杂度
- 随机高斯函数的时间复杂度