.


:




:

































 

 

 

 





: . (// / ..), .. .

 

MPI_Reduce: root:

 

int vector[16];

int resultVector[16];

MPI_Comm_rank(MPI_COMM_WORLD, &myRank);

for(i=0; i<16; i++)

vector[i] = myRank*100 + i;

MPI_Reduce(

vector, /* */

resultVector, /* 'root' */

16, /* */

MPI_INT, /* */

MPI_SUM, /* : */

0, /* , 'resultVector' */

MPI_COMM_WORLD /* */

);

if(myRank==0)

/* resultVector, */

 

MPI 12:

 

ü MPI_MAX MPI_MIN ;

ü MPI_SUM ;

ü MPI_PROD ;

ü MPI_LAND, MPI_BAND, MPI_LOR, MPI_BOR, MPI_LXOR, MPI_BXOR - , , ;

ü MPI_MAXLOC, MPI_MINLOC - / - .

 

1 .

 

1

 
MPI_MAX, MPI_MIN
MPI_SUM, MPI_PROD , ,
MPI_LAND, MPI_LOR, MPI_LXOR
MPI_LAND, MPI_LOR, MPI_LXOR ( .. )

 

. . , ("(a+b)+c = a+(b+c)") ("a+b = b+a").

MPI_Allreduce: , 'root' .

MPI_Reduce_scatter: -, . - . .

MPI_Scan: MPI_Allreduce , . : - i 0 i .

, - - - , .

- , . , , . , , MPI_COMM_WORLD .

( ) , . , , , . .

.

. - :

 

MPI_Comm tempComm;

MPI_Comm_dup(MPI_COMM_WORLD, &tempComm);

/*... tempComm... */

MPI_Comm_free(&tempComm);

 

- . .

. , .

 

MPI_Comm_split(

existingComm, /* , MPI_COMM_WORLD */

indexOfNewSubComm, /* , */

rankInNewSubComm, /* */

&newSubComm); /* */

 

, - ; ( , ). indexOfNewSubComm MPI_UNDEFINED, newSubComm MPI_COMM_NULL, .

. , : , . :

 

1. MPI_Comm_group , ;

2. MPI_Group_xxx ;

3. MPI_Comm_create ; , - , ;

4. MPI_Group_free.

 

, , MPI_Comm_split, . MPI 7 .





:


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


:

:

, .
==> ...

1400 - | 1210 -


© 2015-2024 lektsii.org - -

: 0.014 .