Распараллеливание на С++ или C#

Рейтинг: 1Ответов: 6Опубликовано: 20.02.2011

Хочу знать, можно ли на Microsoft Visual Studio 2008 писать программы (к примеру, на языке С++ или С#), которые распараллеливают алгоритмы на кластерах. OS на компьютере стоит - Windows XP SP2. Если можно, то какие библиотеки можно подключить и литературу по нему.

Ответы

▲ 6

Я сомневаюсь, что в настоящий момент есть библиотеки для C++ или C#, которые возьмут на себя всю работу по распараллеливанию вычислений в кластере. Так или иначе придется организовывать взаимодействие процессов между собой. Сейчас широко используется Message Passing Interface. Boost.MPI - одна из реализаций, MPI.Net - другая реализация.

Можно ли на Visual Studio писать программы для кластера? Можно. При желании, можно писать и на C# или даже F# на Linux кластере, если поднять на нем Mono.

▲ 4

MPI реализована для C/C++ и Фортрана. Книжек по ней много. Вот только не знаю, есть ли ее встроенная реализация в MSVS. Еще для распараллеливания хорошо подходит библиотека OpenMP. Она точно встроена в VS. В Intel C++ Compiler есть библиотека Cluster OpenMP, заточенная именно для распараллеливания на кластерах. А вообще кластерные расчеты легче реализуются в юниксовых ОС и обычно для них пишут на C/C++ или Фортране.

▲ 4

Безусловно, можно. Литературы полно. Для C++ и Fortran как уже подсказывали распространены библиотеки OpenMP и MPI. Приведу пару ссылок на литературу:

Для C# и .NET тоже решения имеются. Ссылки:

Ссылки из этических соображений приведены на магазин, но при большом желании эти книги легко могут быть найдены в PDF.

▲ 3

Можно, но есть но. Если я правильно понял вопрос, то можно параллелить, но для кластеров существует библиотека MPI, VPM. Вот эти две технологии в основном используют для написания программ, исполняющих паралельные вычисления в кластере, но их нужно подключить к студии.

Ребята, не обижайтесь, но OpenMP в основном используется для распараллеливания приложений на одном компе и это уже встроено в VS. Intel C++ Compiler: да, классная вещь и я ее юзал; Cluster OpenMP: тоже я испытывал такую вещь в одной аудитории и тоже неплохо, но они не бесплатные!

Что до языка, то наилучшее - использовать С++, так как там действительно получаются программы с параллельным вычислением. С# - нет так уж в этом деле хорошо (не в обиду Сишарповцам) хоть и говорится, что там есть параллелизм, но это псевдопараллелизм. А когда майкрософт сделает честный параллелизм в С#, для меня загадка, но я надеюсь скоро.

▲ 2

Программы пишут не на Linux или Windows, а на языке программирования. Код для С++ для тех задач, которые вы описали, будет практически один и тот же для обеих платформ. Различия будут касаться только используемого компилятора. Для С есть замечательная библиотека MPI. Не знаю, портирована ли она под Windows. На ней, в частности, работает наш известный МВС-1000М.

▲ 2

MPI.NET не катируется как норманый кластер, лучше писать на C++ и использовать обынчую библиотеку MPI(MPICH2.0). Со всем остальным огромные танцы с бубном и множество косяков. Советую приучать себя к правильному и понятному кодингу, нежели индийскому стилю программирования.