MPI_Send(Buffer,Count, MPI_LONG, TaskRank, Tag,Comm) ;
Π±ΡΠ΄Π΅Ρ ΠΎΡΠΏΡΠ°Π²Π»Π΅Π½ΠΎ Count Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΡΠΈΠΏΠ° long MPI-ΠΏΡΠΎΡΠ΅ΡΡΡ Ρ ΡΠ°Π½Π³ΠΎΠΌ, ΡΠ°Π²Π½ΡΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΡ TaskRank. ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ Buffer ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΡΠΊΠ°Π·Π°ΡΠ΅Π»Ρ Π½Π° Π΄Π°Π½Π½ΡΠ΅, ΠΏΠΎΡΡΠ»Π°Π΅ΠΌΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΡ TaskRank. ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ Count Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΠ·ΡΠ΅Ρ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² Π² Π±ΡΡΠ΅ΡΠ΅ Buffer, Π° Π½Π΅ Π΅Π³ΠΎ ΡΠ°Π· ΠΌ Π΅Ρ. ΠΠ°ΠΆΠ΄ΠΎΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π΅Ρ ΡΠ΅Π³. ΠΡΠΎΡ ΡΠ΅Π³ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΎΡΠ»ΠΈΡΠΈΡΡ ΠΎΠ΄Π½ΠΎ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎΡ Π΄ΡΡΠ³ΠΎΠ³ΠΎ, ΡΠ³ΡΡΠΏΠΏΠΈΡΠΎΠ²Π°ΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ Π² ΠΊΠ»Π°ΡΡΡ, ΡΠ²ΡΠ·Π°ΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΌΠΈ ΠΊΠΎΠΌΠΌΡΠ½ΠΈΠΊΠ°ΡΠΎΡΠ°ΠΌΠΈ ΠΈ ΠΏΡ. Π’Π΅Π³ ΠΈΠΌΠ΅Π΅Ρ ΡΠΈΠΏ int, Π° Π΅Π³ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ. ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ Comm ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΊΠΎΠΌΠΌΡΠ½ΠΈΠΊΠ°ΡΠΎΡ, ΠΊΠΎΡΠΎΡΠΎΠΌΡ Π½Π°Π·Π½Π°ΡΠ°Π΅ΡΡΡ ΠΏΡΠΎΡΠ΅ΡΡ. ΠΡΠ»ΠΈ ΡΠ°Π½Π³ ΠΈ ΠΊΠΎΠΌΠΌΡΠ½ΠΈΠΊΠ°ΡΠΎΡ Π·Π°Π΄Π°ΡΠΈ ΠΈΠ·Π²Π΅ΡΡΠ½Ρ, ΡΡΠΎΠΉ Π·Π°Π΄Π°ΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΡΠ»Π°ΡΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡ. ΠΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ Π²ΡΠ·ΠΎΠ²Π°
MPI_Recv(Buffer, Count, MPI_INT, TaskRank, Tag, Comm, &Status);
Π±ΡΠ΄Π΅Ρ ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΎ Count Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ ΡΠΈΠΏΠ° int ΠΎΡ ΠΏΡΠΎΡΠ΅ΡΡΠ° Ρ ΡΠ°Π½Π³ΠΎΠΌ TaskRank. ΠΠ½ΠΈΡΠΈΠ°ΡΠΎΡ Π²ΡΠ·ΠΎΠ²Π° Π±ΡΠ΄Π΅Ρ Π·Π°Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½ Π΄ΠΎ ΡΠ΅Ρ ΠΏΠΎΡ, ΠΏΠΎΠΊΠ° Π½Π΅ ΠΏΠΎΠ»ΡΡΠΈΡ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΎΡ ΠΏΡΠΎΡΠ΅ΡΡΠ° Ρ ΡΠ°Π½Π³ΠΎΠΌ TaskRank ΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠΌ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ΠΌ ΡΠ΅Π³Π° (Tag). MPI-ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π΄Π»Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² ΡΠ°Π½Π³Π° ΠΈ ΡΠ΅Π³Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ Π³ΡΡΠΏΠΏΠΎΠ²ΡΠ΅ ΡΠΈΠΌΠ²ΠΎΠ»Ρ. Π’Π°ΠΊΠΈΠΌΠΈ Π³ΡΡΠΏΠΏΠΎΠ²ΡΠΌΠΈ ΡΠΈΠΌΠ²ΠΎΠ»Π°ΠΌΠΈ ΡΠ²Π»ΡΡΡΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ MPI_ANY_TAG ΠΈ MPI_ANY_SOURCE. ΠΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΡΡΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ Π²ΡΠ·ΡΠ²Π°ΡΡΠΈΠΉ ΠΏΡΠΎΡΠ΅ΡΡ ΠΏΡΠΈΠΌΠ΅Ρ ΡΠ»Π΅Π΄ΡΡΡΠ΅Π΅ ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΠΎΠ΅ ΠΈΠΌ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎ ΠΎΡ Π΅Π³ΠΎ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ° ΠΈ ΡΠ΅Π³Π°. ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ Status ΠΈΠΌΠ΅Π΅Ρ ΡΠΈΠΏ MPI_Status. ΠΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎΠ± ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ ΠΏΡΠΈΠ΅ΠΌΠ° ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΠΈΠ· ΠΎΠ±ΡΠ΅ΠΊΡΠ° Status. ΠΠ°ΡΠ°ΠΌΠ΅ΡΡ ΡΡΠ°ΡΡΡΠ° ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΡΡΠΈ ΠΏΠΎΠ»Ρ: MPI_SOURCE, MPI_TAG ΠΈ MPI_ERROR. Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, ΠΎΠ±ΡΠ΅ΠΊΡ Status ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΠ΅Π³Π° ΠΈ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ° ΠΏΡΠΎΡΠ΅ΡΡΠ°-ΠΎΡΠΏΡΠ°Π²ΠΈΡΠ΅Π»Ρ. ΠΡΠΈ ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π΅ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ²-ΡΡΠ°ΡΡΠ½ΠΈΠΊΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ ΡΠΎΡΠ½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ ΠΎΡΠΏΡΠ°Π²ΠΈΡΠ΅Π»Π΅ΠΉ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ ΠΈ ΠΈΡ ΠΏΠΎΠ»ΡΡΠ°ΡΠ΅Π»Π΅ΠΉ. ΠΠ±ΡΡΠ½ΠΎ Π΄Π»Ρ ΡΡΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠ΅ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. Π Π°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡΠ°Π±ΠΎΡΡ ΡΠ°ΠΊΠΆΠ΅ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΠ΅ΡΠ΅Π΄ Π½Π°ΡΠ°Π»ΠΎΠΌ ΡΠ°Π±ΠΎΡΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΏΡΠΎΡΠ΅ΡΡ ΡΡΠ°Π·Ρ ΠΆΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ, ΡΠΊΠΎΠ»ΡΠΊΠΎ Π΄ΡΡΠ³ΠΈΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ² Π²ΠΊΠ»ΡΡΠ΅Π½ΠΎ Π² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅. ΠΡΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅ΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠΌ Π²ΡΠ·ΠΎΠ²ΠΎΠΌ: MPI_Comm_size(MFI_COMM_WORLD, &WorldSize) ;
Π‘ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΡΠ°Π·ΠΌΠ΅Ρ Π³ΡΡΠΏΠΏΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ², ΡΠ²ΡΠ·Π°Π½Π½ΡΡ Ρ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠΌ ΠΊΠΎΠΌΠΌΡΠ½ΠΈΠΊΠ°ΡΠΎΡΠΎΠΌ. Π Π΄Π°Π½Π½ΠΎΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ½ΡΠΉ ΠΊΠΎΠΌΠΌΡΠ½ΠΈΠΊΠ°ΡΠΎΡ (MPI_COMM_WORLD). ΠΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ²-ΡΡΠ°ΡΡΠ½ΠΈΠΊΠΎΠ² Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΡΡΡ Π² ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ΅ WorldSize. ΠΡΠΎΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡ ΠΈΠΌΠ΅Π΅Ρ ΡΠΈΠΏ int. ΠΡΠ»ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡ ΠΏΡΠΎΡΠ΅ΡΡΡ ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ WorldSize, Π·Π½Π°ΡΠΈΡ, ΠΎΠ½ Π·Π½Π°Π΅Ρ, ΡΠΊΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ² ΡΠ²ΡΠ·Π°Π½ΠΎ Π΅Π³ΠΎ ΠΊΠΎΠΌΠΌΡΠ½ΠΈΠΊΠ°ΡΠΎΡΠΎΠΌ.
ΠΡΡΠΏΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π·Π°Π΄Π°Ρ ΠΏΠΎ ΠΊΠΎΠΌΠΌΡΠ½ΠΈΠΊΠ°ΡΠΎΡΠ°ΠΌ
ΠΡΠΎΡΠ΅ΡΡΡ ΡΠ²ΡΠ·ΡΠ²Π°ΡΡΡΡ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Ρ ΡΠ°Π½Π³Π° ΠΌ ΠΈ, Π½ΠΎ ΠΈ Ρ ΠΊΠΎ ΠΌΠΌ ΡΠ½ΠΈΠΊΠ°ΡΠΎΡΠ° ΠΌ ΠΈ. ΠΠΎΠΌΠΌΡΠ½ΠΈΠΊΠ°ΡΠΎΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΎΠ±Π»Π°ΡΡΡ ΠΊΠΎΠΌΠΌΡΠ½ΠΈΠΊΠ°ΡΠΈΠΈ Π΄Π»Ρ Π½Π΅ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π° ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ². ΠΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΡ, ΡΠ²ΡΠ·Π°Π½Π½ΡΠ΅ Ρ ΠΎΠ΄Π½ΠΈΠΌ ΠΈ ΡΠ΅ΠΌ ΠΆΠ΅ ΠΊΠΎΠΌΠΌΡΠ½ΠΈΠΊΠ°ΡΠΎΡΠΎΠΌ, ΠΎΡΠ½ΠΎΡΡΡΡΡ ΠΊ ΠΎΠ΄Π½ΠΎΠΉ ΠΈ ΡΠΎΠΉ ΠΆΠ΅ Π³ΡΡΠΏΠΏΠ΅ ΠΊΠΎΠΌΠΌΡΠ½ΠΈΠΊΠ°ΡΠΈΠΈ. Π Π°Π±ΠΎΡΡ, Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΡ MPI-ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΎΠΉ, ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°Π·Π΄Π΅Π»ΠΈΡΡ ΠΌΠ΅ΠΆΠ΄Ρ Π³ΡΡΠΏΠΏΠ°ΠΌΠΈ ΠΊΠΎΠΌΠΌΡΠ½ΠΈΠΊΠ°ΡΠΈΠΉ. ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π²ΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΡ ΠΎΡΠ½ΠΎΡΡΡΡΡ ΠΊ Π³ΡΡΠΏΠΏΠ΅ MPI_C0MM_WORLD. ΠΠ»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ Π½ΠΎΠ²ΡΡ ΠΊΠΎ ΠΌ ΠΌΡΠ½ΠΈΠΊΠ°ΡΠΎΡΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΡΠ½ΠΊΡΠΈΡ MPI_Comm_create (). Π‘ΠΏΠΈΡΠΎΠΊ ΡΡΠ½ΠΊΡΠΈΠΉ (Ρ ΠΊΡΠ°ΡΠΊΠΈΠΌΠΈ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡΠΌΠΈ), ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΠΊΠΎΠΌΠΌΡΠ½ΠΈΠΊΠ°ΡΠΎΡΠ°ΠΌΠΈ, ΠΏΡΠΈΠ²Π΅Π΄Π΅Π½ Π² ΡΠ°Π±Π». 9.1.
ΠΠ»Π°Π³ΠΎΠ΄Π°ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠ°Π½Π³ΠΎΠ² ΠΈ ΠΊΠΎΠΌΠΌΡΠ½ΠΈΠΊΠ°ΡΠΎΡΠΎΠ² MPI-Π·Π°Π΄Π°ΡΠΈ Π»Π΅Π³ΠΊΠΎ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΠΎΠ²Π°ΡΡ ΠΈ ΡΠ°Π·Π»ΠΈΡΠ°ΡΡ. Π Π°Π½Π³ ΠΈ ΠΊΠΎΠΌΠΌΡΠ½ΠΈΠΊΠ°ΡΠΎΡ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΡΡΡΡΠΊΡΡΡΠΈΡΠΎΠ²Π°ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΊΠ°ΠΊ SPMD- ΠΈΠ»ΠΈ MPMD-ΠΌΠΎΠ΄Π΅Π»Ρ Π»ΠΈΠ±ΠΎ ΠΊΠ°ΠΊ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΠΈΡ ΠΊΠΎΠΌΠ±ΠΈΠ½Π°ΡΠΈΡ. ΠΠ»Ρ ΡΠΏΡΠΎΡΠ΅Π½ΠΈΡ ΠΊΠΎΠ΄Π° MPI-ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΡΠ°Π½Π³ ΠΈ ΠΊΠΎΠΌΠΌΡΠ½ΠΈΠΊΠ°ΡΠΎΡ Π² ΡΠΎΡΠ΅ΡΠ°Π½ΠΈΠΈ Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΠ·ΠΎΠ²Π°Π½Π½ΡΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌΠΈ ΠΌΠ΅ΡΠΎΠ΄Π°ΠΌΠΈ. Π¨Π°Π±Π»ΠΎΠ½Ρ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈ ΠΌ Π΅Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΊ Π°ΡΠΏΠ΅ΠΊΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ Π΄Π°Π½Π½ΡΡ SIMD-ΠΌΠΎΠ΄Π΅Π»ΠΈ, Π½ΠΎ ΠΈ ΠΊ Π·Π°Π΄Π°Π½ΠΈΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΡΠΈΠΏΠΎΠ² Π΄Π°Π½Π½ΡΡ . ΠΡΠΎ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΠΏΡΠΎΡΠ°Π΅Ρ ΡΡΡΡΠΊΡΡΡΡ ΠΌΠ½ΠΎΠ³ΠΈΡ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ, ΡΡΠ΅Π±ΡΡΡΠΈΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π±ΠΎΠ»ΡΡΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΌΠ° ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΡ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ, Π½ΠΎ Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌΠΈ ΡΠΈΠΏΠ°ΠΌΠΈ Π΄Π°Π½Π½ΡΡ . ΠΠ»Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΌΠΎΠ΄Π΅Π»ΠΈ MPMD (MIMD) ΠΌΡ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π»ΡΠ΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΏΠΎΠ»ΠΈΠΌΠΎΡΡΠΈΠ·ΠΌ (ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡΠ°ΠΌΠΈ), ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΏΠΎΠ»ΠΈΠΌΠΎΡΡΠΈΠ·ΠΌ (ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΡΠΉ ΡΠ°Π±Π»ΠΎΠ½Π°ΠΌΠΈ), ΠΎΠ±ΡΠ΅ΠΊΡΡ-ΡΡΠ½ΠΊΡΠΈΠΈ ΠΈ ΠΏΡΠ΅Π΄ΠΈΠΊΠ°ΡΡ. ΠΠ»Ρ ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΡ Π²ΡΠ΅Π³ΠΎ ΠΎΠ±ΡΠ΅ΠΌΠ° ΡΠ°Π±ΠΎΡΡ MPI-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ ΡΡΠΈ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ Π² ΡΠΎΡΠ΅ΡΠ°Π½ΠΈΠΈ Ρ ΡΠ°Π½Π³Π°ΠΌΠΈ ΠΈ ΠΊΠΎΠΌΠΌΡΠ½ΠΈΠΊΠ°ΡΠΎΡΠ°ΠΌΠΈ MPI-ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ². ΠΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π° ΡΠ°Π±ΠΎΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π΄Π΅Π»ΠΈΡΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ΅ΠΌΠ΅ΠΉΡΡΠ²Π°ΠΌΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ². ΠΡΠ΅ ΡΠ΅ΠΌΠ΅ΠΉΡΡΠ²Π° ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΡΠ²ΡΠ·ΡΠ²Π°ΡΡΡΡ Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌΠΈ ΠΊΠΎΠΌΠΌΡΠ½ΠΈΠΊΠ°ΡΠΎΡΠ°ΠΌΠΈ. Π‘ΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΠΈΠ΅ ΡΠ΅ΠΌΠ΅ΠΉΡΡΠ² ΠΎΠ±ΡΠ΅ΠΊΡΠΎΠ² ΡΠ°Π·Π»ΠΈΡΠ½ΡΠΌ ΠΊΠΎΠΌΠΌΡΠ½ΠΈΠΊΠ°ΡΠΎΡΠ°ΠΌ ΡΠΏΠΎΡΠΎΠ±ΡΡΠ²ΡΠ΅Ρ ΠΌΠΎΠ΄ΡΠ»ΡΠ½ΠΎΡΡΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ° MPI-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. Π’Π°ΠΊΠΎΠΉ ΡΠΏΠΎΡΠΎΠ± ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ ΠΏΠΎΠ½ΡΡΡ, ΠΊΠ°ΠΊ ΡΠ»Π΅Π΄ΡΠ΅Ρ ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΡ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ·ΠΌ. ΠΡ ΡΠ±Π΅Π΄ΠΈΠ»ΠΈΡΡ, ΡΡΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ Π΄Π΅Π»Π°Π΅Ρ MPl-ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π±ΠΎΠ»Π΅Π΅ ΠΎΡΠΊΡΡΡΡΠΌΠΈ Π΄Π»Ρ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ, Π°ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠΎΡΡΡΠΌΠΈ Π΄Π»Ρ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ, ΠΎΡΠ»Π°Π΄ΠΊΠΈ ΠΈ ΡΠ΅ΡΡΠΈΡΠΎΠ²Π°Π½ΠΈΡ.
|Π’Π°Π±Π»ΠΈΡΠ° 9.1. Π€ΡΠ½ΠΊΡΠΈΠΈ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΠ΅Π΄Π»Ρ ΡΠ°Π±ΠΎΡΡ Ρ ΠΊΠΎΠΌΠΌΡΠ½ΠΈΠΊΠ°ΡΠΎΡΠ°ΠΌΠΈ
Π€ΡΠ½ΠΊΡΠΈΠΈ
ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅
int
MPI_Intercomm_create
(MPI_Comm LocalComm,int LocalLeader, MPI_Comm PeerComm, int remote_leader, int MessageTag, MPI_Comm *CommOut);
Β
Β Π‘ΠΎΠ·Π΄Π°Π΅Ρ
inter
-ΠΊΠΎΠΌΠΌΡΠ½ΠΈΠΊΠ°ΡΠΎΡ ΠΈΠ· Π΄Π²ΡΡ
intra
ΠΊΠΎΠΌΠΌΡΠ½ΠΈΠΊΠ°ΡΠΎΡΠΎΠ²
int
MPI_Intercomm_merge
(MPI_Comm Comm,Β int High,
MPI_Comm *CommOut);
Β Π‘ΠΎΠ·
Π΄
Π°Π΅Ρ
intra
-ΠΊΠΎΠΌΠΌΡΠ½ΠΈΠΊΠ°ΡΠΎΡ ΠΈΠ·
inter- ΠΊΠΎΠΌΠΌΡΠ½ΠΈΠΊΠ°ΡΠΎΡΠ°
int
MPI_Cartdim_get
(MPI_Comm Comm,int *NDims);
Β ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π΄Π΅ΠΊΠ°ΡΡΠΎΠ²Ρ ΡΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ, ΡΠ²ΡΠ·Π°Π½Π½ΡΡ Ρ ΠΊΠΎΠΌΠΌΡΠ½ΠΈΠΊΠ°ΡΠΎΡΠΎΠΌ
int
MPI_Cart_create
(MPI_Comm CommOld, int NDims, int *Dims, int *Periods, int Reorder, MPI_Comm *CommCart)
Π‘ΠΎΠ·Π΄Π°Π΅Ρ Π½ΠΎΠ²ΡΠΉ ΠΊΠΎΠΌΠΌΡΠ½ΠΈΠΊΠ°ΡΠΎΡ, ΠΊ ΠΊΠΎΡΠΎΡΠΎΠΌΡ ΠΏΡΠΈΡΠΎΠ΅Π΄ΠΈΠ½ΡΠ΅ΡΡΡ ΡΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠ°Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ
int
MPI_Cart_sub
(MPI_Comm Comm, int *RemainDims, MPI_Comm *CommNew);
ΠΠ΅Π»ΠΈΡ ΠΊΠΎΠΌΠΌΡΠ½ΠΈΠΊΠ°ΡΠΎΡ Π½Π° ΠΏΠΎΠ΄Π³ΡΡΠΏΠΏΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠ±ΡΠ°Π·ΡΡΡ Π΄Π΅ΠΊΠ°ΡΡΠΎΠ²Ρ ΠΏΠΎΠ΄ΡΠΈΡΡΠ΅ΠΌΡ Π±ΠΎΠ»Π΅Π΅ Π½ΠΈΠ·ΠΊΠΎΠΉ ΡΠ°Π·ΠΌΠ΅ΡΠ½ΠΎΡΡΠΈ
int
MPI_Cart_shift
(MPI_Comm Comm, int Direction, int Display,int *Source,int *Destination);
Π‘ΡΠΈΡΡΠ²Π°Π΅Ρ ΡΠΌΠ΅ΡΠ΅Π½Π½ΡΠ΅ ΡΠ°Π½Π³ΠΈ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ° ΠΈ ΠΏΡΠΈΠ΅ΠΌΠ½ΠΈΠΊΠ° ΠΏΡΠΈ Π·Π°Π΄Π°Π½Π½ΠΎΠΌ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠΈ ΠΈ Π²Π΅Π»ΠΈΡΠΈΠ½Π΅ ΡΠΌΠ΅ΡΠ΅Π½ΠΈΡ
int
MPI_Cart_map
(MPI_Comm CommOld, int NDims, int *Dims, int *Periods, int *Newrank);
ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΡΠ΅Ρ ΠΏΡΠΎΡΠ΅ΡΡ Π² Π΄Π΅ΠΊΠ°ΡΡΠΎΠ²Ρ ΡΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ
int
MPI_Cart_get
(MPI_Comm Comm, int MaxDims, int *Dims, int *Periods, int *Coords);
ΠΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π΄Π΅ΠΊΠ°ΡΡΠΎΠ²Ρ ΡΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ, ΡΠ²ΡΠ·Π°Π½Π½ΡΡ Ρ ΠΊΠΎΠΌΠΌΡΠ½ΠΈΠΊΠ°ΡΠΎΡΠΎΠΌ
int
MPI_Cart_coords
(MPI_Comm Comm, int Rank, int MaxDims, int *Coords);
ΠΡΡΠΈΡΠ»ΡΠ΅Ρ ΠΊΠΎΠΎΡΠ΄ΠΈΠ½Π°ΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠ° Π² Π΄Π΅ΠΊΠ°ΡΡΠΎΠ²ΠΎΠΉ ΡΠΎΠΏΠΎΠ»ΠΎΠ³ΠΈΠΈ ΠΏΡΠΈ Π·Π°Π΄Π°Π½Π½ΠΎΠΌ ΡΠ°Π½Π³Π΅ Π² Π³ΡΡΠΏΠΏΠ΅
int
MPI_Comm_create
(MPI_Comm Comm, MPI_Group Group, MPI_Comm *CommOut) ;
Π‘ΠΎΠ·Π΄Π°Π΅Ρ Π½ΠΎΠ²ΡΠΉ ΠΊΠΎΠΌΠΌΡΠ½ΠΈΠΊΠ°ΡΠΎΡ
int
MPI_Comm_rank
(MPI_Comm Comm, int *Rank ) ;
ΠΡΡΠΈΡΠ»ΡΠ΅Ρ ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠ°Π½Π³ Π²ΡΠ·ΡΠ²Π°ΡΡΠ΅Π³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ° Π² ΠΊΠΎΠΌΠΌΡΠ½ΠΈΠΊΠ°ΡΠΎΡΠ΅
int
MPI_Cart_rank
(MPI_Comm Comm, int *Coords, int *Rank );
ΠΡΡΠΈΡΠ»ΡΠ΅Ρ ΠΈ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠ°Π½Π³ ΠΏΡΠΎΡΠ΅ΡΡΠ° Π² ΠΊΠΎΠΌΠΌΡΠ½ΠΈΠΊΠ°ΡΠΎΡΠ΅ ΠΏΡΠΈ Π·Π°Π΄Π°Π½Π½ΠΎΠΌ Π΄Π΅ΠΊΠ°ΡΡΠΎΠ²ΠΎΠΌ ΠΌΠ΅ΡΡΠΎΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠΈ
int
MPI_Comm_compare
(MPI_Comm Comm1, MPI_Comm Comm2, int *Result);
Π‘ΡΠ°Π²Π½ΠΈΠ²Π°Π΅Ρ Π΄Π²Π° ΠΊΠΎΠΌΠΌΡΠ½ΠΈΠΊΠ°ΡΠΎΡΠ° Comm1 ΠΈ Comm2
int
MPI_Comm_dup
( MPI_Comm CommIn, MPI_Comm *CommOut) ;