- . . MPI_Group , . , , : MPI_GROUP_EMPTY , , ; MPI_GROUP_NULL , . MPI, - . , - (, , ), "" : , , .
. MPI , . . MPI_Comm_rank . , . MPI . MPI_COMM_WORLD, . . MPI_Comm_rank , . MPI_Comm_size . , 0 , . -, . MPI-
var p:pointer;
rank,size:integer;
begin
//
p:=nil;
rank:=0;
MPI_Init(@rank,p);
MPI_Comm_rank(MPI_COMM_WORLD,@rank);
MPI_Comm_size(MPI_COMM_WORLD,@size);
if rank=0 then begin
//
end else begin
//
end; MPI_Finalize(); end.
pi.
int main(int argc,char **argv)
{
int size,rank;
MPI_Status status;
MPI_Init(&argc,&argv);
MPI_Comm_rank(MPI_COMM_WORLD,&rank);
MPI_Comm_size(MPI_COMM_WORLD,&size);
floatn=500.0,a=0.0,s=0.0,r=0.0;
if(rank!=0) // {
for(int i=0; i<n; i+=2)
{s+=4*(pow(-1,i)/(2*i+1));}
MPI_Send(&s,1,MPI_FLOAT,0,1,MPI_COMM_WORLD); }
if(rank==0) //
{ for(int i=1; i<n; i+=2)
{s+=4*(pow(-1,i)/(2*i+1));}
MPI_Recv(&r,1,MPI_FLOAT,1,1,MPI_COMM_WORLD,&status); s+=r; //
printf("s=%f\n",s);}}
1. ү. . .
, , , .
|
|
, . , , . . . , . , . , . , , . , . . , , , , , . , . , , . , : , . , . .
Semaphore fork[5] = { 1, 1, 1, 1, 1 };
Prilosopher(){ // i
while (1) { P(fork[i]); // P(fork[(i+1)%5]); // <>
V(fork[i]); V(fork[(i+1)%5]) } }