Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«ΠŸΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠ΅ ΠΈ распрСдСлСнноС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π° Π‘++Β». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 90

Автор Π₯ьюз ΠšΠ°ΠΌΠ΅Ρ€ΠΎΠ½

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