320  9.   SPMD  MPMD   ...

#include <mpi.h> <  MPI-
int Dest;

int Tag = 50;

int WorldSize;

int TaskRank;

string M;

char Messageln[1000];

int N;

strstream Buffer;

MPI_Status Status;

MPI_Init(&argc,&argc); <  

MPI_Conim_rank(MPI_COMM_WORLD,TaskRank) ; <   
MPI_Comm_size(MPI_COMM_WORLD,&WorldSize); <   MPI-
Dest = 0; < ,   .
N = 1;

iflTaskRank '.= 0){

Buffer  "Ready To Work From Rank#"  TaskRank <:< ends;

getline(Buffer,M) ;

MPI_Send(const_char<char*>(M.data()),M.size()+l,

MPI_CHAR,Dest,Tag,MPI_COMM_WORLD); < 
)

else{
do{

cout  "From Supervisor"  endl;

MPI_Recv(MessageIn,100,MPI_CHAR,N,

Tag,MPI_COMM_WORLD,&Status); <  
cout  Messagein  endl;

cout  "Received From "  Messagein  endl;

N++;

} while(N < WorldSize);

}
MPI_Finalize();<  MPI

. 9.1. MPI-

9.2.    
 MPI-

        . -
  ,       (,
  ,      ).
template<class >  multiplies( X,  Y)
{

return(  * Y) ;

}

   ,  ,   
  .      ,    -
    . ,    
multiplies ()  .

//. . .
multiplies<double>(3.2,4.5);