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

20

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

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

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

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

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

Я боюсь, что это происходит из-за того, что у меня есть проблема, которая имеет последовательный алгоритм , а также «эффективный» параллельный алгоритм, который при моделировании на процессорах также занимает время (которое это все, что можно ожидать на этом уровне детализации анализа, если последовательный алгоритм асимптотически оптимален). В этом случае, насколько мы можем видеть, ускорения не происходит; на самом деле, симулированный параллельный алгоритм может быть медленнее, чем последовательный алгоритм. То есть я действительно ищу утверждения более точные, чем границы (или объявление об отсутствии таких результатов).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/2k1n20
Рафаэль
4
@ Рафаэль: Вопрос о том, принадлежит ли определенная проблема к NC или нет, не моделирует ваш вопрос. Я не говорю, что ваш вопрос неинтересен; Я просто говорю, что NC не является подходящим классом сложности для моделирования этого.
Цуёси Ито
Я действительно рад это слышать; человек утверждает, что иначе. Не обязательно с NC, но с теоретическими результатами сложности в целом. Как это с другими классами?
Рафаэль
Исправление: проблема, связанная с NC, означает, что время выполнения является полилогарифмическим, если число процессоров является достаточно большим полиномом от входного размера. В возможно более реалистичном сценарии, когда число процессоров является фиксированным полиномом, например , или более медленной непостоянной функцией, такой как , членство в NC формально не подразумевает ничего все. O(logn)O(n)O(logn)
Джефф
@JeffE: Это не исправление. Я только написал «подготовить больше процессоров», не придав этому строгого смысла (потому что я думал, что это затруднит понимание).
Цуёси Ито
10

NC

p=1NC

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

NC

PO(nϵ),0<ϵ<1NCnnn<lg3nn0.5×109NC

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

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

pnp

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

n3n

Массимо Кафаро
источник