2010-07-19 4 views
9

Я пишу документ для тестирования нового приложения, которое продемонстрирует преимущества параллельного вычисления (по сравнению с традиционной сериализованной версией этого приложения). Я хочу использовать canonical examples для параллельных вычислений в моей статье.Каковы канонические примеры параллельных вычислений?

Мой первый пример: the parallel computation of pi. В идеале я хотел бы привести пример, когда каждая итерация занимает очень много времени (из-за дополнительных служебных данных, связанных с распараллеливанием); моя первая мысль - байесовское моделирование с использованием MCMC и Gibbs.

Какие другие проблемы обычно обсуждаются в этом контексте? Каковы хорошие примеры больших проблем embarassingly parallel?

+0

В приведенной статье в википедии содержится множество примеров. Что с ними не так? – Jens

+0

Все в порядке, хотя я не думаю, что они будут рассматриваться как «стандартный набор примеров» (например, пример pi здесь не включен). Мне просто не нужны примеры: мне нужны самые известные примеры. – Shane

+0

@Shane: Так почему вы просили «хорошие примеры» в последнем предложении? Хорошие не всегда могут быть знаменитыми. –

ответ

5

Один пример, который я использовал в прошлом, смущающе параллельной проблемой - это визуализация набора мандельбротов. Каждый пиксель может быть вычислен независимо.

Жизнь Конвей также интересна тем, что каждое значение «следующей» платы может быть вычислено независимо, но будет зависеть от соответствующих бит текущей платы.

6

просто еще несколько -

  • Умножение матрицы
  • Инвертирование матриц
  • FFT
  • Строка соответствие
  • рендеринга 3D сцены (с помощью преобразования сканирования линии или трассировки лучей)
+0

+1 для упоминания рендеринга 3D-сцены. – claws

2

Мой любимый пример - monte carlo simulation.

1

Поиск столкновений в хэш-функциях с использованием Paul C. van Oorschot и Michael J. Weiner's method (PDF) часто возникает в различных криптографических настройках.

5

Я хотел бы предложить, что канонических примеры параллельных вычислений и чрезвычайной параллельность проблемы являются, если не полностью, то почти, непересекающимися множества. Другими словами, люди, работающие в параллельном вычислении, не очень волнуются по поводу смущающих параллельных проблем; мы называем их тем, что мы будем смущены, чтобы работать над ними.

я смотрел бы, если бы я тебя, у них (а не полностью первоначальный список):

  • линейной алгебры на больших плотных матриц, как прямых, так и итерационных подходов;
  • линейная алгебра на огромных разреженных матрицах
  • ветви и связанные подходы к проблемам линейного программирования (и связанным);
  • соответствие последовательности для биоинформатики (вне моего поля, я, возможно, неправильно выражал это);
  • непрерывная оптимизация.

Ожидает, что их еще много.

EDIT: Вы можете быть заинтересованы в this list of problems, которые были отобраны для тестирования следующего поколения европейского (академические) суперкомпьютеров. Это даст вам некоторое представление о том, куда направляется эта ниша.

+0

+1 Спасибо за этот список. Я думаю, что «смущающе» действительно подразумевает вещи, которые легко расщепляются (т. Е. Нет зависимости между итерациями), а не то, что они сами смущают проблемы. – Shane

+0

@ Шейн: Я прошу различаться, их называют смущающими, потому что те из нас, кто работает в параллельных вычислениях, будут смущены, чтобы работать над такими легкими проблемами; еще хуже, работать и делать ошибки. Возможно, они настолько легко распараллеливаются, потому что между задачами нет зависимостей, но это другое дело. –

+0

+1 для ссылки на люкс-стенд PRACE. По той же причине я также добавил бы тесты SpecMPI: http://www.spec.org/mpi/ –

4

Моделирование молекулярной динамики позволяет изменять размер проблемы до тех пор, пока ресурсы компьютера не будут исчерпаны (то есть 256 частиц против 256 000 000 частиц). Его действительно «канонический» пример, если вы запустите моделирование MD под НВТ условия ;-)

+2

+1 для каламбура. – jmbr

1

я использовал множество Мандельброта демо, чтобы объяснить мой мама, о том, что такое параллельное программирование: http://www.ateji.com/px/demo.html

Все примеры, которые вы упоминаете, - это в основном тяжелые пароли. Вероятно, вы захотите упомянуть также целевые коды, такие как серверы, отвечающие на многочисленные запросы параллельно, а также примеры потоков данных или потокового программирования (MapReduce - хороший представитель этого класса).

Смежные вопросы