суббота, 18 июня 2011 г.

Архитектура вычислительных систем. MPI

MPI (Message Passing Interface, Интерфейс передачи сообщений) -- международный стандарт для распределенного параллельного программирования, которым поддерживаются языки C, C++, Fortran. MPI включает в себя набор библиотечных функций для взаимодействия между процессами.

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

Попробуем его в деле.

Установка в Ubuntu:
$ sudo apt-get install mpich2

Настройка:
$ gedit .mpd.conf 
$ cat .mpd.conf 
MPD_SECRETWORD=brunql
$ chmod 600 .mpd.conf

Запуск демона обработки сообщений MPI в фоновом режиме:
$ mpd &
[1] 2609

Судя по всему mpd это просто скрипт на python-е:
$ ps aux | grep mpd
brunql    2609  0.4  0.4  37096  8460 pts/1    S    10:09   0:00 python2.6 /usr/bin/mpd
brunql    2614  0.0  0.0   7644   940 pts/1    S+   10:09   0:00 grep --color=auto mpd

Простейший пример для проверки работоспособности:

#include <stdio.h>
#include <mpi.h>

int main (int argc, char* argv[])
{
    MPI_Init(&argc, &argv);

printf("MPI Process\n");

    MPI_Finalize();
    return 0;
}

Компиляция и запуск:

$ mpicc main.c -o mpiapp
$ mpirun -l -n 4 ./mpiapp

Приложение будет запущено в 4 процесса и перед выводом на печать будет добавляться префикс с номером процесса `%rank%: `
3: MPI Process
1: MPI Process
2: MPI Process
0: MPI Process

Продолжение обещает быть захватывающим! Битва OpenMP vs MPI! Неравный бой? Проверим в следующей серии данной заметки.

Комментариев нет:

Отправить комментарий

А у тебя есть клавиатура? Здесь можно попробовать воспользоваться ей по прямому назначению.