Какова временная сложность функции 'thrust :: min_element' в CUDA?

0

Документация с документацией по доверенности не обеспечивает сложности времени для функций. Мне нужно знать временную сложность этой конкретной функции. Как я могу это узнать?

  • 0
    Может это
  • 1
    Обратите внимание , что thrust::min_element реализуется с thrust::reduce , так что они будут иметь такую же временную сложность.
Теги:
cuda
time-complexity
thrust

1 ответ

3
Лучший ответ

Алгоритм min-element просто находит минимальное значение в несортированном диапазоне. Если есть способ сделать это меньше, чем линейная O (n) временная сложность, то меня зовут Микки Маус. И любая реализация, которая будет хуже, чем линейная, должна быть крайне плохо написана.

Когда дело доходит до временных сложностей алгоритмов в CUDA Thrust, ну, в основном это параллельная реализация алгоритмов STL на основе CUDA. Таким образом, вы можете просто ссылаться на документацию STL.

Тот факт, что алгоритмы распараллелены, не изменяет сложность времени. По крайней мере, это вообще не может сделать временную сложность лучше. Выполнение параллельных операций просто делит общее время выполнения на количество параллельных исполнений. Другими словами, это влияет только на "постоянный фактор", который исключается из анализа "Big-O". Вы получаете определенный коэффициент ускорения, но сложность остается прежней. Но обычно возникают трудности/накладные расходы, связанные с распараллеливанием, и поэтому ускорение редко бывает "идеальным". Очень редко сложность уменьшается, и это только для некоторых тщательно продуманных фантастических алгоритмов динамического программирования, а не из того, что вы найдете в CUDA Thrust. Таким образом, для Thrust можно с уверенностью предположить, что все сложности такие же, как и для соответствующего или ближайшего совпадающего алгоритма STL.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню