Библиотека параллельной обработки

Я хотел бы знать, какая библиотека параллельной обработки лучше всего использовать в этих конфигурациях:

  1. Один четырехъядерный процессор. Я хотел бы выполнить четыре функции одного типа на каждом ядре. Эта же функция принимает разные аргументы.
  2. Кластер из 4 машин с каждым из них с несколькими ядрами. Я хотел бы выполнять те же функции, но n-parallel (4 машины * нет ядер в каждой машине). Поэтому я хочу, чтобы он масштабировался.

Детали программы:

  1. C++. Между функциями нет зависимости. Эта же функция выполняется с различным набором входов и завершается в течение> 100 раз
  2. Нет общей памяти, поскольку каждая функция принимает свои собственные данные и свои собственные входы.
  3. Каждой функции не нужно ждать, пока другие будут завершены. Нет необходимости в соединении или вилке.

Для более сложных сценариев можно использовать лучшие параллельные библиотеки? MPI, BOOST :: MPI, открыть mp или другие библиотеки.

Мое предпочтение было бы BOOST :: MPI, но мне нужны некоторые рекомендации. Я не уверен, разрешено ли использование MPI с параллельными многоядерными машинами?

Благодарю.

1 ответ

То, что у вас здесь, представляет собой проблему, смущающую параллель (http://en.wikipedia.org/wiki/Embarrassingly_parallel). В то время как MPI можно определенно использовать на многоядерной машине, он может быть убит для этой проблемы. Если ваши задачи полностью разделены, вы можете просто скомпилировать их для разделения исполняемых файлов или одного исполняемого файла с разными входами и использовать "сделать -j [n]" (см. Http://www.gnu.org/software/make/manual/html_node/Parallel.html), чтобы выполнить их параллельно.

Если MPI приходит к вам естественным образом, обязательно используйте его. OpenMP, вероятно, не будет обрезать его, если вы хотите контролировать вычисления на отдельных компьютерах в кластере.

licensed under cc by-sa 3.0 with attribution.