Pull to refresh

Установка и начала использования библиотеки MPI

Lumber room
Иногда необходимо запустить приложение на нескольких машинах (или процессорах), чтобы улучшить производительность (т.е. уменьшить время выполнения). Можно создать компьютерную сеть для последующего запуска приложения распределённо по всем узлам. При разработке такого приложения необходимо организовать обмен сообщениями. Я знаю две реализации:
  • использование сокетов и работа с OS API напрямую,
  • использование MPI.
Первый вариант обладает большими возможностями, но библиотека MPI существенно проще и, в действительности, шире применяется в параллельных вычислениях. MPI представляет собой стандарт некоторого набора функций для обмена сообщениями между процессами одного приложения. Существует бесплатная реализация данной библиотеки MPICH2, которая будет использоваться в данной статье. Вы модете найти большое количество мануалов и руководств по функциям библиотеки. Сейчас я остановлюсь только на установке и проверке работоспособности.
Читать дальше →
Total votes 8: ↑6 and ↓2 +4
Views 21K
Comments 7

Erlang. Что это, зачем, как и для кого.

Erlang/OTP *
Статья короткая, если понравиться, попробую осветить этот язык программирования подробнее.

Что



Erlang, это функциональный язык программирования с динамической типизацией, главной особенностью которого является программирование на уровне отдельных процессов(почти аналог threads в других ЯП), коммуникация между которыми реализуется с помощью MPI(Message Passing Interface).

Читать дальше →
Total votes 81: ↑70 and ↓11 +59
Views 69K
Comments 95

Распределенные вычисления на платформе .NET

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

Однако к текущему моменту имеется определенный разрыв между имеющимися на потребительском рынке технологиями аппаратной реализации параллелизма и программными средствами их поддержки. Так, если многоядерные компьютеры общего назначения стали нормой в середине текущего десятилетия, то появление OpenMP — популярного стандарта разработки программ для подобных систем — отмечено почти десятью годами ранее [1]. Практически в то же время возник и стандарт MPI, описывающий способы передачи сообщений между процессами в распределенной среде [2].

Развитие обоих данных стандартов, выражающееся только в расширении функциональности без адаптации парадигм к объектно-ориентированному подходу, приводит к тому, что они оказываются несовместимы с современными платформами программирования, такими как Microsoft .NET Framework. Поэтому разработчикам этих платформ приходится прилагать дополнительные усилия по внедрению средств параллелизма в свои продукты.

В [3] автором была рассмотрена одна из таких технологий, Microsoft Parallel Extensions, позволяющая достаточно простым способом внедрять параллелизм в изначально последовательный управляемый код для компьютеров с общей памятью. Там же была показана возможность и целесообразность использования платформы .NET Framework для проведения научных расчетов. Тем не менее, остается открытым вопрос о применимости данной платформы для разработки программ, используемых для проведения сложных расчетов на системах с распределенной памятью, например, вычислительных кластеров. Данные системы базируются на совокупности соединенных между собой вычислительных узлов, каждый из которых является полноценным компьютером со своим процессором, памятью, подсистемой ввода/вывода, операционной системой, причем каждый узел работает в собственном адресном пространстве.
Читать дальше →
Total votes 57: ↑44 and ↓13 +31
Views 20K
Comments 28

Eclipse, MPICH и PTP для администратора. Настраиваем связку для работы с кластером

Eclipse *
Если блог не подходящий, подскажите, куда можно перенести

Для программирования «под кластер» существует определённое множество технологий, в которое входят такие гранды, как коммерческая Visual Studio, в версии 2010 которой программистами Microsoft была проведена гигантская работа, и свободно-распространяемый Eclipse, о котором и пойдёт речь.

Так, для Eclipse команда разработчиков активно развивает связку PTP & PLDT, всю информацию о которой можно найти на сайте.
Примечания для интересующихся:
* Рассмотрена компиляция проекта на C. Проект на С++ настраивается аналогично. Для Java не тестировалось.
* Руководство для администратора.

Вкратце, до хабраката:
* Eclipse должен быть соответствующим образом собран с необходимыми плагинами (PTP & PLDT);
* должна быть собрана имплементация MPI (в данном случае MPICH, но можно использовать и OpenMPI);
* MPICH запустит своего демона на вычислительных узлах (включая головной)

Читать дальше →
Total votes 6: ↑5 and ↓1 +4
Views 2.5K
Comments 6

Eclipse, MPICH и PTP для пользователя. Настройка и запуск задач на кластере

Eclipse *
Настроить Eclipse, MPICH и PTP — дело одно. И оно решено. Запустить задачу — дело другое. Особенно если это касается конечного пользователя. Осторожно — много картинок.
Читать дальше →
Total votes 2: ↑2 and ↓0 +2
Views 2.7K
Comments 0

Параллельные технологии

Lumber room
Здравствуйте!

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

Первый пост — вводная в параллельные технологии.

Итак, кластер. Всё, что будет написано впоследствии, будет относиться к нашему тестовому кластеру: гомогенной системе из 24 узлов со следующими ТТХ:
Читать дальше →
Total votes 30: ↑29 and ↓1 +28
Views 2.7K
Comments 8

Суперкомпьютеры: третья мировая гонка

High performance *
Только что вернулся с конференции ПАВТ 2011 и хотел бы познакомить уважаемое хабрасообщество с современным состоянием дел в области высокопроизводительных вычислений.
Постараюсь по возможности ссылаться на первоисточники — а именно, на статьи из журнала "Суперкомпьютеры" и материалы конференции.

Зачем это все нужно


Суперкомпьютеры традиционно использовались в военных и научных целях, но в последние годы в их применении произошли революционные изменения, связанные с тем, что их мощность «доросла» до моделирования реальных процессов и предметов при доступной для бизнеса стоимости.
Все, наверное, знают, что в автомобилестроении расчеты на суперкомпьютерах используются для повышения безопасности, например так получил свои 5 звезд Ford Focus. В авиапромышленности выпуск нового реактивного двигателя по традиционной технологии — дорогостоящее удовольствие, например создание АЛ-31 для СУ-27 заняло 15 лет, потребовало создать и разрушить 50 опытных экземпляров и стоило 3,5 млрд. долларов. Двигатель для Сухой Супержет, спроектированный уже с участием суперкомпьютеров, сделали за 6 лет, 600 млн евро и было построено 8 опытных экземпляров.
Нельзя не отметить и фармацевтику — большая часть современных лекарств проектируется с помощью виртуального скрининга , который позволяет радикально снизить затраты и повысить безопасность лекарств.
Дальше — больше.
Сегодня в развитых европейских странах:
47,3% высокотехнологической продукции производится с использованием имитационного моделирования фрагментов проектируемых сложных систем или изделий;
32,3% продукции производится с использованием имитационного моделирования мелкомасштабных аналогов проектируемых систем и изделий;
15% продукции производится с использованием полномасштабного имитационного моделирования проектируемых систем и изделий;
и лишь 5,4% проектируемых сложных систем и изделий производится без имитационного моделирования.

Суперкомпьютерные технологии в современном мире стали стратегической областью, без которой невозможно дальнейшее развитие. Мощность национальных суперкомпьютеров сейчас так же важна, как мощность электростанций или количество боеголовок.
И сейчас в мире началась
Читать дальше →
Total votes 62: ↑57 and ↓5 +52
Views 6.9K
Comments 43

Основы MPI для «чайников»

System Programming *
Sandbox
Так вышло, что мне пришлось тесно столкнуться с изучением параллельных вычислений и в частности MPI. Пожалуй, направление это на сегодняшний день является весьма перспективным, так что хотелось бы показать хабраюзерам основы этого процесса.

Основные принципы и пример

В качестве примера будет использоваться расчет экспоненты (e). Один из вариантов ее нахождения — ряд Тейлора:
e^x=∑((x^n)/n!), где суммирование происходит от n=0 до бесконечности.

Данная формула легко поддается распараллеливанию, так как искомое число является суммой отдельных слагаемых и благодаря этому каждый отдельный процессор может заняться вычислением отдельных слагаемых.
Читать дальше →
Total votes 37: ↑32 and ↓5 +27
Views 88K
Comments 29

Основы MPI

System Programming *
Sandbox
Прочитал статью «Основы MPI для «чайников»» и понял, что статья новичка способна отпугнуть.

Теория


Начнем с начала

Первое время не было единого стандарта (API) для параллельных вычислений и программистам приходилось писать для каждого кластера архитектурно-специфический код. Но, как известно, программисты люди рациональные и быстро было решено организовать стандарты (самые известные — MPI, OpenMP).
Читать дальше →
Total votes 26: ↑23 and ↓3 +20
Views 103K
Comments 19

Cloud Numerics – что это такое?

Microsoft corporate blog
На прошлой неделе я опубликовал заметку о выпуске Microsoft'ом математической библиотеки для работы в облаке.

(Ссылка на сам продукт)

Мне поступило много вопросов о том, зачем нужна эта библиотека, чем она отличается от множества других и как она работает и я решил написать об этом подробнее и привести больше примеров. В этой публикации я приведу пересказ ранее опубликованных статей моим коллегой Ронни Хугервертом и простой пример. В следующих постах я планирую привести более сложные примеры работы Cloud Numerics.

Итак, “Cloud Numerics” является новым Фреймворком для программирования .NET предназначенным для выполнения интенсивных вычислений над большими распределенными массивами данных.

Этот Фреймворк состоит из:

1. Обычные и распределенные контейнеры для массивов данных
2. Системы позволяющей манипулировать распределением данных на узлах кластера в облаке и выполнять над ними параллельные вычисления
3. Широкий набор библиотечных математических функций, которые могут выполняться на множестве узлов кластера одновременно
4. Набор утилит упрощающих развертку и выполнение приложений построенных на Cloud Numerics в среде Windows Azure
Читать дальше →
Total votes 25: ↑18 and ↓7 +11
Views 4.9K
Comments 2

Два гиганта в одной программе — Nvidia CUDA и MPI

Programming *
Recovery mode
Здравствуйте хабровчане, в этой статье я хочу рассказать о взаимодействии двух технологий MPI(mpich2) и NVIDIA CUDA. Упор я хочу сделать именно на саму структуру программы и настройку вышеописанных технологий для работы в одной программе. И так поехали…

Читать дальше →
Total votes 29: ↑27 and ↓2 +25
Views 14K
Comments 21

Метод геометрического параллелелизма и еще немного про MPI

Concurrent computing *
Sandbox
Здравствуйте, сегодня я хочу рассказать про метод геометрического параллелелизма для решения двумерного уравнения теплопроводности. Для наглядности, некоторые фрагменты будут реализованы при помощи MPI на языке C. Я постараюсь не повторяться с этой и этой статьями, и рассказать что-нибудь новенькое.
Читать дальше →
Total votes 8: ↑7 and ↓1 +6
Views 3.6K
Comments 1

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

Microsoft Azure *

151,3 TФлопс на 8064 ядрах с 90,2 процентной эффективностью.


Windows Azure предлагает своим клиентам облачную платформу, которая экономически эффективно и надежно удовлетворяет требованиям масштабных вычислений (Big Compute). При разработке Windows Azure были использованы инфраструктура большой мощности и масштабируемости, новые конфигурации экземпляра, а также новый HPC Pack 2012, которые позволили Windows Azure стать лучшей платформой для приложений использующих масштабные вычисления. В действительности, Windows Azure была протестирована с помощью LINPACK бенчмарка, который подтвердил мощность Windows Azure в масштабных вычислениях. Сетевая производительность очень впечатляет, и составила 151,3 ТФлопс на 8064 ядрах с 90,2 процентной эффективностью – эти результаты были отправлены в Топ-500 и исследователями был получен сертификат, подтверждающий включение в топ 500-от мощных суперкомпьютеров в мире.

Оборудование для масштабных вычислений

В виду заинтересованности Microsoft в масштабных вычислениях, было представлено оборудование, разработанное для удовлетворения потребности клиентов в высокопроизводительных вычислениях. Были представлены две высокопроизводительные конфигурации.
Читать дальше →
Total votes 26: ↑13 and ↓13 0
Views 5.1K
Comments 9

Проба пера на суперкомпьютере Ломоносов

C *Mathematics *Concurrent computing *
Sandbox
image

В этом посте я хочу рассказать о своём опыте расчётов на суперкомпьютере Ломоносов. Я расскажу о решении задачи, честно говоря, для которой не нужно использовать СК, но академический интерес превыше всего. Подробную информацию о
Читать дальше →
Total votes 59: ↑51 and ↓8 +43
Views 41K
Comments 26

Пилотный выпуск видео курса «Параллельное Программирование и Оптимизация для Intel Xeon Phi копроцессоров»

High performance *Programming *Concurrent computing *
Tutorial
Привет, Хабр!

Как указано в названии этого топика, я активно тружусь над созданием учебного видео курса о параллельном программировании и оптимизации кода для высоко-производительных систем на базе Intel'овских архитектур. Ниже представлена дополнительная информация об этом курсе, список покрываемых тем и лабораторных работ, а так же пилотных эпизод, который даст представление о содержании и формате этого курса.

В текущем модуле на примере построения гистограммы будут показаны две оптимизационные техники для улучшения автоматической векторизации кода компилятором и приведены результаты производительности для Intel Xeon CPU и Intel Xeon Phi копроцессора.



Читать дальше →
Total votes 16: ↑14 and ↓2 +12
Views 5.8K
Comments 20

Обмен данными с использованием MPI. Работа с библиотекой MPI на примере Intel® MPI Library

Intel corporate blog Programming *Concurrent computing *
Tutorial


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

Мы приведем краткое описание того, как организован обмен данными в параллельных приложениях на основе MPI, а также ссылки на внешние источники с более подробным описанием. В практической части вы найдете описание всех этапов разработки демонстрационного MPI-приложения «Hello World», начиная с настройки необходимого окружения и заканчивая запуском самой программы.
Читать дальше →
Total votes 22: ↑22 and ↓0 +22
Views 33K
Comments 9

Профилировка гибридных кластерных приложений MPI+OpenMP

Intel corporate blog Programming *Debugging *Concurrent computing *


Библиотеки, реализующие стандарт MPI (Message Passing Interface) — наиболее популярный механизм организации вычислений на кластере. MPI позволяет передавать сообщения между узлами (серверами), но никто не мешает запускать несколько MPI процессов и на одном узле, реализуя потенциал нескольких ядер. Так часто и пишутся HPC приложения, так проще. И пока количество ядер на одном узле было мало, никаких проблем с «чистым MPI» подходом не было. Но сегодня количество ядер идёт на десятки, а то и на сотни для со-процессоров Intel Xeon-Phi. И в такой ситуации запуск десятков процессов на одной машине становится не совсем эффективным.

Дело в том, что MPI процессы общаются через сетевой интерфейс (хоть и реализованный через общую память на одной машине). Это влечет за собой избыточные копирования данных через множество буферов и увеличенный расход памяти.

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

Казалось бы – ладно, используем OpenMP внутри узла, и MPI для меж-узловых коммуникаций. Но не всё так просто. Использование двух фреймворков (MPI и OpenMP) вместо одного не только несёт дополнительную сложность программирования, но и не всегда даёт желаемый прирост производительности – по крайней мере, не сразу. Нужно ещё решить, как распределить вычисления между MPI и OpenMP, и, возможно, решить проблемы, специфичные для каждого уровня.

В этой статье я не буду описывать создание гибридных приложений – информацию найти не сложно. Мы рассмотрим, как можно анализировать гибридные приложения с помощью инструментов Intel Parallel Studio, выбирая оптимальную конфигурацию и устраняя узкие места на разных уровнях.
Читать дальше →
Total votes 20: ↑20 and ↓0 +20
Views 6.1K
Comments 2

96 вычислительных ядер и оптимизация кода муравьиного алгоритма поиска маршрутов

Intel corporate blog High performance *Algorithms *
Translation
Сегодня поговорим об оптимизации кода, который реализует муравьиный алгоритм нахождения оптимальных путей на графах. Узкие места в программе будем искать с помощью Intel VTune Amplifier XE 2016 Update 2, а оптимизировать с использованием MPI, OpenMP и библиотеки Intel Threading Building Blocks.



Наша цель заключается в том, чтобы добиться эффективной работы программы на компьютере с четырьмя процессорами Intel Xeon E7-8890 v4. Система оснащена 512 Гб оперативной памяти, на ней установлена Linux 3.10.0-327.el7.x86_64, код компилировался с помощью Intel Parallel Studio XE 2016 U2.
Читать дальше →
Total votes 50: ↑49 and ↓1 +48
Views 17K
Comments 11

Производительность сети малой латентности InfiniBand на виртуальном кластере HPC HUB

HPC HUB corporate blog High performance *Open source *Big Data *Concurrent computing *
areas

Моделирование сложных физических процессов в наши дни рассматривается как важная технологическая возможность многими современными компаниями. Широко используемым сейчас подходом для создания вычислителей, способных рассчитывать сложные модели, является создание кластерных систем, где вычислительный узел представляет собой сервер общего назначения, подключенный к сети малой латентности и управляемый своей собственной ОС (как правило, из семейства GNU/Linux).

Введение виртуализационного слоя в системное ПО вычислительных кластеров, позволяет в течение нескольких минут создавать “виртуальный кластер”. Такие виртуальные кластера в рамках одной OpenStack инфраструктуры являются абсолютно независимыми. Пользовательские программы внутри них могут изменяться так, как нужно пользователю без каких-либо согласований с кем-либо, а логические устройства, на которых находятся пользовательские данные, недоступны другим виртуальным кластерам.

Поддержка сети малой латентности виртуализационными решениями представляет собой отдельную сложную проблему. Для прикладных программ в большинстве случаев современная виртуализация на основе KVM приводит к минимальным потерям вычислительной мощности (<1%). Однако специализированные тесты сетей малой латентности показывают накладные расходы от виртуализации не более 20% на операциях синхронизации.
Читать дальше →
Total votes 12: ↑12 and ↓0 +12
Views 5.2K
Comments 6

Метод рекурсивной координатной бисекции для декомпозиции расчетных сеток

C++ *Algorithms *Concurrent computing *
Sandbox


Введение


Расчетные сетки широко применяются при решении численных задач с помощью методов конечных разностей. Качество построения такой сетки в значительной степени определяет успех в решении, поэтому иногда сетки достигают огромных размеров. В этом случае на помощь приходят многопроцессорные системы, ведь они позволяют решить сразу 2 задачи:

  1. Повысить скорость работы программы.
  2. Работать с сетками такого размера, который не помещается в оперативной памяти одного процессора.

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

Характерный пример двумерной расчетной сетки приведен на первой картинке. Она описывает пространство вокруг крыла и закрылка самолета, узлы сетки сгущаются к мелким деталям. Несмотря на визуальное различие в размерах разноцветных зон, каждая из них содержит примерно одинаковое число узлов, т.е. можно говорить о хорошей декомпозиции. Именно эту задачу мы и будем решать.
Читать дальше →
Total votes 33: ↑33 and ↓0 +33
Views 8.8K
Comments 6
1