Dzisiaj jest 11 stycznia 2025 r.
Chcę dodać własny artykuł

MPICH

MPICH

MPICH to darmowa, przenośna implementacja standardu MPI, umożliwiająca komunikację między aplikacjami działającymi równolegle. Jest przeznaczona do użycia na małych klastrach i dostępna na systemach MS Windows oraz Unix. Rozszerzeniem MPICH jest MPICH2, a także MPICH-G2, która wspiera aplikacje w środowiskach gridowych.

Charakterystyka

MPICH zapewnia mechanizmy komunikacji dla obliczeń równoległych. W najnowszej wersji MPICH2 wprowadzono:

  • wsparcie dla komunikacji jednostronnej
  • rozszerzoną funkcjonalność MPI-IO

Instalacja

Procedura instalacji MPICH:

  1. Pobierz źródła programu z: mpich.tar.gz.
  2. Rozpakuj plik: # tar xfz mpich.tar.gz.
  3. W katalogu /mpich wydaj komendę: # ./configure –prefix=/opt/mpich.
  4. Kompiluj program: # make.
  5. Zainstaluj: # make install.

Konfiguracja

W pliku machines.LINUX (katalog: /opt/mpich/share lub wskazany w opcji prefix) dodaj nazwy hostów klastra w formacie:

hostname1:liczba_procesów

Komunikacja Punkt-Punkt

Przykład przesyłania komunikatu między procesami:

#include 
#include "mpi.h"
#define TAG 0
#define COUNT 25
#define SOURCE 0
#define DEST 1

int main(int argc, char *argv[]) {
    int rank, size;
    MPI_Status status;
    char Msg[] = "Komunikat od procesu 0";
    char Recv[COUNT];
    
    MPI_Init(&argc,&argv);
    MPI_Comm_size(MPI_COMM_WORLD,&size);
    MPI_Comm_rank(MPI_COMM_WORLD,&rank);
    
    if (size > 1) {
        if (rank == DEST) {
            MPI_Recv(Recv, COUNT, MPI_CHAR, SOURCE, TAG, MPI_COMM_WORLD, &status);
            printf("process %d has received: '%s'n", rank, Recv);
        } else if (rank == SOURCE) {
            MPI_Send(Msg, COUNT, MPI_CHAR, DEST, TAG, MPI_COMM_WORLD);
        }
    }
    
    MPI_Finalize();
    return 0;
}

Komunikacja Grupowa

MPICH udostępnia funkcje do komunikacji z wszystkimi procesami w grupie, takie jak:

  • MPI_Bcast: rozsyła komunikat do wszystkich procesów.
  • MPI_Scatter: dzieli dane i rozsyła je do procesów.
  • MPI_Gather: zbiera dane z procesów.
  • MPI_Reduce: wykonuje operacje na danych przesyłanych przez procesy.

Pochodne Typy Danych

W MPI można tworzyć pochodne typy danych, co pozwala na elastyczne przesyłanie danych. Typy te obejmują:

  • Contiguous: elementy są kopiami danego typu.
  • Vector: elementy z odstępami między sobą.
  • Struct: elementy różnych typów z określonymi odstępami.

Linki Zewnętrzne