Установка MPI на Linux Ubuntu
Доброго времени суток! С этой самой заметки начнется погружение в параллельный мир параллельного программирования, с целью научиться распараллеливать все, что написано на C/C++ и даже на Fortran. Инструментом нам послужит классическая библиотека MPICH версии 3.0. Но прежде, что такое MPI.
Как гласит википедия, MPI(Message Passing Interface) это программный интерфейс для передачи информации, который позволяет обмениваться сообщениями между процессами, выполняющими одну задачу. По русски говоря, этот интерфейс позволяет распараллелить задачу на несколько процессов в операционной системе. Что в некоторых случаях может серьезно улучшить производительность, когда как в других, наоборот ее ухудшить.
Библиотека MPICH, которую мы будем устанавливать, является одной из самых первых MPI библиотек, поэтому я назвал ее классической. На ее основе в будущем было построено большое множество коммерческих и открытых библиотек, возможно, про некоторые из них я тоже когда нибудь напишу. Приступим к установке.
Установка библиотеки MPI
Как я обожаю повторять, совершенно ничего мудреного в установке не обнаружено. Проходим на официальный сайт, в раздел загрузки . Там нас интересует табличка с платформами и версиями библиотеки, находим Ubuntu и скачиваем. Выглядит это вот так.

Попадаем на страницу Ubuntu packages и выбираем свою платформу. Я себе скачиваю amd64, вот из этого списка.

На этом приключения еще не закончились, мы попадаем на страницу с выбором зеркала для скачивания. Даже Африка есть, поразительно.

Выбираем ближайшее по географическому расположению зеркало, и вот у нас на диске deb пакет библиотеки, который мы устанавливаем двойным кликом. Как видите, больше сил понадобилось на то, чтобы ее скачать.
Запуск программ с использованием MPI
После установки в системе появились компиляторы для языков C/C++ и Fortran, которые называются соответственно mpicc/mpic++ и mpifortran. Каждый из них снабжен подробной документацией, что резко уменьшает продолжительность танцев с бубном.
Рассмотрим компиляцию и запуск на классическом примере — программа «Hello, world».
#include //Не забываем подключить библиотеку к проекту #include "/usr/include/mpich/mpi.h" using namespace std; int main(int argc, char **argv) < //Инициализируем mpi MPI_Init(&argc, &argv); cout
Компилируется это дело командой
mpic++ -o hello hello.cpp
И сразу запускаем с помощью mpiexec, параметр -n говорит о том, сколько процессов запустить для этой программы.
mpiexec -n 5 ./hello
Таким образом мы запустим 5 процессов.
Заключение
На этом заканчивается первое робкое знакомство с библиотекой MPI, мы ее установили и попробовали с ее помощью одновременно 5 раз поздороваться с миром. В следующем выпуске будут новые возможности MPI, а на сегодня у меня все, спасибо за внимание!
mpi install, running in Ubuntu 9
ссылаюсь на документ по адресу
http://cluster.linux-ekb.info/mpi1.php
скачал mpich 1.2.7.
начал устанавливать :
команда
./configure -with-arch=LINUX -with-device=ch_p4 -rsh=/usr/bin/ssh \--prefix=/usr/local/mpich-1.2.6/ch_p4
нормальна прошла вроде.
потом make прошла без вопросов.
однако make install сразу выводит error
не подскажете ли в чем проблема ?
nizamovich
22.11.09 00:23:17 MSK

mpi install, running in Ubuntu 9
список выведенный error в студию!
trex6 ★★★★★
( 22.11.09 00:44:01 MSK )

mpi install, running in Ubuntu 9
Прав, наверное, не хватает
kss ★★★★★
( 22.11.09 00:46:52 MSK )

mpi install, running in Ubuntu 9
aptitude install openmpi, не?
devl547 ★★★★★
( 22.11.09 00:51:32 MSK )
mpi install, running in Ubuntu 9
Для установки библиотеки MPI Chameleon, соответствующей стандарту MPI2, в Ubuntu вовсе не нужно собирать ее из исходников, как написано по указанной ссылке - так ты только захламишь систему. Для тебя уже всё собрано и лежит в репозиториях. Для установки выполняешь простую команду:
sudo apt-get install libmpich2-1.2 libmpich2-dev mpich2 mpich2-doc
и радуешься жизни. Для коммуникаций между узлами будет использоваться ssh. Тебе остается лишь настроить беспарольный доступ к узлам кластера. И всё.
twosev ★★
( 22.11.09 07:35:34 MSK )
Ответ на: mpi install, running in Ubuntu 9 от trex6 22.11.09 00:44:01 MSK
mpi install, running in Ubuntu 9
nizamovich@nizamovich-laptop:~/mpich_inst$ make install
if [ «/usr/local/mpich-1.2.7/ch_p4» = «/usr/local/mpich-1.2.7/ch_p4» ] ; then \
./bin/mpiinstall ; \
else \
./bin/mpiinstall -prefix=/usr/local/mpich-1.2.7/ch_p4 ; \
fi
mkdir: cannot create directory `/usr/local/mpich-1.2.7': Permission denied
**Error making directory /usr/local/mpich-1.2.7/ch_p4**
make: *** [install] Error 1
nizamovich@nizamovich-laptop:~/mpich_inst$
nizamovich
( 22.11.09 08:56:39 MSK ) автор топика
Ответ на: mpi install, running in Ubuntu 9 от twosev 22.11.09 07:35:34 MSK
mpi install, running in Ubuntu 9
nizamovich@nizamovich-laptop:~$ sudo apt-get install libmpich2-1.2 libmpich2-dev mpich2 mpich2-doc
[sudo] password for nizamovich:
Чтение списков пакетов. Готово
Построение дерева зависимостей
Чтение информации о состоянии. Готово
E: Не удалось найти пакет libmpich2-1.2
nizamovich
( 22.11.09 08:59:35 MSK ) автор топика
Ответ на: mpi install, running in Ubuntu 9 от nizamovich 22.11.09 08:59:35 MSK
Re: mpi install, running in Ubuntu 9
Подключи репозиторий universe и почитай какую-нибудь современную книжку по linux.
dn2010 ★★★★★
( 22.11.09 09:24:43 MSK )
Ответ на: mpi install, running in Ubuntu 9 от nizamovich 22.11.09 08:59:35 MSK
mpi install, running in Ubuntu 9
Как уже любезно заметил dn2010, указанные пакеты лежат в репозитории universe.
twosev ★★
( 22.11.09 09:38:59 MSK )
mpi install, running in Ubuntu 9
Если ставить из исходников, то для make install нужны права суперпользователя (для записи в подкаталоги в /usr/local).
oami ★★
( 22.11.09 22:31:43 MSK )
Ответ на: mpi install, running in Ubuntu 9 от oami 22.11.09 22:31:43 MSK
mpi install, running in Ubuntu 9
прошу прощения, однако я в танке.
[quote]
Как уже любезно заметил dn2010, указанные пакеты лежат в репозитории universe.
[/quote]
этот репозиторий получается на внешке же ?
как подключить , если я сижу через прокси ?
оптимальным было бы скачать самому и поставить
прошло все прекрасно , вроде
в результате make install получил
installed MPICH in /usr/local/mpich-1.2.6/ch_p4
/usr/local/mpich-1.2.6/ch_p4/sbin/mpiuninstall may be used to remove the installation.
в /usr/local мпич нормально появился, однако
nizamovich@nizamovich-desktop:~/example$ mpirun -np 3 hello
Приложение 'mpirun' может быть найдено в следующих пакетах:
* lam-runtime
* mpich-bin
* mpich-mpd-bin
* mpich-shmem-bin
* mpich2-mpd
* openmpi-bin
Попробуйте: sudo apt-get install
mpirun: command not found
nizamovich@nizamovich-desktop:~/example$ sudo apt-get install mpich2-mpd
[sudo] password for nizamovich:
Чтение списков пакетов. Готово
Построение дерева зависимостей
Чтение информации о состоянии. Готово
E: Не удалось найти пакет mpich2-mpd
nizamovich@nizamovich-desktop:~/example$ sudo apt-get install mpich-mpd-bin
Чтение списков пакетов. Готово
Построение дерева зависимостей
Чтение информации о состоянии. Готово
E: Не удалось найти пакет mpich-mpd-bin
nizamovich@nizamovich-desktop:~/example$ sudo apt-get install mpich-bin
Чтение списков пакетов. Готово
Построение дерева зависимостей
Чтение информации о состоянии. Готово
E: Не удалось найти пакет mpich-bin
nizamovich@nizamovich-desktop:~/example$ mpicc hello.c -o 1
Приложение 'mpicc' может быть найдено в следующих пакетах:
* lam4-dev
* libmpich-mpd1.0-dev
* libmpich-shmem1.0-dev
* libmpich1.0-dev
* libopenmpi-dev
* mpich2
Попробуйте: sudo apt-get install
mpicc: command not found
nizamovich@nizamovich-desktop:~/example$
Может кто нить скачает попробует поставить ))) ? кому не лень.
Установка MPI на Linux и настройка CLion
Про возможности параллельного программирования, которые предоставляет нам библиотеки MPI можно прочитать в специальной статье: Основы технологии MPI на примерах. Тут же мы рассмтрим как эту библиотеку установить…
Установка MPI в Linux
Кстати, в OpenSuse для установки MPI достаточно добавить соответствующий пакет в Yast. Приведенная ниже инструкция пригодится если в вашем дистрибутиве нет такого пакета или есть, но нужна другая версия. Проходим на официальный сайт, в раздел загрузки. Там нас интересует табличка с платформами и версиями библиотеки, находим Ubuntu и скачиваем. Попадаем на страницу Ubuntu packages и выбираем свою платформу. Мы попадаем на страницу с выбором зеркала для скачивания. … И вот у нас на диске deb пакет библиотеки, который мы устанавливаем двойным кликом. После установки в системе появились компиляторы для языков C/C++ и Fortran, которые называются соответственно mpicc/mpic++ и mpifortran. Каждый из них снабжен подробной документацией, что резко уменьшает продолжительность танцев с бубном. Рассмотрим компиляцию и запуск на классическом примере — программа «Hello, world».
#include //Не забываем подключить библиотеку к проекту #include "/usr/include/mpich/mpi.h" using namespace std; int main(int argc, char **argv) < //Инициализируем mpi MPI_Init(&argc, &argv); cout
Компилируется это дело командой mpic++ -o hello hello.cpp И сразу запускаем с помощью mpiexec, параметр -n говорит о том, сколько процессов запустить для этой программы. mpiexec -n 5 ./hello Таким образом мы запустим 5 процессов.
Подключение MPI в CLion
Проекты на C/C++ в CLion`е собираются с помощью автоматизированной кроссплатформенной системы сборки CMake. Суть в двух словах, мы пишем файл CMakeLists.txt в корне проекта, который содержит правила для сборки, на которые ориентируется Make, либо ее аналог в Windows. Более подробно о CMake написано в статье на хабре. Подключать библиотеку мы будем именно с помощью настроек CMake. Нам нужно добавить библиотеку mpi.h, сделать это можно с помощью правила include_directories() . В качестве аргумента передаем полный путь до библиотеки(в Linux Ubuntu — /usr/include/mpi/ ). Не забываем нажать «Reload changes» справа в углу. Готово, теперь CLion знает все функции MPI, но пока не умеет их собирать. Настройка компилятора прописывается в CMakeLists.txt правилами set() . Напомню, что в Ubuntu компиляторы живут по адресу /usr/bin/mpicc для си, и /usr/bin/mpic++ для си++ соответственно. Поэтому добавляем два правила: set(CMAKE_C_COMPILER "/usr/bin/mpicc") и set(CMAKE_CXX_COMPILER "/usr/bin/mpic++") . Буквально только, после очередной переустановки системы, мной было замечено, что библиотека корректно подключилась только с настройкой cmake_minimum_required(VERSION 3.6) Будьте внимательны.
Как установить mpi на ubuntu
Юрий Сбитнев
Родился в 1965 г. в Волгограде.
Образование высшее: Волгоградский государственный университет, физический факультет, специальность - теоретическая физика.
С 1987 по 1997 г. - системный программист ВЦ ВолГУ, старший преподаватель кафедры радиофизики физического факультета ВолГУ.
Установка системы MPI
Установка системы MPI на компьютерах кластера аналогична установки PVM, в том смысле, что установка сводится к компиляции системы из исходников. В вопросе выбора версии MPI вы можете чувствовать себя свободными и руководствоваться собственными пристрастиями. С моей точки зрения наиболее простыми в использовании являются пакеты MPICH и OpenMPI, которые в отличие от LAM/MPI не трубуют запуска дополнителных демонов и требуют минимальной настройки. Моя личная рекомендация - OpenMPI. Этот пакет в настоящее время активно развивается и меет хорошую интеграцию с системами управления очередями и grid-системами. Кроме того пакет MPICH перестал развиваться с 2005 года.
Что же касается LAM/MPI, то этот пакет LAM/MPI является реализацией протокола, ориентированного на архитектуру параллельного компьютера, основанную на сети рабочих станций. Установка LAM/MPI требует немного меньше усилий, по сравнению с MPICH. Что касается программ, написанных с использованием стандарта передачи сообщений MPI, то они без изменения исходного кода будут одинаковым образом работать в среде обоих пакетов. Далее мы обсудим вопросы установки, администрирования и использования обоих пакетов.
Первым шагом в установке MPI является получение исходных кодов пакета. Взять исходники можно либо непосредственно на сайтах разработчиков: http://www.mcs.anl.gov/mpi/mpich/, http://www.lam-mpi.org/, либо в разделе Download этого сайта. Текущая версия пакета MPICH: 1.2.7p1, LAM/MPI: 7.1.3, OpenMPI: 1.3.3.
Получив архив mpich.tar.gz, lam-7.1.3.tar.gz или openmpi-1.3.3.tar.bz2, вы должны распаковать его в каком-либо каталоге вашей файловой системы и запустить скрипт конфигурации configure:
./configure -with-arch=LINUX -with-device=ch_p4 -rsh=/usr/bin/ssh \ --prefix=/usr/local/mpich-1.2.6/ch_p4
./configure --prefix=/usr --with-rsh="/usr/bin/ssh -x"
./configure --prefix=/usr
В параметрах скрипта configure вы определяете тип архитектуры машины (только для MPICH), на которой будет установлен пакет MPI (в данном случае LINUX) и путь к каталогу, в который пакет будет установлен (/usr/local/mpich-1.2.6/ch_p4 или /usr). Следует отметить, Что на всех узлах кластера вы должны установить MPI в один и тот же каталог. Будучи запущеным, скрипт configure обследует вашу операционую систему и подготовит пакет MPI к компиляции с учетом ее особенностей.
По умолчанию MPI использует rsh в качестве средства межузловых коммуникаций. Как уже прежде говорилось, по некоторым причинам предпочтительнее заменить rsh на более комфортный в администрировании ssh, обеспечив при этом беспарольный доступ к узлам кластера с консольной машины. Для этого при запуске скрипта configure мы используем параметр -rsh=/usr/bin/ssh для MPICH и --with-rsh="/usr/bin/ssh -x" для LAM/MPI. Если программа ssh находится в вашей системе в другом месте, то значение параметра -rsh или --with-rsh должно быть соответствующим образом изменено.
Как можно заметить, параемтр --prefix, определяющий каталог, куда будет установлен пакет, указывает для LAM/MPI на системную область, а для MPICH на отдельный каталог. Сделано это потому, что пакет MPICH по какой-то причине не поддерживает команду деинсталляции "make uninstall". В случае, когда вам по какой-то причине надо будет удалить из системы пакет MPICH, сделать это будет гораздо проще, когда он находится в каком-то одном своем каталоге, вместо того, чтобы долго и нудно вычищать системную область.
Следующим шагом является собственно компиляция и установка MPI. Выполняются эти действия последовательным запуском двух команд, одинаковых для обоих пакетов:
make
make install
Первая из команд компилирует пакет MPI, вторая - устанавливает пакет в систему, перемещая полученные на этапе компиляции бинарные и другие необходимые файлы в область файловой системы, определенную параметром --prefix команды configure.
На этом собственно установка системы MPI заканчивается.