Panel użytkownika
Nazwa użytkownika:
Hasło:
Nie masz jeszcze konta?
Opracował: Piotr DejaVu Szawdyński
Biblioteki C/C++

MPI_Reduce

[funkcja] Obliczanie równoległe. Wynik operacji trafia do jednego, wybranego procesu.

Składnia

C/C++
#include <mpi.h>
int MPI_Reduce( void * sendbuf, void * recvbuf, int count, MPI_Datatype datatype, MPI_Op op, int root, MPI_Comm comm );

Opis szczegółowy

Funkcja służy do wykonywania różnych obliczeń rozproszonych. Wynik trafia tylko i wyłącznie do procesu podanego w argumencie
root
.

Argumenty

Nazwa argumentuOpis
sendbuffadres do bufora z danymi.
recvbuffadres na bufor w którym mają znaleźć się wyniki obliczeń.
countilość elementów w buforze.
datatypetyp danych.
opdziałanie do wykonania.
rootnumer procesu rozsyłającego dane.
commkomunikator.

Przykład

C/C++
#include <mpich/mpi.h>

#include <cstdio>
#include <cstdlib>
#include <ctime>

int main( int iCount, char ** pArgs )
{
    MPI_Init( & iCount, & pArgs );
   
    srand( static_cast < unsigned int >( time( 0 ) ) );
    int iLiczba = rand() % 10 + 1; //Wszystkie procesy losują dane
    int iWynik = 0;
   
    MPI_Reduce( & iLiczba, & iWynik, 1, MPI_INT, MPI_SUM, 0 /*root*/, MPI_COMM_WORLD );
   
    printf( "%d, ", iWynik ); //Wszystkie procesy wypisują wynik
    //Jedyny proces, który zwróci wartość !=0 będzie root, tj. proces zerowy
   
    MPI_Finalize();
    return 0;
}

Linki zewnętrzne