ΠΠΎΠ½ΡΡΠΈΠ΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ ΡΠ°Π±Π»ΠΎΠ½Π°ΠΌΠΈ. ΠΡΠ½ΠΎΠ²Π½Π°Ρ ΠΈΠ΄Π΅Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ β ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΡΡ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎ Π±Π»Π°Π³ΠΎΠΏΡΠΈΡΡΠ½ΡΠ΅ ΡΡΠ»ΠΎΠ²ΠΈΡ Π΄Π»Ρ ΠΌΠ½ΠΎΠ³ΠΎΠΊΡΠ°ΡΠ½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΠ ΠΏΡΡΠ΅ΠΌ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π΅Π³ΠΎ ΠΏΡΠΎΠ΅ΠΊΡΠΎΠ² Π² ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠΉ ΠΎΠ±ΡΠ΅ΠΉ ΡΠΎΡΠΌΠ΅. Π¨Π°Π±Π»ΠΎΠ½Ρ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΠΎΠ±ΠΎΠ±ΡΠ΅Π½Π½ΡΠ΅ Π°Π±ΡΡΡΠ°ΠΊΡΠΈΠΈ ΠΏΡΠΎΡΠ΅Π΄ΡΡ, Π° ΡΠ°Π±Π»ΠΎΠ½Ρ ΠΊΠ»Π°ΡΡΠΎΠ² β ΠΎΠ±ΠΎΠ±ΡΠ΅Π½Π½ΡΠ΅ Π°Π±ΡΡΡΠ°ΠΊΡΠΈΠΈ Π΄Π°Π½Π½ΡΡ . ΠΠ±ΡΡΠ½ΠΎ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ½ΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΡΠΆΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ ΡΠΎΠ±ΠΎΠΉ ΠΎΠ±ΠΎΠ±ΡΠ΅Π½Π½ΡΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ. ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΡΠΌΠΌΠΈΡΡΠ΅Ρ Π΄Π²Π° ΡΠΈΡΠ»Π°, ΠΎΠ±ΡΡΠ½ΠΎ ΡΠ°ΡΡΡΠΈΡΠ°Π½Π° Π½Π° ΡΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π»ΡΠ±ΡΡ Π΄Π²ΡΡ ΡΠΈΡΠ΅Π». ΠΠΎ Π΅ΡΠ»ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ ΡΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, Π΅Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΠΎΠ±ΡΠΈΡΡ, Β«Π½Π°ΡΡΠΈΠ²Β» Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΈΠ΄ΡΡΠ³ΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΈ Π½Π°Π΄ Π΄Π²ΡΠΌΡ Π»ΡΠ±ΡΠΌΠΈ ΡΠΈΡΠ»Π°ΠΌΠΈ. ΠΡΠ»ΠΈ ΠΌΡ Ρ ΠΎΡΠΈΠΌ ΠΏΠΎΠ»ΡΡΠΈΡΡ ΡΠ°ΠΌΡΡ ΠΎΠ±ΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΌΠΎΠΆΠ΅ΠΌ Π»ΠΈ ΠΌΡ ΠΎΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡΡ Π»ΠΈΡΡ Π½Π° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Π½Π°Π΄ Π΄Π²ΡΠΌΡ ΡΠΈΡΠ»Π°ΠΌΠΈ? Π ΡΡΠΎ Π΅ΡΠ»ΠΈ ΡΡΠΈ ΡΠΈΡΠ»Π° Π±ΡΠ΄ΡΡ ΠΈΠΌΠ΅ΡΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ ΡΠΈΠΏΡ, Ρ.Π΅. ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡΠ½ΡΠ΅ ΠΈ Π²Π΅ΡΠ΅ΡΡΠ²Π΅Π½Π½ΡΠ΅? ΠΠΎΠΆΠ½ΠΎ Π·Π°Π»ΠΎΠΆΠΈΡΡ Π² ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ Π½Π°Π΄ Π»ΡΠ±ΡΠΌΠΈ Π΄Π²ΡΠΌΡ ΡΠΈΡΠ»Π°ΠΌΠΈ, Π½ΠΎ ΠΈ Π½Π°Π΄ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΡΠΈΠΏΠΎΠ² ΠΈΠ»ΠΈ ΠΊΠ»Π°ΡΡΠΎΠ² ΡΠΈΡΠ΅Π» (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ ΡΠΈΠΏΠ° int, float, double ΠΈΠ»ΠΈ ΠΊΠΎΠΌΠΏΠ»Π΅ΠΊΡΠ½ΡΠΌΠΈ). ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΠΌΡ Ρ ΠΎΡΠ΅Π»ΠΈ Π±Ρ, ΡΡΠΎΠ±Ρ Π½Π°ΡΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π²ΡΠΏΠΎΠ»Π½ΡΠ»Π° Π»ΡΠ±ΡΡ Π±ΠΈΠ½Π°ΡΠ½ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ Π½Π° Π»ΡΠ±ΠΎΠΉ ΠΏΠ°ΡΠ΅ ΡΠΈΡΠ΅Π» β Π³Π»Π°Π²Π½ΠΎΠ΅, ΡΡΠΎΠ±Ρ ΡΡΠ° ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ Π±ΡΠ»Π° Π»Π΅Π³Π°Π»ΡΠ½Π° Π΄Π»Ρ ΡΡΠΈΡ Π΄Π²ΡΡ ΡΠΈΡΠ΅Π». ΠΡΠ»ΠΈ ΠΌΡ ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅ΠΌ ΡΠ°ΠΊΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, Π΅Π΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π² ΠΏΠ»Π°Π½Π΅ ΠΌΠ½ΠΎΠ³ΠΎΠΊΡΠ°ΡΠ½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π±ΡΠ΄ΡΡ ΠΏΡΠΎΡΡΠΎ Π³ΡΠ°Π½Π΄ΠΈΠΎΠ·Π½ΡΠΌΠΈ. ΠΡΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π‘++-ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΡ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡ ΡΠ°Π±Π»ΠΎΠ½Ρ ΡΡΠ½ΠΊΡΠΈΠΉ ΠΈ ΠΊΠ»Π°ΡΡΠΎΠ². Π’Π°ΠΊΠΎΠ³ΠΎ Π²ΠΈΠ΄Π° ΠΎΠ±ΠΎΠ±ΡΠ΅Π½ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ Π΄ΠΎΠ±ΠΈΡΡΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ.
ΠΠ°ΡΠ°Π΄ΠΈΠ³ΠΌΠ° ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ, ΠΏΠΎΠ»Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΠ°Π» ΡΡΠ΅Π΄ΡΡΠ²Π°ΠΌΠΈ Π‘++, Π² ΡΠΎΡΠ΅ΡΠ°Π½ΠΈΠΈ Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ ΠΏΠ°ΡΠ°Π΄ΠΈΠ³ΠΌΠΎΠΉ, ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΠΌΠΎΠΉ ΡΡΠ΅Π΄ΡΡΠ²Π°ΠΌΠΈ Π‘++, ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΠΊ MPI-ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ. ΠΠ°ΠΊ ΡΠΏΠΎΠΌΠΈΠ½Π°Π»ΠΎΡΡ Π² Π³Π»Π°Π²Π΅ 1, MPI (Message Passing Interface β ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ ΡΠΎΠΎΠ± Ρ Π΅Π½ΠΈΠΉ) β ΡΡΠΎ ΡΡΠ°Π½Π΄Π°ΡΡ ΡΡΠ΅Π΄ΡΡΠ² ΠΊΠΎΠΌΠΌΡΠ½ΠΈΠΊΠ°ΡΠΈΠΈ, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ ΠΏΡΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ, ΡΡΠ΅Π±ΡΡΡΠΈΡ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ·ΠΌΠ°. MPI-ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΡΠ΅Π°Π»ΠΈΠ·ΡΠ΅ΡΡΡ ΠΊΠ°ΠΊ ΠΊΠΎΠ»Π»Π΅ΠΊΡΠΈΡ, ΡΠΎΡΡΠΎΡ Ρ Π°Π» Π±ΠΎΠ»Π΅Π΅ ΡΠ΅ΠΌ ΠΈΠ· 300 ΡΡΠ½ΠΊΡΠΈΠΉ. ΠΠ I-ΡΡΠ½ΠΊΡΠΈΠΈ ΠΎΡ Π²Π°ΡΡΠ²Π°ΡΡ Π±ΠΎΠ»ΡΡΠΎΠΉ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½: ΠΎΡ ΠΏΠΎΡΠΎΠΆΠ΄Π΅Π½ΠΈΡ Π·Π°Π΄Π°Ρ Π΄ΠΎ Π±Π°ΡΡΠ΅Ρ Π½ ΠΎΠΉ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠΉ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ. Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ ΡΠ°ΠΊΠΆΠ΅ Π‘++-ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π΄Π»Ρ MPI-ΡΡΠ½ΠΊΡΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΈΠ½ΠΊΠ°ΠΏΡΡΠ»ΠΈΡΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΎΠ½Π°Π»ΡΠ½ΠΎΡΡΡ MPI-ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° Π² Π½Π°Π±ΠΎΡΠ΅ ΠΊΠ»Π°ΡΡΠΎΠ². ΠΠ΄Π½Π°ΠΊΠΎ Π² Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ΅ MPI Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΠΌΠ½ΠΎΠ³ΠΈΠ΅ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π° ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎ ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠΉ ΠΏΠ°ΡΠ°Π΄ΠΈΠ³ΠΌΡ. ΠΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ² ΠΏΠ°ΡΠ°ΠΌΠ΅Π³ΡΠΈΠ·ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π² Π½Π΅ΠΉ ΡΠ°ΠΊΠΆΠ΅ Π½Π΅Ρ. ΠΠΎΡΡΠΎΠΌΡ, Π½Π΅ΡΠΌΠΎΠ³ΡΡ Π½Π° ΡΠΎ ΡΡΠΎ MPI-ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ Π²Π΅ΡΡΠΌΠ° Π²Π°ΠΆΠ΅Π½ ΠΊΠ°ΠΊ ΡΡΠ°Π½Π΄Π°ΡΡ, Π΅Π³ΠΎ Β«ΠΌΠΎΡΠ½ΠΎΡΡΠΈΒ» Π½Π΅ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΡΠΏΡΠΎΡΡΠΈΡΡ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅. ΠΠ°, ΠΎΠ½ Π΄Π΅ΠΉΡΡΠ²ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π°Π΅Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ° ΠΎΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠΎΠΊΠ΅ΡΠΎΠ² ΠΈ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΈΠ·Π±Π΅ΠΆΠ°ΡΡ ΠΌΠ½ΠΎΠ³ΠΈΡ Π»ΠΎΠ²ΡΡΠ΅ΠΊ ΡΠ΅ΡΠ΅Π²ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ. ΠΠΎ ΡΡΠΎΠ³ΠΎ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ. ΠΠ΄Π΅ΡΡ ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΠ³ΠΎΠ΄ΠΈΡΡΡΡ ΠΊΠ»Π°ΡΡΠ΅ΡΠ½ΠΎΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΏΡΠΎΠ³ΡΠ° ΠΌΠΌ ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ SMP-ΠΈ ΠΠ Π -ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠΉ. Π¨Π°Π±Π»ΠΎΠ½Π½ΡΠ΅ ΠΈ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΡΡΠ΅Π΄ΡΡΠ²Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π‘++ ΠΌΠΎΠ³ΡΡ ΠΎΠΊΠ°Π·Π°ΡΡΡΡ Π²Π΅ΡΡΠΌΠ° ΠΏΠΎΠ»Π΅Π·Π½ΡΠΌΠΈ Π΄Π»Ρ Π΄ΠΎΡΡΠΈΠΆΠ΅Π½ΠΈΡ ΡΡΠΎΠΉ ΡΠ΅Π»ΠΈ. Π ΡΡΠΎΠΉ Π³Π»Π°Π²Π΅ Π΄Π»Ρ ΡΠΏΡΠΎΡΠ΅Π½ΠΈΡ Π±Π°Π·ΠΎΠ²ΡΡ SPMD- ΠΈ MPMD-ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΎΠ² Π²ΠΌΠ΅ΡΡΠ΅ Ρ ΠΠ I-ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΡΠ°Π±Π»ΠΎΠ½Ρ ΠΈ ΠΌΠ΅ΡΠΎΠ΄Ρ ΠΎΠ±ΡΠ΅ΠΊΡΠ½ΠΎ-ΠΎΡΠΈΠ΅Π½ΡΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ.
ΠΠ΅ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡΠΈΡ ΡΠ°Π±ΠΎΡ Π΄Π»Ρ MPI-ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°
ΠΠ΄Π½ΠΈΠΌ ΠΈΠ· ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ² ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ MPI-ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° ΠΏΠ΅ΡΠ΅Π΄ ΡΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π½ΡΠΌΠΈ UNIX/Linux-ΠΏΡΠΎΡΠ΅ΡΡΠ°ΠΌΠΈ ΠΈ ΡΠΎΠΊΠ΅ΡΠ°ΠΌΠΈ ΡΠ²Π»ΡΠ΅ΡΡΡ ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡΡ MPI-ΡΡΠ΅Π΄Ρ Π·Π°ΠΏΡΡΠΊΠ°ΡΡ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΡ ΡΠ°ΠΉΠ»ΠΎΠ². MPI-ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΌΠΎΠΆΠ΅Ρ Π·Π°ΠΏΡΡΡΠΈΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΡ ΡΠ°ΠΉΠ»ΠΎΠ², ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΌΠ΅ΠΆΠ΄Ρ Π½ΠΈΠΌΠΈ Π±Π°Π·ΠΎΠ²ΡΠ΅ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΡ ΠΈ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΠΎΠ²Π°ΡΡ ΠΊΠ°ΠΆΠ΄ΡΠΉ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠΉ ΡΠ°ΠΉΠ». Π ΡΡΠΎΠΉ ΠΊΠ½ΠΈΠ³Π΅ ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ MPICH-ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ MPI-ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ° [17]1. ΠΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ $ mpirun -np 16 /tmp/mpi_example1 Π±ΡΠ΄Π΅Ρ Π·Π°ΠΏΡΡΠ΅Π½ΠΎ 16 ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ². ΠΠ°ΠΆΠ΄ΡΠΉ ΠΏΡΠΎΡΠ΅ΡΡ Π±ΡΠ΄Π΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Ρ ΠΈΠΌΠ΅Π½Π΅ΠΌ mpi_example1. ΠΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΡ ΠΌΠΎΠ³ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠ°Π·Π½ΡΠ΅ Π΄ΠΎΡΡΡΠΏΠ½ΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΡ. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΏΡΠΎΡΠ΅ΡΡ ΠΌΠΎΠΆΠ΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π½Π° ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠΌ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ΅, Π΅ΡΠ»ΠΈ MPI ΡΠ°Π±ΠΎΡΠ°Π΅Ρ Π² ΡΡΠ΅Π΄Π΅ ΠΊΠ»Π°ΡΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΡΠΈΠΏΠ°. ΠΡΠΎΡΠ΅ΡΡΡ ΠΏΡΠΈ ΡΡΠΎΠΌ Π±ΡΠ΄ΡΡ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎ. ΠΠΎΠΌΠ°Π½Π΄Π° mpirun ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΡΡΠ΅Π½Π°ΡΠΈΠΉ, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΡΠ²Π΅ΡΠ°Π΅Ρ Π·Π° Π·Π°ΠΏΡΡΠΊ MPI-Π·Π°Π΄Π°Π½ΠΈΠΉ Π½Π° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΠΌ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π΅ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠΎΠ². ΠΡΠΎΡ ΡΡΠ΅Π½Π°ΡΠΈΠΉ ΠΈΠ·ΠΎΠ»ΠΈΡΡΠ΅Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΎΡ ΠΏΠΎΠ΄ΡΠΎΠ±Π½ΠΎΡΡΠ΅ΠΉ Π·Π°ΠΏΡΡΠΊΠ° ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ² Π½Π° ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ°Ρ . ΠΠ΄Π΅ΡΡ Π±ΡΠ΄Π΅Ρ Π·Π°ΠΏΡΡΠ΅Π½ΠΎ 16 ΠΊΠΎΠΏΠΈΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ mpi_examplel. ΠΠ΅ΡΠΌΠΎΡΡΡ Π½Π° ΡΠΎ ΡΡΠΎ ΡΡΠ°Π½Π΄Π°ΡΡ MPI-2 ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΡΡΠ½ΠΊΡΠΈΠΈ ΠΏΠΎΡΠΎΠΆΠ΄Π΅Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π»Ρ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ ΠΊ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΠΎΠΌΡ MPI-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ, ΡΡΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ Π½Π΅ ΠΏΠΎΠΏΡΠ»ΡΡΠ΅Π½. Π ΠΎΠ±ΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ² ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ ΠΏΡΠΈ Π·Π°ΠΏΡΡΠΊΠ΅ MPI-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. Π‘Π»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ, Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΡΡΠ°ΡΡΠ° ΡΡΠΎΡ ΠΊΠΎΠ΄ ΡΠΈΡΠ°ΠΆΠΈΡΡΠ΅ΡΡΡ N ΡΠ°Π·. ΠΠΏΠΈΡΠ°Π½Π½Π°Π» ΡΡ Π΅ΠΌΠ° Π»Π΅Π³ΠΊΠΎ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅Ρ ΠΌΠΎΠ΄Π΅Π»Ρ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ·ΠΌΠ° SPMD (SIMD), ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΎΠ΄Π½Π° ΠΈ ΡΠ° ΠΆΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π·Π°ΠΏΡΡΠΊΠ°Π΅ΡΡΡ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°Ρ . ΠΠ°Π½Π½ΡΠ΅, Ρ ΠΊΠΎΡΠΎΡΡΠΌΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ Π½ΡΠΆΠ½ΠΎ ΡΠ°Π±ΠΎΡΠ°ΡΡ, ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΡΡ ΠΏΠΎΡΠ»Π΅ Π·Π°ΠΏΡΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ. ΠΡΠΎΡ ΠΌΠ΅ΡΠΎΠ΄ ΡΡΠ°ΡΡΠ° ΠΎΠ΄Π½ΠΎΠΉ ΠΈ ΡΠΎΠΉ ΠΆΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½Π° Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°Ρ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°Π·Π²ΠΈΡΡ, Π΅ΡΠ»ΠΈ Π½ΡΠΆΠ½ΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ ΠΌΠΎΠ΄Π΅Π»Ρ MPMD. ΠΡΡ ΡΠ°Π±ΠΎΡΠ° MPI-ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π΄Π΅Π»ΠΈΡΡΡ ΠΌΠ΅ΠΆΠ΄Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠ°ΠΌΠΈ, Π·Π°ΠΏΡΡΠΊΠ°Π΅ΠΌΡΠΌΠΈ Π½Π° ΡΡΠ°ΡΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. ΠΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ Β«ΠΎΠ±ΡΠ·Π°Π½Π½ΠΎΡΡΠ΅ΠΉΒ» (Ρ.Π΅. ΠΊΡΠΎ ΡΡΠΎ Π΄Π΅Π»Π°Π΅Ρ ΠΈ ΠΊΠ°ΠΊΠΈΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΡ ΡΠ°Π±ΠΎΡΠ°ΡΡ Ρ ΠΊΠ°ΠΊΠΈΠΌΠΈ Π΄Π°Π½Π½ΡΠΌΠΈ) ΡΠΎΠ΄Π΅ΡΠΆΠΈΡΡΡ Π² ΡΠ°ΠΌΠΎΠΉ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅. ΠΠΎΠΌΠΏΡΡΡΠ΅ΡΡ, Π·Π°Π΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°Π½Π½ΡΠ΅ Π² ΡΡΠΎΠΉ ΡΠ°Π±ΠΎΡΠ΅, ΠΏΠ΅ΡΠ΅ΡΠΈΡ Π» ΡΡΡΡΡ Π² ΡΠ°ΠΉΠ»Π΅ machines.arch (machines.Linux Π² Π΄Π°Π½Π½ΠΎ ΠΌ ΡΠ»ΡΡΠ°Π΅) Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌ ΠΈ ΠΌ Π΅Π½ΠΈ ΠΊΠΎ ΠΌ ΠΏΡΡΡΠ΅ΡΠ°. ΠΠ΅ΡΡΠΎΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΡΡΠΎ Π³ ΠΎ ΡΠ°ΠΉΠ»Π° Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΉ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΈ. Π Π·Π°Π²ΠΈΡΠΈ ΠΌ ΠΎΡΡΠΈ ΠΎΡ ΠΈΠ½ΡΡΠ°Π»Π»ΡΡΠΈΠΈ, Π²Π·Π°ΠΈ ΠΌ ΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ ΠΊΠΎ ΠΌ ΠΏΡΡΡΠ΅ΡΠΎΠ², ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Π½ΡΡ Π² ΡΡΠΎ ΠΌ ΡΠ°ΠΉΠ»Π΅, Π±ΡΠ΄Π΅Ρ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΎ Π»ΠΈΠ±ΠΎ ΠΊΠΎ ΠΌ Π°Π½Π΄ΠΎΠΉ ssh, Π»ΠΈΠ±ΠΎ UNIX/Linux-ΠΊΠΎ ΠΌ Π°Π½Π΄ΠΎΠΉ ' r'.
ΠΠΈΡΡΠ΅ΡΠ΅Π½ΡΠΈΠ°ΡΠΈΡ Π·Π°Π΄Π°Ρ ΠΏΠΎ ΡΠ°Π½Π³Ρ
ΠΠΎ Π²ΡΠ΅ΠΌΡ ΡΡΠ°ΡΡΠ° ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ², Π²ΠΊΠ»ΡΡΠ΅Π½Π½ΡΡ Π² MPI-ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅, ΠΠ I-ΡΡΠ΅Π΄Π° Π½Π°Π·Π½Π°ΡΠ°Π΅Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡ ΠΏΡΠΎΡΠ΅ΡΡΡ ΡΠ°Π½Π³ ΠΈ Π³ΡΡΠΏΠΏΡ ΠΊΠΎΠΌΠΌΡΠ½ΠΈΠΊΠ°ΡΠΈΠΈ. Π Π°Π½Π³ Ρ ΡΠ°Π½ΠΈΡΡΡ ΠΊΠ°ΠΊ int-Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΠΈ ΡΠ»ΡΠΆΠΈΡ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡΠ° ΠΏΡΠΎΡΠ΅ΡΡΠ° Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ MPI-Π·Π°Π΄Π°ΡΠΈ. ΠΡΡΠΏΠΏΠ° ΠΊΠΎΠΌΠΌΡΠ½ΠΈΠΊΠ°ΡΠΈΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ, ΠΊΠ°ΠΊΠΈΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΡ ΠΌΠΎΠΆΠ½ΠΎ Π²ΠΊΠ»ΡΡΠΈΡΡ Π²ΠΎ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ ΡΠΈΠΏΠ° Β«ΡΠΎΡΠΊΠ°-ΡΠΎΡΠΊΠ°Β». Π‘Π½Π°ΡΠ°Π»Π° Π²ΡΠ΅ MPI-ΠΏΡΠΎΡΠ΅ΡΡΡ ΠΎΡΠ½ΠΎΡΡΡ ΠΊ Π³ΡΡΠΏΠΏΠ΅, Π΄Π΅ΠΉΡΡΠ²ΡΡΡΠ΅ΠΉ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ. ΠΠ°ΠΌΠ΅Π½ΠΈΡΡ ΡΠ»Π΅Π½ΠΎΠ² Π³ΡΡΠΏΠΏΡ ΠΊΠΎΠΌΠΌΡΠ½ΠΈΠΊΠ°ΡΠΈΠΈ ΠΌΠΎΠΆΠ½ΠΎ, Π·Π°ΠΏΡΡΡΠΈΠ² ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ. ΠΠΎΡΠ»Π΅ ΡΡΠ°ΡΡΠ° ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ° Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ Π΅Π³ΠΎ ΡΠ°Π½Π³ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ MPI_Comm_rank (). Π€ΡΠ½ΠΊΡΠΈΡ MPI_Comm_rank () Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠ°Π½Π³ Π²ΡΠ·ΡΠ²Π°ΡΡΠ΅Π³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ°. Π ΠΏΠ΅ΡΠ²ΠΎΠΌ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ΅, ΠΏΠ΅ΡΠ΅Π΄Π°Π²Π°Π΅ΠΌΠΎΠΌ ΡΡΠ½ΠΊΡΠΈΠΈ, Π²ΡΠ·ΡΠ²Π°ΡΡΠΈΠΉ ΠΏΡΠΎΡΠ΅ΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ, Ρ ΠΊΠ°ΠΊΠΈΠΌ ΠΊΠΎΠΌΠΌΡΠ½ΠΈΠΊΠ°ΡΠΎΡΠΎΠΌ ΠΎΠ½ ΡΠ²ΡΠ·ΡΠ²Π°Π΅ΡΡΡ, Π° Π΅Π³ΠΎ ΡΠ°Π½Π³ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΡΡΡ Π²ΠΎ Π²ΡΠΎΡΠΎΠΌ Π°ΡΠ³ΡΠΌΠ΅Π½ΡΠ΅. ΠΡΠΈΠΌΠ΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΡΠ½ΠΊΡΠΈΠΈ MPI_Comm_rank () ΠΏΠΎΠΊΠ°Π·Π°Π½ Π² Π»ΠΈΡΡΠΈΠ½Π³Π΅ 9.1.
// ΠΠΈΡΡΠΈΠ½Π³ 9.1. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ MPI_Comm_rank() //.. .
int Tag = 33;
int WorldSize;
int TaskRank;
MPI_Status Status;
MPI_Init (&argc, &argv) ;
MPI_Comm_rank(MPI_COMM_WORLD, &TaskRank) ; MPI_Comm_size(MPI_COMM_WORLD, &WorldSize) ; //.. .
ΠΠΎΠΌΠΌΡΠ½ΠΈΠΊΠ°ΡΠΎΡΡ MPI_COMM_WORLD ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΏΡΠΈ Π·Π°ΠΏΡΡΠΊΠ΅ Π½Π°Π·Π½Π°ΡΠ°ΡΡΡΡ Π²ΡΠ΅ MPI-Π·Π°Π΄Π°ΡΠΈ. MPI-Π·Π°Π΄Π°ΡΠΈ Π³ΡΡΠΏΠΏΠΈΡΡΡΡΡΡ ΠΏΠΎ ΠΊΠΎΠΌΠΌΡΠ½ΠΈΠΊΠ°ΡΠΎΡΠ°ΠΌ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡ Π³ΡΡΠΏΠΏΡ ΠΊΠΎΠΌΠΌΡΠ½ΠΈΠΊΠ°ΡΠΈΠΈ. Π Π»ΠΈΡΡΠΈΠ½Π³Π΅ 9.1 ΡΠ°Π½Π³ Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅ΡΡΡ Π² ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ TaskRank. ΠΠ°ΠΆΠ΄ΡΠΉ ΠΏΡΠΎΡΠ΅ΡΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΠΌΠ΅ΡΡ ΡΠ½ΠΈΠΊΠ°Π»ΡΠ½ΡΠΉ ΡΠ°Π½Π³. ΠΠΎΡΠ»Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΠ°Π½Π³Π° Π·Π°Π΄Π°ΡΠ΅ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΡΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ Π΄Π°Π½Π½ΡΠ΅ Π»ΠΈΠ±ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΠΊΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ Π΅ΠΉ Π½Π°Π΄Π»Π΅ΠΆΠΈΡ Π²ΡΠΏΠΎΠ»Π½ΠΈΡΡ. Π Π°ΡΡΠΌΠΎΡΡΠΈΠΌ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ Π²Π°ΡΠΈΠ°Π½ΡΡ.
ΠΠ°ΡΠΈΠ°Π½Ρ 1. ΠΡΠΎΡΡΠ°Ρ MPMD-ΠΌΠΎΠ΄Π΅Π»Ρ Β ΠΠ°ΡΠΈΠ°Π½Ρ 2. ΠΡΠΎΡΡΠ°Ρ SIMD-ΠΌΠΎΠ΄Π΅Π»Ρ
if(TaskRank == 1){ Β if(TaskRank == 1){
// ΠΠ΅ΠΊΠΎΡΠΎΡΡΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ. Β // ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ ΠΎΠ΄Π½ΠΈ Π΄Π°Π½Π½ΡΠ΅.
} Β }
if (TaskRank == 2){ Β if(TaskRank == 2){
// ΠΡΡΠ³ΠΈΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ. Β // ΠΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌ Π΄ΡΡΠ³ΠΈΠ΅ Π΄Π°Π½Π½ΡΠ΅.
} Β }
Π ΠΏΠ΅ΡΠ²ΠΎΠΌ Π²Π°ΡΠΈΠ°Π½ΡΠ΅ ΡΠ°Π½Π³ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΡΠ°Π·Π³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΡΠΎΡΠ΅ΡΡΠ°ΠΌΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΠΎΠΉ ΡΠ°Π±ΠΎΡΡ, Π° Π²ΠΎ Π²ΡΠΎΡΠΎΠΌ β Π΄Π»Ρ ΡΠ°Π·Π³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ , ΠΊΠΎΡΠΎΡΡΠ΅ ΠΎΠ½ΠΈ Π΄ΠΎΠ»ΠΆΠ½Ρ ΠΎΠ±ΡΠ°Π±Π°ΡΡΠ²Π°ΡΡ. ΠΠ΅ΡΠΌΠΎΡΡΡ Π½Π° ΡΠΎ ΡΡΠΎ ΠΊΠ°ΠΆΠ΄ΡΠΉ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠΉ MPI-ΡΠ°ΠΉΠ» ΡΡΠ°ΡΡΡΠ΅Ρ Ρ ΠΎΠ΄Π½ΠΈΠΌ ΠΈ ΡΠ΅ΠΌ ΠΆΠ΅ ΠΊΠΎΠ΄ΠΎΠΌ, ΠΌΠΎΠ΄Π΅Π»Ρ MPMD (MIMD) ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°ΡΡ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΡΠ°Π½Π³ΠΎΠ² ΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π³ΠΎ Π²Π΅ΡΠ²Π»Π΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. ΠΠ½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ ΠΏΠΎΡΠ»Π΅ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΠ°Π½Π³Π° Π΄Π°Π½Π½ΡΠΌ ΠΏΡΠΎΡΠ΅ΡΡΠ° ΠΌΠΎΠΆΠ½ΠΎ Π½Π°Π·Π½Π°ΡΠΈΡΡ Π½Π΅ΠΊΠΎΡΠΎΡΡΠΉ ΡΠΈΠΏ, ΡΠ΅ΠΌ ΡΠ°ΠΌΡΠΌ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΠ² ΠΊΠΎΠ½ΠΊΡΠ΅Ρ-Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅, Ρ ΠΊΠΎΡΠΎΡΡΠΌΠΈ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠ°Π±ΠΎΡΠ°ΡΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΡΠΉ ΠΏΡΠΎΡΠ΅ΡΡ. Π Π°Π½Π³ ΡΠ°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΏΡΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ. MPI-Π·Π°Π΄Π°ΡΠΈ ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΡΠΈΡΡΡΡ ΠΎΠ΄Π½Π° Π΄ΡΡΠ³ΡΡ ΠΏΡΠΈ ΠΎΠ±ΠΌΠ΅Π½Π΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΡΠΌΠΈ ΠΏΠΎ ΡΠ°Π½Π³Π°ΠΌ ΠΈ ΠΊΠΎ ΠΌΠΌ ΡΠ½ΠΈΠΊΠ°ΡΠΎΡΠ° ΠΌ. Π€ΡΠ½ΠΊΡΠΈΠΈ MPI_Send () | MPI_Recv() ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡ ΡΠ°Π½Π³ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠΊΠ°Π·Π°Π½ΠΈΡ ΠΏΡΠ½ΠΊΡΠΎΠ² Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΈ ΠΎΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ. ΠΡΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ Π²ΡΠ·ΠΎΠ²Π°