.net 4.0 параллельная библиотека задач против MPI.NET - PullRequest
6 голосов
/ 03 июня 2010

Заменяет ли библиотека параллелей задач .net 4.0 MPI.NET для высокопроизводительных вычислений?

MPI.NET находится здесь http://www.osl.iu.edu/research/mpi.net/svn/ - это высокопроизводительная и простая в использовании реализация интерфейса передачи сообщений (MPI) для среды Microsoft .NET. MPI является стандартом де-факто для написания параллельных программ, работающих в распределенной системе памяти, такой как вычислительный кластер.

.NET 4 TPL гласит: «Параллельная библиотека задач (TPL) - это набор открытых типов и API-интерфейсов в пространствах имен System.Threading и System.Threading.Tasks в .NET Framework версии 4. Назначение TPL должен сделать разработчиков более продуктивными, упрощая процесс добавления параллелизма и параллелизма к приложениям. TPL динамически масштабирует степень параллелизма, чтобы наиболее эффективно использовать все доступные процессоры. Кроме того, TPL обрабатывает разделение работы, планирование потоков в ThreadPool, поддержка отмены, управление состоянием и другие низкоуровневые детали. Используя TPL, вы можете максимизировать производительность своего кода, сосредоточившись на работе, для которой предназначена ваша программа. "

Моя цель - создать приложение, которое может работать на Windows HPC 2008 ... в каком направлении?

Ответы [ 2 ]

7 голосов
/ 24 июня 2010

Насколько я понимаю, TPL не поддерживает распределенные вычисления, а MPI.NET -.

2 голосов
/ 04 июня 2010

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

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

Исходя из моего ограниченного понимания, TPL создан для того, чтобы опираться на / заменить / значительно улучшить текущую модель потоков в .NET, т.е. у вас есть реальные потоки, которыми вы управляете, и вы общаетесь, передавая аргументы или используя общее состояние. *

Если это с нуля, и дизайн подходит для разделения на очень маленькие сегменты кода, то я бы предложил MPI.NET. Если тип работы интенсивно использует процессор (например, математическая работа), я бы предложил маршрут TPL.

Редактировать: редактировать долго, этот ответ старый! MPI.NET непосредственно подходит для HPC, поскольку делает коммуникационную границу узлов HPC прозрачной и настраиваемой. MPI.NET отправляет сообщения конечным точкам - эти точки определяются как адреса IP / портов в файлах конфигурации. Код не знает, что конечная точка пересекает границу сети.

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

...