MPI (Message Passing Interface, Интерфейс передачи сообщений) -- международный стандарт для распределенного параллельного программирования, которым поддерживаются языки C, C++, Fortran. MPI включает в себя набор библиотечных функций для взаимодействия между процессами.
Основным преимуществом MPI является работа независимо от архитектуры. MPI поддерживает однопроцессорные и многопроцессорные системы, с общей или раздельной памятью.
Попробуем его в деле.
Установка в Ubuntu:
$ sudo apt-get install mpich2
Настройка:
Основным преимуществом MPI является работа независимо от архитектуры. MPI поддерживает однопроцессорные и многопроцессорные системы, с общей или раздельной памятью.
Попробуем его в деле.
Установка в Ubuntu:
$ sudo apt-get install mpich2
Настройка:
$ gedit .mpd.conf
$ cat .mpd.conf
MPD_SECRETWORD=brunql
$ chmod 600 .mpd.conf
Запуск демона обработки сообщений MPI в фоновом режиме:$ cat .mpd.conf
MPD_SECRETWORD=brunql
$ chmod 600 .mpd.conf
$ mpd &
[1] 2609
Судя по всему mpd это просто скрипт на python-е:
[1] 2609
$ 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>
Приложение будет запущено в 4 процесса и перед выводом на печать будет добавляться префикс с номером процесса `%rank%: `
3: MPI Process
1: MPI Process
2: MPI Process
0: MPI Process
Продолжение обещает быть захватывающим! Битва OpenMP vs MPI! Неравный бой? Проверим в следующей серии данной заметки.
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! Неравный бой? Проверим в следующей серии данной заметки.
Комментариев нет:
Отправить комментарий
А у тебя есть клавиатура? Здесь можно попробовать воспользоваться ей по прямому назначению.