Молодогвардейцев 454015 Россия, Челябинская область, город Челябинск 89085842764
MindHalls logo

Установка MPI на Linux Ubuntu

Доброго времени суток! С этой самой заметки начнется погружение в параллельный мир параллельного программирования, с целью научиться распараллеливать все, что написано на C/C++ и даже на Fortran. Инструментом нам послужит классическая библиотека MPICH версии 3.0. Но прежде, что такое MPI.

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

Библиотека MPICH, которую мы будем устанавливать, является одной из самых первых MPI библиотек, поэтому я назвал ее классической. На ее основе в будущем было построено большое множество коммерческих и открытых библиотек, возможно, про некоторые из них я тоже когда нибудь напишу. Приступим к установке.

Установка библиотеки MPI

Как я обожаю повторять, совершенно ничего мудреного в установке не обнаружено. Проходим на официальный сайт, в раздел загрузки. Там нас интересует табличка с платформами и версиями библиотеки, находим Ubuntu и скачиваем. Выглядит это вот так.

Скачивание библиотеки mpich

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

Выбор архитектуры при загрузке библиотеки mpich

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

Выбор зеркала для скачивания библиотеки mpich

Выбираем ближайшее по географическому расположению зеркало, и вот у нас на диске deb пакет библиотеки, который мы устанавливаем двойным кликом. Как видите, больше сил понадобилось на то, чтобы ее скачать.

Запуск программ с использованием MPI

После установки в системе появились компиляторы для языков C/C++ и Fortran, которые называются соответственно mpicc/mpic++ и mpifortran. Каждый из них снабжен подробной документацией, что резко уменьшает продолжительность танцев с бубном.

Рассмотрим компиляцию и запуск на классическом примере — программа «Hello, world».

#include <iostream>

//Не забываем подключить библиотеку к проекту
#include "/usr/include/mpich/mpi.h"

using namespace std;

int main(int argc, char **argv) {
    //Инициализируем mpi
    MPI_Init(&argc, &argv);
    
    cout << "Hello world" << endl;

    //Завершаем работу с mpi
    MPI_Finalize();

    return 0;
}

Компилируется это дело командой

mpic++ -o hello hello.cpp

И сразу запускаем с помощью mpiexec, параметр -n говорит о том, сколько процессов запустить для этой программы.

mpiexec -n 5 ./hello

Таким образом мы запустим 5 процессов.

Заключение

На этом заканчивается первое робкое знакомство с библиотекой MPI, мы ее установили и попробовали с ее помощью одновременно 5 раз поздороваться с миром. В следующем выпуске будут новые возможности MPI, а на сегодня у меня все, спасибо за внимание!