Библиотека строительных блоков потоков или MPI? какой из них лучше для меня?

Я планировал изучить параллельные вычисления. Теперь думаю о MPI или TBB. На самом деле, у меня нет большого опыта в этом. Я полагаю, мне лучше начать с чего-то легкого в управлении. Сначала я могу попробовать что-то вроде крупнозернистого кода. Что может быть проще для меня? Спасибо.


person oldfish    schedule 02.02.2010    source источник


Ответы (2)


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

Однако основным преимуществом MPI являются параллельные вычисления с распределенной памятью. В этом сценарии ваше приложение запускается в кластере из разных физических машин и взаимодействует друг с другом через TCP или другой проприетарный протокол.

Таким образом, в зависимости от вашего проблемного пространства тот или иной может быть лучше. Это действительно зависит от проблемы, которую вы пытаетесь решить.

person Taylor Leese    schedule 02.02.2010
comment
Что я пытаюсь сделать, так это распараллелить несколько процессов поиска и обмена информацией между каждым процессом, надеюсь, это может улучшить решение алгоритма, например, используя несколько разных решателей для решения проблемы на компьютерном кластере или многоядерном компьютере. - person oldfish; 02.02.2010
comment
Если вы считаете, что для решения вашей задачи требуется больше, чем несколько ядер, вероятно, вам подойдет MPI, поскольку у вас гораздо больше возможностей для масштабирования. - person Taylor Leese; 02.02.2010

MPI и TBB очень сильно отличаются друг от друга.

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

TBB, с другой стороны, действительно направлен на то, чтобы сделать многопоточность в одном приложении намного проще и доступнее. По своему подходу он очень похож на параллельную среду выполнения от Microsoft, и даже TPL в мире .NET.

person Reed Copsey    schedule 02.02.2010