MC# 2.2 для Windows и Linux
Вышла версия системы параллельного программирования MC# 2.2 для Windows и Linux, включая Linux-кластеры. Версия для Linux базируется на системе Mono - реализации .NET для Uniх-подобных систем.
Замечания, предложения и комментарии приветствуются ...
| |
Re: MC# 2.2 для Windows и Linux
Вышла версия системы параллельного программирования MC# 2.2 для Windows и Linux, включая Linux-кластеры. Версия для Linux базируется на системе Mono - реализации .NET для Uniх-подобных систем.
Замечания, предложения и комментарии приветствуются ...
На сколько актуально использовать данную систему программирвания, ведь есть MPI, OpenMP, TBB и т.д. Какую практическую выгоду можно извлечь из данной системы? На сайте разработчиков http://www.mcsharp.net/ по моему мнению нет достаточной информации.
| |
Re: MC# 2.2 для Windows и Linux
На сколько актуально использовать данную систему программирвания, ведь есть MPI, OpenMP, TBB и т.д. Какую практическую выгоду можно извлечь из данной системы? На сайте разработчиков http://www.mcsharp.net/ по моему мнению нет достаточной информации.
Да, Вы правы - пока что на нашем сайте нет сравнительных характеристик MC# с OpenMP, MPI, TBB и др. Однако, об этом и о практической выгоде использования MC# частично сказано в посте "Многоядерность:1,2,3 ... Larrabee, или Как нам всё это программировать?"(software.intel.com/ru-ru/blogs/2008/12/12/123-larrabee/).
На вопрос насчет актуальности использования MC# при наличии массы других средств можно кратко ответить контрвопросом - зачем компания Интел купила компанию Cilk Arts (www.cilk.com/) с ее языком Cilk ? (Кстати, на их странице www.cilk.com/multicore-blog/ можно найти сравнения Cilk с OpenMP, MPI, TBB и др., которые во многом актуальны и для MC#).
Если коротко, то главное достоинство MC# заключается в его простоте - как используемой в нем модели параллельных вычислений (об этом скоро будет отдельная запись в блоге), так и в конструкциях, которые эту модель поддерживают. Этот набор конструкций, расширяющих C#, состоит из - async- и movable-методов, - каналов, - обработчиков и - связок. Таким образом, изучить MC# и начать на нем реально программировать можно в течение 1 дня.
И сравните теперь расширения, реализованные в MC#, с (неполным перечислением) переменных и директив, которые необходимо изучить для использования OpenMP 3.0:
- Internal Control Variables (ICVs)
- dyn-var
- nest-var
- nthreads-var
- thread-limit-var
- max-active-levels-var
- run-sched-var
- def-sched-var
- stacksize-var
- wait-policy-var
- Constructs and clauses
- parallel construct
- num_threads clause
- schedule clause
- Loop construct
- Interface routines
- omp_set_num_threads
- omp_get_max_threads
- omp_set_dynamic
- omp_get_dynamic
- omp_set_nested
- omp_get_nested
- omp_set_schedule
- omp_get_schedule
- omp_get_thread_limit
- omp_set_max_active_levels
- omp_get_max_active_levels
- Environment variables
- OMP_SCHEDULE
- OMP_NUM_THREADS
- OMP_DYNAMIC
- OMP_NESTED
- OMP_STACKSIZE
- OMP_WAIT_POLICY
- OMP_MAX_ACTIVE_LEVELS
- OMP_THREAD_LIMIT
В свою очередь, например, параллельная конструкция OpenMP имеет следующую спецификацию:
#pragma omp parallel [clause[ [, ]clause] ...] new-line
where clause is one of the following:
- structured-block
- if(scalar-expression)
- num_threads(integer-expression)
- default(shared | none)
- private(list)
- firstprivate(list)
- shared(list)
- copyin(list)
- reduction(operator: list)
Аналогичную ситуацию имеем и для библиотеки MPI (насчитывающей более 200 функций), а также TBB и Parallel Extensions for .NET.
Кроме того, OpenMP, MPI и TBB ориентированы на C++ (и Фортран), тогда как MC# базируется на C#, позволяя использовать богатые библиотеки для .NET.
Также, Cilk, TBB и OpenMP предназначены только для многоядерного программирования (о реальном использовании Cluster OpenMP я пока что мало слышал), тогда как MC# хорошо работает и на Линукс-кластерах. Например, на кластере МГУ Т-60 MC#-программы запускались на 525 узлах / 4200 ядрах.
Наконец, уже имеется реализация MC# для процессора Cell (с использованием библиотеки CellDotNet), и изучаются возможности программирования на MC# графических процессоров с использованием библиотек OpenCL.NET и CUDA.NET.
| |
Re: MC# 2.2 для Windows и Linux
Интересно, есть ли кластеры споддержкой MC#? В конце концов именно установленное ПО на кластере определяет, что использовать.
| |
Re: MC# 2.2 для Windows и Linux
Упс, я так долго собирался задать вопрос, что ответ оказывается уже прозвучал. Прошу прощения.
| |
Re: MC# 2.2 для Windows и Linux
Интересно, есть ли кластеры споддержкой MC#?
В настоящее время, чтобы использовать MC# на кластере, достаточно иметь на нем Linux. Тогда можно установить себе в домашнюю директорию Mono (.NET) и сам MC# (если админы не сделали это централизовано).
Касательно запуска MC#-программ через системы очередей, то на кластере МГУ система очередей Cleo поддерживает MC# (ключ -as mcs). Для остальных систем очередей, которые, например, используются на кластере в MVS100k в МСЦ РАН, необходимо применять собственные скрипты (примеры их даны в документации к MC#).
| | |