Как уменьшить параллельную сложность результатов до постоянного количества ядер?


20

У меня были проблемы с принятием теоретического представления о сложности «эффективно решаемого параллельным алгоритмом», которое задается классом NC :

NC - это класс задач, которые могут быть решены параллельным алгоритмом за время на процессорах с .O(logc⁡n)c , k ∈ Np(n)∈O(nk)c,k∈N

Мы можем принять PRAM .

Моя проблема в том, что это, похоже, мало что говорит о «реальных» машинах, то есть машинах с конечным количеством процессоров. Теперь мне сказали, что «известно», что мы можем «эффективно» моделировать алгоритм процессора процессорах .p ∈ NO(nk)p∈N

Что значит «эффективно» здесь? Это фольклор или строгая теорема, которая количественно определяет накладные расходы, вызванные симуляцией?

Я боюсь, что это происходит из-за того, что у меня есть проблема, которая имеет последовательный алгоритм , а также «эффективный» параллельный алгоритм, который при моделировании на процессорах также занимает время (которое это все, что можно ожидать на этом уровне детализации анализа, если последовательный алгоритм асимптотически оптимален). В этом случае, насколько мы можем видеть, ускорения не происходит; на самом деле, симулированный параллельный алгоритм может быть медленнее, чем последовательный алгоритм. То есть я действительно ищу утверждения более точные, чем границы (или объявление об отсутствии таких результатов).p O ( n k )O(nk)pO(nk)O


Теорема Брента?
— Cic

Вы имеете в виду ? Если это так, то это (afaik) применимо только в определенных обстоятельствах, а также не позволяет сразу переводить время выполнения. Или, если это так, пожалуйста, уточните ответ. Tp<Wp+D
— Рафаэль

NC отвечает на вопрос "возможно ли компромисс между большим количеством оборудования и меньшим временем выполнения?" Вы можете захотеть ограничить себя постоянным оборудованием, и это похоже на ограничение себя постоянной памятью, лучшее моделирование некоторых проблем. Для практического использования см. Сумматоры переноса, больше аппаратных средств, так что добавление битов выполняется в . O ( N )NO(N)
— AProgrammer

Ответы:


13

Если вы предполагаете, что число процессоров ограничено константой, то вы правы, что проблема, связанная с NC, на практике не имеет большого значения. Поскольку любой алгоритм в PRAM с k процессорами и t параллельным временем может быть смоделирован с помощью однопроцессорного ОЗУ за время O ( kt ), параллельное время и последовательное время могут отличаться только на постоянный коэффициент, если k является константой.

Однако если вы предполагаете, что по мере увеличения размера ввода вы можете подготовить компьютер с большим количеством процессоров, то проблема с NC означает, что до тех пор, пока вы сможете подготовить больше процессоров, время выполнения будет «очень коротким» или, точнее, полилогарифмический во входном размере. Если вы считаете, что это предположение нереально, сравните его с предположением о неограниченной памяти: у реальных компьютеров есть только конечный объем пространства, но при изучении алгоритмов и сложности мы почти всегда предполагаем, что вычислительное устройство не имеет постоянного верхнего связаны в пространстве. На практике это означает, что мы можем подготовить компьютер с большим объемом памяти по мере увеличения размера ввода, как мы обычно используем компьютеры в реальном мире. NC моделирует аналогичную ситуацию в параллельных вычислениях.


1
1) Да, распараллеливание на многих ядрах может привести к постоянному ускорению. Это присуще и печально спрятан в -терминов. (Imho) интересный вопрос: могу ли я получить (оптимальное) ускорение , или только , или ? 2) Хотя предположение о бесконечной памяти может быть оправдано наличием большого количества ОЗУ (и, технически, вы можете добавить жесткий диск), это обычно не относится к процессорам. Типичные (персональные) машины в настоящее время имеют 16 или менее ядер. Другими словами, вы можете использовать «нормальные» результаты до релевантных размеров задачи, многие параллельные результаты только до . k k / 2 k - 1 n ≤ 20Okk/2k−1n≤20
— Рафаэль

4
@ Рафаэль: Вопрос о том, принадлежит ли определенная проблема к NC или нет, не моделирует ваш вопрос. Я не говорю, что ваш вопрос неинтересен; Я просто говорю, что NC не является подходящим классом сложности для моделирования этого.
— Цуёси Ито

Я действительно рад это слышать; человек утверждает, что иначе. Не обязательно с NC, но с теоретическими результатами сложности в целом. Как это с другими классами?
— Рафаэль

Исправление: проблема, связанная с NC, означает, что время выполнения является полилогарифмическим, если число процессоров является достаточно большим полиномом от входного размера. В возможно более реалистичном сценарии, когда число процессоров является фиксированным полиномом, например , или более медленной непостоянной функцией, такой как , членство в NC формально не подразумевает ничего все. O(logn)O(n)O(log⁡n)
— Джефф

@JeffE: Это не исправление. Я только написал «подготовить больше процессоров», не придав этому строгого смысла (потому что я думал, что это затруднит понимание).
— Цуёси Ито

10

NC

p=1NC

Но подождите, это еще не все.

NC

PO(nϵ),0<ϵ<1NCnnn<lg3⁡nn≤0.5×109NC

В одном из ответов было отмечено, что «на практике это означает, что мы можем подготовить компьютер с большим объемом памяти по мере увеличения размера ввода, как мы обычно используем компьютеры в реальном мире. NC моделирует аналогичную ситуацию в параллельные вычисления ".

Я частично согласен с этой точкой зрения. Мы покупаем новый параллельный компьютер с большим объемом памяти, когда старый суперкомпьютер выводится из эксплуатации также потому, что микросхемы DRAM дешевле по времени и в некоторой степени уравновешивают параллельный компьютер с точки зрения его основных компонентов (процессоров, памяти, межсоединений и т. Д.).

pnp

Поэтому все более важно разрабатывать масштабируемые параллельные алгоритмы памяти, поскольку они полезны для больших задач.

n3n

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.