Я только начинаю изучать параллельное программирование и смотрю на двоичный поиск.
Это невозможно оптимизировать, добавив больше процессоров, верно? Я знаю, что это предположительно разделяет и побеждает, но на самом деле вы «убываете и побеждаете» (из Википедии ).
Или вы могли бы распараллелить сравнения? (если X
меньше, чем array [mid]
, поиск от low
до mid - 1
; иначе, если X
больше, чем array [mid]
поиск от mid + 1
до high
, иначе вернет mid
, индекс ] X
)
Или как насчет того, чтобы отдать половину массива одному процессору для выполнения двоичного поиска, а другую половину - другому? Но разве это не было бы расточительно? Потому что оно убывает и побеждает, а не просто разделяет и побеждает? Мысли?