.


:




:

































 

 

 

 


MPI SPMD.




SPMD (Single Program Multiple Data), .

. , , . (Single program - Multiple Data) [1,12].

#include <mpi.h>

#include <stdlib.h>

#include <stdio.h>

void main(int argc, char *argv[ ]){

MPI_Init(&argc,&argv);

MPI_Comm_size(MPI_COMM_WORLD,&numprocs);

MPI_Comm_rank(MPI_COMM_WORLD,&myid);

If (myid == 0){/* . */ }

if (myid == 0) { /* . */ } MPI_Finalize();}

3. 2*sin(x) ң [0,1] ̆қ ң.

2*sin(x) [0,1].

double f(double x)

{return 2*sin(x);}

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);

float h=0.05,a=0,b=1,s=0.0;

for(int i=rank; a+h*(i+1)<b+h; i+=size)

{ s+=h*f(a+h*(i+1)); }

if(rank!=0) {

MPI_Send(&s,1,MPI_FLOAT,0,1,MPI_COMM_WORLD); }

if(rank==0) { float r;

MPI_Recv(&r,1,MPI_FLOAT,1,1,MPI_COMM_WORLD,&status); s+=r;

printf("s=%f\n ",s); }}


 

. . .

- . , (, /), , . α. T1. p : (1)

: S= (2)

, . : E= (3)

, α :

S= = (4)





:


: 2016-07-29; !; : 350 |


:

:

, , .
==> ...

1565 - | 1470 -


© 2015-2024 lektsii.org - -

: 0.011 .