Пакет для раздачи расчетов - PullRequest
1 голос
/ 08 июня 2009

Вам известен какой-либо пакет для распределения вычислений на несколько компьютеров и / или несколько ядер на каждом компьютере? Код вычисления написан на языке c ++, пакет должен уметь работать с данными размером более 2 ГБ и работать на компьютере с Windows x64. Условно-бесплатная было бы неплохо, но не является обязательным требованием.

Ответы [ 3 ]

2 голосов
/ 08 июня 2009

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

Простейшим было бы просто использовать подходящий решатель / библиотеку, которая поддерживает параллелизм (например, ScaLAPACK ). Или, если вы хотите развернуть свои собственные решатели, вы можете выжать некоторую параллелизацию из вашего текущего кода, используя OpenMP или компиляторы, которые обеспечивают автоматическое распараллеливание (например, компилятор Intel C / C ++). Все это даст вам разумное повышение производительности без необходимости масштабной реструктуризации вашего кода.

На другом конце спектра у вас есть опция MPI . Это может позволить вам максимально повысить производительность, если ваш алгоритм хорошо распараллеливается. Однако для этого потребуется немало реинжиниринга.

Еще одна альтернатива - пойти по маршруту. Есть библиотеки инструментов, которые сделают это менее кошмарным. Это стоит посмотреть: Библиотека параллельного программирования Boost C ++ и Строительный блок Threading

1 голос
/ 08 июня 2009

Возможно, вы захотите посмотреть OpenMP

0 голосов
/ 08 июня 2009

Существует библиотека MPI и система DVM , работающая поверх MPI. Это универсальные инструменты, широко используемые для распараллеливания различных задач.

...