Π‘ΠΈΡΡΠ΅ΠΌΠ° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΠΈ ΡΠ°ΡΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ²Π°Π½ΠΈΡ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π½Π° ΠΌΡΠ»ΡΡΠΈΠΏΡΠΎΡΠ΅ΡΡΠΎΡ
Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΠΈΠΌΠ΅Π΅Ρ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π° Ρ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ ΡΠΏΡΠΎΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π² ΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, ΠΊΠΎΠ³Π΄Π° Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ Π΅ΡΡΡ Π΄Π²Π° ΡΡΠΎΠ²Π½Ρ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ·ΠΌΠ° — ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ·ΠΌ ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΠΎΠ΄Π·Π°Π΄Π°ΡΠ°ΠΌΠΈ ΠΈ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ·ΠΌ Π²Π½ΡΡΡΠΈ ΠΏΠΎΠ΄Π·Π°Π΄Π°ΡΠΈ. Π’Π°ΠΊΠ°Ρ ΡΠΈΡΡΠ°ΡΠΈΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠΎΠ±Π»Π°ΡΡΠ½ΡΡ (ΠΌΠ½ΠΎΠ³ΠΎΠ±Π»ΠΎΡΠ½ΡΡ ) ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΡΠ΅ΡΠ΅Π½ΠΈΡ Π²ΡΡΠΈΡΠ»ΠΈΡΠ΅Π»ΡΠ½ΡΡ Π·Π°Π΄Π°Ρ. ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°ΡΡ Π½Π° MPI ΡΠ°ΠΌΠΈ ΠΏΠΎΠ΄Π·Π°Π΄Π°ΡΠΈ Π³ΠΎΡΠ°Π·Π΄ΠΎ ΡΠ»ΠΎΠΆΠ½Π΅Π΅, ΡΠ΅ΠΌ ΠΈΡ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅… Π§ΠΈΡΠ°ΡΡ Π΅ΡΡ >
Π‘ΠΈΡΡΠ΅ΠΌΠ° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΠΈ ΡΠ°ΡΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ²Π°Π½ΠΈΡ ΠΎΡΠΎΠ±ΡΠ°ΠΆΠ΅Π½ΠΈΡ Π½Π° ΠΌΡΠ»ΡΡΠΈΠΏΡΠΎΡΠ΅ΡΡΠΎΡ (ΡΠ΅ΡΠ΅ΡΠ°Ρ, ΠΊΡΡΡΠΎΠ²Π°Ρ, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½ΡΡΠΎΠ»ΡΠ½Π°Ρ)
ΠΠ½Π½ΠΎΡΠ°ΡΠΈΡ
Π¦Π΅Π»Ρ Π΄Π°Π½Π½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ — ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΠΈ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ² Π±Π»ΠΎΠΊΠ° «ΠΠΊΡΠΏΠ΅ΡΡ Π΄Π»Ρ ΠΌΡΠ»ΡΡΠΈΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°» Π² ΠΏΡΠΎΠ΅ΠΊΡΠ΅ «ΠΠΊΡΠΏΠ΅ΡΠΈΠΌΠ΅Π½ΡΠ°Π»ΡΠ½Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΠΈ ΡΠ°ΡΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ²Π°Π½ΠΈΡ». ΠΠ° ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈΠΈ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠΎΠ² Π°Π½Π°Π»ΠΈΠ·Π° ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΈ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΌΡΠ»ΡΡΠΈΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ° «ΠΠΊΡΠΏΠ΅ΡΡ» Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ ΠΈ ΠΎΡΠ΅Π½ΠΈΠ²Π°Π΅Ρ ΡΠ°Π·Π»ΠΈΡΠ½ΡΠ΅ Π²Π°ΡΠΈΠ°Π½ΡΡ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ ΠΈ Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°ΡΠΈΠΉ Π΄Π°Π½Π½ΡΡ . ΠΠΎΡΠ»Π΅ Π²ΡΠ±ΠΎΡΠ° Π½Π°ΠΈΠ»ΡΡΡΠ΅Π³ΠΎ Π²Π°ΡΠΈΠ°Π½ΡΠ° ΠΎΠ½ Π²ΡΡΠ°Π²Π»ΡΠ΅Ρ Π² ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ OpenMP, ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²ΠΎΠΌ ΠΊΠΎΡΠΎΡΡΡ ΠΎΠ½Π° ΠΏΡΠ΅Π²ΡΠ°ΡΠ°Π΅ΡΡΡ Π² ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π΄Π»Ρ ΠΌΡΠ»ΡΡΠΈΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°. ΠΡΠΎΠΌΠ΅ ΡΠΎΠ³ΠΎ, ΡΠΊΡΠΏΠ΅ΡΡ Π²ΡΠ΄Π°Π΅Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΠΏΡΠΎΠ³Π½ΠΎΠ·ΠΈΡΡΠ΅ΠΌΠΎΠΉ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΠΈ ΡΠ°ΡΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ²Π°Π½ΠΈΡ.
1. ΠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅
- 1.1 Π Π°ΡΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ
- 1.2 Π‘ΡΠ°Π½Π΄Π°ΡΡ OpenMP
- 1.3 Π Π°ΡΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ²Π°Π½ΠΈΠ΅ Π΄Π»Ρ OpenMP
- 1.4 CΡΡΡ ΠΈ Π°ΠΊΡΡΠ°Π»ΡΠ½ΠΎΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ
- 2. Π¦Π΅Π»ΠΈ Π΄ΠΈΠΏΠ»ΠΎΠΌΠ½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ
- 2.1 Π¦Π΅Π»ΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ° «Π‘ΠΈΡΡΠ΅ΠΌΠ° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΠΈ ΡΠ°ΡΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ²Π°Π½ΠΈΡ»
- 2.2 Π¦Π΅Π»ΠΈ «ΠΠΊΡΠΏΠ΅ΡΡΠ° Π΄Π»Ρ ΠΌΡΠ»ΡΡΠΈΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°»
- 2.3 ΠΡ ΠΎΠ΄Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅
- 2.4 ΠΡΡ ΠΎΠ΄Π½ΡΠ΅ ΠΈ ΡΠΎΡ ΡΠ°Π½ΡΠ΅ΠΌΡΠ΅ Π΄Π°Π½Π½ΡΠ΅
- 3. ΠΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΡ «ΡΠΈΡΡΠ΅ΠΌ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΠΈ ΡΠ°ΡΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ²Π°Π½ΠΈΡ»
- 4. ΠΠΎΡΡΡΠΎΠ΅Π½ΠΈΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΡ Π·Π°Π΄Π°ΡΠΈ
- 4.1 Π€ΠΎΡΠΌΠ°Ρ Π²Ρ ΠΎΠ΄Π½ΡΡ Π΄Π°Π½Π½ΡΡ
- 4.2 ΠΡΠ½ΠΎΠ²Π½ΡΠ΅ Π°ΡΠΏΠ΅ΠΊΡΡ ΡΠ°Π±ΠΎΡΡ ΡΠΊΡΠΏΠ΅ΡΡΠ°
- 4.3 ΠΡΠ΅Π½ΠΎΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ
- 5. ΠΠΎΡΠ°Π³ΠΎΠ²Π°Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ «ΠΠΊΡΠΏΠ΅ΡΡΠ°»
- 5.1 Π¨Π°Π³ 1. ΠΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΡΠΉ Π°Π½Π°Π»ΠΈΠ·
- 5.2 Π¨Π°Π³ 2. ΠΡΠ±ΠΎΡ Π²Π°ΡΠΈΠ°Π½ΡΠ° ΡΠ°ΡΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ²Π°Π½ΠΈΡ
- 5.3 Π¨Π°Π³ 3. ΠΡΠ±ΠΎΡ Π²Π°ΡΠΈΠ°Π½ΡΠ° Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ
- 5.4 Π¨Π°Π³ 4. ΠΠ½Π΅ΡΠ΅Π½ΠΈΠ΅ ΠΊΠΎΠ½Π΅ΡΠ½ΡΡ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅Π² Π² ΠΠ°Π·Ρ ΠΠ°Π½Π½ΡΡ ΠΈ ΠΏΠΎΠ΄ΡΡΠ΅Ρ ΡΡΠΊΠΎΡΠ΅Π½ΠΈΡ
- 5.5 ΠΡΠΈΠΌΠ΅ΡΡ ΡΠ°Π±ΠΎΡΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠ°
- 5.5.1 ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° «Π―ΠΊΠΎΠ±ΠΈ»
- 5.5.2 ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° «Sor»
- 5.5.3 ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° «ΠΠΎΠ΄ΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ SOR»
- 5.5.4 ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° «ΠΠΎΠ΄ΠΈΡΠΈΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΉ Π―ΠΊΠΎΠ±ΠΈ»
- 6. ΠΠ°ΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅
- ΠΠ΅ΡΠ΅ΡΠ΅Π½Ρ ΠΏΡΠΈΠ½ΡΡΡΡ ΡΠ΅ΡΠΌΠΈΠ½ΠΎΠ²
- ΠΠΈΡΠ΅ΡΠ°ΡΡΡΠ°
1. ΠΠ²Π΅Π΄Π΅Π½ΠΈΠ΅
1.1 Π Π°ΡΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ
ΠΠΎΡΠ»Π΅Π΄Π½ΠΈΠ΅ Π³ΠΎΠ΄Ρ Π²ΠΎ Π²ΡΠ΅ΠΌ ΠΌΠΈΡΠ΅ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π±ΡΡΠ½ΠΎΠ΅ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΠ΅ Π²ΡΡΠΈΡΠ»ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΊΠ»Π°ΡΡΠ΅ΡΠΎΠ². ΠΡΠΎ Π²ΡΠ·Π²Π°Π½ΠΎ ΡΠ΅ΠΌ, ΡΡΠΎ ΠΊΠ»Π°ΡΡΠ΅ΡΡ ΡΡΠ°Π»ΠΈ ΠΎΠ±ΡΠ΅Π΄ΠΎΡΡΡΠΏΠ½ΡΠΌΠΈ ΠΈ Π΄Π΅ΡΠ΅Π²ΡΠΌΠΈ Π°ΠΏΠΏΠ°ΡΠ°ΡΠ½ΡΠΌΠΈ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ°ΠΌΠΈ Π΄Π»Ρ Π²ΡΡΠΎΠΊΠΎΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΡΡ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ. ΠΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΡΠ΅Π·ΠΊΠΎ Π²ΠΎΠ·ΡΠΎΡ ΠΈΠ½ΡΠ΅ΡΠ΅Ρ ΠΊ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ°ΡΠΈΠΊΠ΅ Π²ΡΡΠΈΡΠ»ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΡΠ΅ΡΠ΅ΠΉ (GRID) ΠΈ ΡΠΈΡΠΎΠΊΠΎ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½ΡΠ΅ΡΡΡ ΠΏΠΎΠ½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΡΠΎΠ³ΠΎ, ΡΡΠΎ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΠ΅ ΡΠ°ΠΊΠΈΡ ΡΠ΅ΡΠ΅ΠΉ Π±ΡΠ΄Π΅Ρ ΠΈΠΌΠ΅ΡΡ Π³ΡΠΎΠΌΠ°Π΄Π½ΠΎΠ΅ Π²Π»ΠΈΡΠ½ΠΈΠ΅ Π½Π° ΡΠ°Π·Π²ΠΈΡΠΈΠ΅ ΡΠ΅Π»ΠΎΠ²Π΅ΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΡΡΠ²Π°, ΡΡΠ°Π²Π½ΠΈΠΌΠΎΠ΅ Ρ Π²Π»ΠΈΡΠ½ΠΈΠ΅ΠΌ Π½Π° Π½Π΅Π³ΠΎ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΡ Π² Π½Π°ΡΠ°Π»Π΅ Π²Π΅ΠΊΠ° Π΅Π΄ΠΈΠ½ΡΡ ΡΠ»Π΅ΠΊΡΡΠΈΡΠ΅ΡΠΊΠΈΡ ΡΠ΅ΡΠ΅ΠΉ. ΠΠΎΡΡΠΎΠΌΡ, ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΎΡΠ²ΠΎΠ΅Π½ΠΈΡ ΠΊΠ»Π°ΡΡΠ΅ΡΠΎΠ² Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡΠΈΠ½ΠΈΠΌΠ°ΡΡ Π²ΠΎ Π²Π½ΠΈΠΌΠ°Π½ΠΈΠ΅ ΠΈ ΡΠΎ, ΡΡΠΎ ΠΎΠ½ΠΈ ΡΠ²Π»ΡΡΡΡΡ ΠΏΠ΅ΡΠ²ΠΎΠΉ ΡΡΡΠΏΠ΅Π½ΡΠΊΠΎΠΉ Π² ΡΠΎΠ·Π΄Π°Π½ΠΈΠΈ ΡΠ°ΠΊΠΈΡ Π²ΡΡΠΈΡΠ»ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΡΠ΅ΡΠ΅ΠΉ.
ΠΡΡΠΈΡΠ»ΠΈΡΠ΅Π»ΡΠ½ΡΠΉ ΠΊΠ»Π°ΡΡΠ΅Ρ — ΡΡΠΎ ΠΌΡΠ»ΡΡΠΈΠΊΠΎΠΌΠΏΡΡΡΠ΅Ρ, ΡΠΎΡΡΠΎΡΡΠΈΠΉ ΠΈΠ· ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π° ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠΎΠ² (ΡΠ·Π»ΠΎΠ²), ΡΠ²ΡΠ·Π°Π½Π½ΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΎΠ±ΠΎΠΉ Π΅Π΄ΠΈΠ½ΠΎΠΉ ΠΊΠΎΠΌΠΌΡΠ½ΠΈΠΊΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ. ΠΠ°ΠΆΠ΄ΡΠΉ ΡΠ·Π΅Π» ΠΈΠΌΠ΅Π΅Ρ ΡΠ²ΠΎΡ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΡΡ ΠΏΠ°ΠΌΡΡΡ. ΠΡΠΈ ΡΡΠΎΠΌ ΠΎΠ±ΡΠ΅ΠΉ ΡΠΈΠ·ΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ Π΄Π»Ρ ΡΠ·Π»ΠΎΠ² Π½Π΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ. ΠΡΠ»ΠΈ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΡΠ·Π»ΠΎΠ² ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΠΌΡΠ»ΡΡΠΈΠΏΡΠΎΡΠ΅ΡΡΠΎΡΡ (ΠΌΡΠ»ΡΡΠΈΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ½ΡΠ΅ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΡ Ρ ΠΎΠ±ΡΠ΅ΠΉ ΠΏΠ°ΠΌΡΡΡΡ), ΡΠΎ ΡΠ°ΠΊΠΎΠΉ ΠΊΠ»Π°ΡΡΠ΅Ρ Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ SMP-ΠΊΠ»Π°ΡΡΠ΅ΡΠΎΠΌ. ΠΠΎΠΌΠΌΡΠ½ΠΈΠΊΠ°ΡΠΈΠΎΠ½Π½Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ° ΠΎΠ±ΡΡΠ½ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΡΠ·Π»Π°ΠΌ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°ΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΎΠ±ΠΎΠΉ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²ΠΎΠΌ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ, Π½ΠΎ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ ΠΌΠΎΠ³ΡΡ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡ ΠΈ ΠΎΠ΄Π½ΠΎΡΡΠΎΡΠΎΠ½Π½ΠΈΠ΅ ΠΊΠΎΠΌΠΌΡΠ½ΠΈΠΊΠ°ΡΠΈΠΈ — ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ Π»ΡΠ±ΠΎΠΌΡ ΡΠ·Π»Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΌΠ°ΡΡΠΎΠ²ΡΠΉ ΠΎΠ±ΠΌΠ΅Π½ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠ΅ΠΉ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ²ΠΎΠ΅ΠΉ ΠΏΠ°ΠΌΡΡΡΡ ΠΈ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠΉ ΠΏΠ°ΠΌΡΡΡΡ Π»ΡΠ±ΠΎΠ³ΠΎ Π΄ΡΡΠ³ΠΎΠ³ΠΎ ΡΠ·Π»Π°. ΠΠ»Π°ΡΡΠ΅ΡΡ Π΄Π΅ΡΠ΅Π²Π»Π΅ ΠΌΡΠ»ΡΡΠΈΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ½ΡΡ ΠΠΠ Ρ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ ΠΏΠ°ΠΌΡΡΡΡ, Π² ΠΊΠΎΡΠΎΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠ΅ ΠΊΠΎΠΌΠΌΡΠ½ΠΈΠΊΠ°ΡΠΈΠΎΠ½Π½ΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ ΠΈ ΡΠΏΠ΅ΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΡΠ·Π»Ρ.
ΠΡΠ»ΠΈ Π²ΡΠ΅ Π²Ρ ΠΎΠ΄ΡΡΠΈΠ΅ Π² ΡΠΎΡΡΠ°Π² Π²ΡΡΠΈΡΠ»ΠΈΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΊΠ»Π°ΡΡΠ΅ΡΠ° ΡΠ·Π»Ρ ΠΈΠΌΠ΅ΡΡ ΠΎΠ΄Π½Ρ ΠΈ ΡΡ ΠΆΠ΅ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ ΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ, ΡΠΎ ΠΌΡ ΠΈΠΌΠ΅Π΅ΠΌ Π΄Π΅Π»ΠΎ Ρ ΠΎΠ΄Π½ΠΎΡΠΎΠ΄Π½ΡΠΌ Π²ΡΡΠΈΡΠ»ΠΈΡΠ΅Π»ΡΠ½ΡΠΌ ΠΊΠ»Π°ΡΡΠ΅ΡΠΎΠΌ. ΠΠ½Π°ΡΠ΅ — Ρ Π½Π΅ΠΎΠ΄Π½ΠΎΡΠΎΠ΄Π½ΡΠΌ.
Π Π½Π°ΡΡΠΎΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ, ΠΊΠΎΠ³Π΄Π° Π³ΠΎΠ²ΠΎΡΡΡ ΠΎ ΠΊΠ»Π°ΡΡΠ΅ΡΠ°Ρ , ΡΠΎ ΡΠ°ΡΡΠΎ ΠΏΠΎΠ΄ΡΠ°Π·ΡΠΌΠ΅Π²Π°ΡΡ ΠΎΠ΄Π½ΠΎΡΠΎΠ΄Π½ΠΎΡΡΡ. ΠΠ΄Π½Π°ΠΊΠΎ, Π΄Π»Ρ ΡΠΎΠ³ΠΎ, ΡΡΠΎΠ±Ρ ΡΠΎΡ ΡΠ°Π½ΠΈΡΡ Π²ΡΡΠΎΠΊΠΈΠΉ ΡΡΠΎΠ²Π΅Π½Ρ ΡΠΎΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ/ΡΡΠΎΠΈΠΌΠΎΡΡΡ ΠΏΡΠΈΡ ΠΎΠ΄ΠΈΡΡΡ ΠΏΡΠΈ Π½Π°ΡΠ°ΡΠΈΠ²Π°Π½ΠΈΠΈ ΠΊΠ»Π°ΡΡΠ΅ΡΠ° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΡΡΠΈΠ΅ Π² Π΄Π°Π½Π½ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΡ, ΠΊΠΎΡΠΎΡΡΠ΅ ΠΌΠΎΠ³ΡΡ ΠΎΡΠ»ΠΈΡΠ°ΡΡΡΡ Π½Π΅ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ, Π½ΠΎ ΠΈ ΠΏΠΎ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ΅. ΠΠΎΡΡΠΎΠΌΡ ΠΏΠΎΡΡΠ΅ΠΏΠ΅Π½Π½ΠΎ Π±ΠΎΠ»ΡΡΠΈΠ½ΡΡΠ²ΠΎ ΠΊΠ»Π°ΡΡΠ΅ΡΠΎΠ² ΠΌΠΎΠ³ΡΡ ΡΡΠ°ΡΡ Π½Π΅ΠΎΠ΄Π½ΠΎΡΠΎΠ΄Π½ΡΠΌΠΈ ΠΊΠ»Π°ΡΡΠ΅ΡΠ°ΠΌΠΈ.
ΠΠ΅ΠΎΠ΄Π½ΠΎΡΠΎΠ΄Π½ΠΎΡΡΡ ΠΆΠ΅ Π²Π½ΠΎΡΠΈΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ ΡΠ΅ΡΡΠ΅Π·Π½ΡΠ΅ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ. Π Π°Π·Π»ΠΈΡΠΈΠ΅ Π² ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠΎΠ² ΡΡΠ΅Π±ΡΠ΅Ρ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π³ΠΎ ΡΡΠ΅ΡΠ° ΠΏΡΠΈ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ ΡΠ°Π±ΠΎΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΡΠΎΡΠ΅ΡΡΠ°ΠΌΠΈ, Π²ΡΠΏΠΎΠ»Π½ΡΡΡΠΈΠΌΠΈΡΡ Π½Π° ΡΠ°Π·Π½ΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°Ρ . Π Π°Π·Π»ΠΈΡΠΈΠ΅ Π² Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠΎΠ² ΡΡΠ΅Π±ΡΠ΅Ρ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΠΈ ΡΠ°Π·Π½ΡΡ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΡ ΡΠ°ΠΉΠ»ΠΎΠ² Π΄Π»Ρ ΡΠ°Π·Π½ΡΡ ΡΠ·Π»ΠΎΠ², Π° Π² ΡΠ»ΡΡΠ°Π΅ ΡΠ°Π·Π»ΠΈΡΠΈΠΉ Π² ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠΈ Π΄Π°Π½Π½ΡΡ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΡΡΠ΅Π±ΠΎΠ²Π°ΡΡΡΡ ΠΈ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠΈ ΠΏΡΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠ΅ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ ΠΌΠ΅ΠΆΠ΄Ρ ΡΠ·Π»Π°ΠΌΠΈ (Π½Π΅ Π³ΠΎΠ²ΠΎΡΡ ΡΠΆΠ΅ ΠΎ ΡΡΡΠ΄Π½ΠΎΡΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π΄Π²ΠΎΠΈΡΠ½ΡΡ ΡΠ°ΠΉΠ»ΠΎΠ²).
Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, Π»ΡΠ±ΠΎΠΉ ΠΊΠ»Π°ΡΡΠ΅Ρ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ ΠΊΠ°ΠΊ Π΅Π΄ΠΈΠ½ΡΡ Π°ΠΏΠΏΠ°ΡΠ°ΡΠ½ΠΎ-ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ, ΠΈΠΌΠ΅ΡΡΡΡ Π΅Π΄ΠΈΠ½ΡΡ ΠΊΠΎΠΌΠΌΡΠ½ΠΈΠΊΠ°ΡΠΈΠΎΠ½Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ, Π΅Π΄ΠΈΠ½ΡΠΉ ΡΠ΅Π½ΡΡ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΈ ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π·Π°Π³ΡΡΠ·ΠΊΠΈ. ΠΡΡΠΈΡΠ»ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠ΅ΡΠΈ (GRID) ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΡΡΡ ΡΠ΅ΡΡΡΡΡ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²Π° ΠΊΠ»Π°ΡΡΠ΅ΡΠΎΠ², ΠΌΠ½ΠΎΠ³ΠΎΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ½ΡΡ ΠΈ ΠΎΠ΄Π½ΠΎΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ½ΡΡ ΠΠΠ, ΠΏΡΠΈΠ½Π°Π΄Π»Π΅ΠΆΠ°ΡΠΈΡ ΡΠ°Π·Π½ΡΠΌ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΡΠΌ ΠΈ ΠΏΠΎΠ΄ΡΠΈΠ½ΡΡΡΠΈΡ ΡΡ ΡΠ°Π·Π½ΡΠΌ Π΄ΠΈΡΡΠΈΠΏΠ»ΠΈΠ½Π°ΠΌ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ. Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ Π΄Π»Ρ Π½ΠΈΡ ΡΡΠ»ΠΎΠΆΠ½ΡΠ΅ΡΡΡ ΠΈΠ·-Π·Π° ΡΠ»Π΅Π΄ΡΡΡΠΈΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌ.
ΠΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ Π²ΡΠ΄Π΅Π»ΡΠ΅ΠΌΡΡ ΡΠ΅ΡΡΡΡΠΎΠ² (ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΡΠ·Π»ΠΎΠ², ΠΈΡ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° ΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΡ) ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π² ΠΌΠΎΠΌΠ΅Π½Ρ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ Π·Π°ΠΊΠ°Π·Π° Π½Π° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ. ΠΠΎΡΡΠΎΠΌΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡ Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ Π΄Π»Ρ ΡΡΡΠ½ΠΎΠΉ Π½Π°ΡΡΡΠΎΠΉΠΊΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½Π° ΡΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ. ΠΠ΅Π»Π°ΡΠ΅Π»ΡΠ½ΠΎ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΡΡ Π½Π°ΡΡΡΠΎΠΉΠΊΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½Π° Π²ΡΠ΄Π΅Π»Π΅Π½Π½ΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΡ ΡΠ΅ΡΡΡΡΠΎΠ² Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈ, Π±Π΅Π· ΠΏΠ΅ΡΠ΅ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΈΠΈ. Π ΠΈΠ·Π½Π°ΡΠ°Π»ΡΠ½ΠΎΠΉ Π½Π΅ΠΎΠ΄Π½ΠΎΡΠΎΠ΄Π½ΠΎΡΡΠΈ ΠΊΠΎΠΌΠΌΡΠ½ΠΈΠΊΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΉ ΡΡΠ΅Π΄Ρ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΡΡΡ ΠΈΠ·ΠΌΠ΅Π½ΡΠΈΠ²ΠΎΡΡΡ Π΅Π΅ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊ, Π²ΡΠ·ΡΠ²Π°Π΅ΠΌΠ°Ρ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡΠΌΠΈ Π·Π°Π³ΡΡΠ·ΠΊΠΈ ΡΠ΅ΡΠΈ. Π£ΡΠ΅Ρ ΡΠ°ΠΊΠΎΠΉ Π½Π΅ΠΎΠ΄Π½ΠΎΡΠΎΠ΄Π½ΠΎΡΡΠΈ ΠΊΠΎΠΌΠΌΡΠ½ΠΈΠΊΠ°ΡΠΈΠΉ ΡΠ²Π»ΡΠ΅ΡΡΡ ΠΎΡΠ΅Π½Ρ ΡΠ»ΠΎΠΆΠ½ΠΎΠΉ Π·Π°Π΄Π°ΡΠ΅ΠΉ.
ΠΡΠ΅ ΡΡΠΎ ΡΡΠ΅Π±ΡΠ΅Ρ Π³ΠΎΡΠ°Π·Π΄ΠΎ Π±ΠΎΠ»Π΅Π΅ Π²ΡΡΠΎΠΊΠΎΠ³ΠΎ ΡΡΠΎΠ²Π½Ρ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΠΈ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ, ΡΠ΅ΠΌ ΡΠΎΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π΄ΠΎΡΡΡΠΏΠ΅Π½ Π² Π½Π°ΡΡΠΎΡΡΠ΅Π΅ Π²ΡΠ΅ΠΌΡ ΠΏΡΠΈΠΊΠ»Π°Π΄Π½ΡΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ°ΠΌ.
Π‘ 1992 Π³ΠΎΠ΄Π°, ΠΊΠΎΠ³Π΄Π° ΠΌΡΠ»ΡΡΠΈΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΡ ΡΡΠ°Π»ΠΈ ΡΠ°ΠΌΡΠΌΠΈ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΡΠΌΠΈ Π²ΡΡΠΈΡΠ»ΠΈΡΠ΅Π»ΡΠ½ΡΠΌΠΈ ΡΠΈΡΡΠ΅ΠΌΠ°ΠΌΠΈ, ΡΠ΅Π·ΠΊΠΎ Π²ΠΎΠ·ΡΠΎΡ ΠΈΠ½ΡΠ΅ΡΠ΅Ρ ΠΊ ΠΏΡΠΎΠ±Π»Π΅ΠΌΠ΅ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Π΄Π»Ρ Π½ΠΈΡ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΡ ΠΏΡΠΈΠΊΠ»Π°Π΄Π½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ. Π ΡΡΠΎΠΌΡ ΠΌΠΎΠΌΠ΅Π½ΡΡ ΡΠΆΠ΅ Π±ΡΠ»ΠΎ ΡΡΠ½ΠΎ, ΡΡΠΎ ΡΡΡΠ΄ΠΎΠ΅ΠΌΠΊΠΎΡΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ ΠΏΡΠΈΠΊΠ»Π°Π΄Π½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ Π΄Π»Ρ ΠΌΠ½ΠΎΠ³ΠΎΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ½ΡΡ ΡΠΈΡΡΠ΅ΠΌ Ρ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ ΠΏΠ°ΠΌΡΡΡΡ ΡΠ²Π»ΡΠ΅ΡΡΡ Π³Π»Π°Π²Π½ΡΠΌ ΠΏΡΠ΅ΠΏΡΡΡΡΠ²ΠΈΠ΅ΠΌ Π΄Π»Ρ ΠΈΡ ΡΠΈΡΠΎΠΊΠΎΠ³ΠΎ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΡ. ΠΠ° ΠΏΡΠΎΡΠ΅Π΄ΡΠΈΠΉ Ρ ΡΠ΅Ρ ΠΏΠΎΡ ΠΏΠ΅ΡΠΈΠΎΠ΄ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΎ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΎΠ² ΠΊ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ, ΡΠΎΠ·Π΄Π°Π½Ρ Π΄Π΅ΡΡΡΠΊΠΈ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΡΠ·ΡΠΊΠΎΠ² ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°Π»ΡΠ½ΡΡ ΡΡΠ΅Π΄ΡΡΠ².
ΠΠ° Π ΠΈΡ. 1 ΠΎΠΏΠΈΡΠ°Π½Ρ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ ΡΠΈΠΌΠΌΠ΅ΡΡΠΈΡΠ½ΡΡ ΠΌΡΠ»ΡΡΠΈΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ½ΡΡ ΡΠΈΡΡΠ΅ΠΌ (SMP). ΠΠ»Ρ Π΄Π°Π½Π½ΡΡ ΡΠΈΡΡΠ΅ΠΌ, ΠΊΠ°ΠΊ ΠΌΠΎΠ΄Π΅Π»Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π΄Π»Ρ ΠΌΡΠ»ΡΡΠΈΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠΎΠ², Π²ΠΎΠ·Π½ΠΈΠΊΠ»Π° ΠΌΠΎΠ΄Π΅Π»Ρ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ·ΠΌΠ° ΠΏΠΎ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ (Π² Π·Π°ΠΏΠ°Π΄Π½ΠΎΠΉ Π»ΠΈΡΠ΅ΡΠ°ΡΡΡΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΈ Π΄ΡΡΠ³ΠΎΠ΅ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ — ΠΌΠΎΠ΄Π΅Π»Ρ ΡΠ°Π·Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΠ°Π±ΠΎΡΡ, work-sharing model). ΠΠ° ΠΌΡΠ»ΡΡΠΈΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°Ρ Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΌΠΎΠ΄Π΅Π»Ρ ΠΎΠ±ΡΠ΅ΠΉ ΠΏΠ°ΠΌΡΡΠΈ. Π ΡΡΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½Π°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ Π½ΠΈΡΠ΅ΠΉ, Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΡΡΡΠΈΡ ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²ΠΎΠΌ ΠΎΠ±ΡΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΈ ΠΏΡΠΈΠΌΠΈΡΠΈΠ²ΠΎΠ² ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ. ΠΠΈΡΡ (ΠΏΠΎ-Π°Π½Π³Π»ΠΈΠΉΡΠΊΠΈ «thread») — ΡΡΠΎ Π»Π΅Π³ΠΊΠΎΠ²Π΅ΡΠ½ΡΠΉ ΠΏΡΠΎΡΠ΅ΡΡ, ΠΈΠΌΠ΅ΡΡΠΈΠΉ Ρ Π΄ΡΡΠ³ΠΈΠΌΠΈ Π½ΠΈΡΡΠΌΠΈ ΠΎΠ±ΡΠΈΠ΅ ΡΠ΅ΡΡΡΡΡ, Π²ΠΊΠ»ΡΡΠ°Ρ ΠΎΠ±ΡΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΡΡ ΠΏΠ°ΠΌΡΡΡ.
ΠΡΡ ΠΈΡΠ΅ΠΊΡΡΡΠ° | Π‘ΠΈΡΡΠ΅ΠΌΠ° ΡΠΎΡΡΠΎΠΈΡ ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ ΠΎΠ΄Π½ΠΎΡΠΎΠ΄Π½ΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠΎΠ² ΠΈ ΠΌΠ°ΡΡΠΈΠ²Π° ΠΎΠ±ΡΠ΅ΠΉ ΠΏΠ°ΠΌΡΡΠΈ (ΠΎΠ±ΡΡΠ½ΠΎ ΠΈΠ· Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΡ Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΡΡ Π±Π»ΠΎΠΊΠΎΠ²). ΠΡΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΡ ΠΈΠΌΠ΅ΡΡ Π΄ΠΎΡΡΡΠΏ ΠΊ Π»ΡΠ±ΠΎΠΉ ΡΠΎΡΠΊΠ΅ ΠΏΠ°ΠΌΡΡΠΈ Ρ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΠΎΠΉ ΡΠΊΠΎΡΠΎΡΡΡΡ. ΠΡΠΎΡΠ΅ΡΡΠΎΡΡ ΠΏΠΎΠ΄ΠΊΠ»ΡΡΠ΅Π½Ρ ΠΊ ΠΏΠ°ΠΌΡΡΠΈ Π»ΠΈΠ±ΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΎΠ±ΡΠ΅ΠΉ ΡΠΈΠ½Ρ (Π±Π°Π·ΠΎΠ²ΡΠ΅ 2−4 ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ½ΡΠ΅ SMP-ΡΠ΅ΡΠ²Π΅ΡΠ°), Π»ΠΈΠ±ΠΎ Ρ ΠΏΠΎΠΌΠΎΡΡΡ crossbar-ΠΊΠΎΠΌΠΌΡΡΠ°ΡΠΎΡΠ° (HP 9000). ΠΠΏΠΏΠ°ΡΠ°ΡΠ½ΠΎ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ ΠΊΠΎΠ³Π΅ΡΠ΅Π½ΡΠ½ΠΎΡΡΡ ΠΊΡΡΠ΅ΠΉ. | |
ΠΡΠΈΠΌΠ΅ΡΡ | HP 9000 V-class, N-class; SMP-cΠ΅ΡΠ²Π΅ΡΠ° ΠΈ ΡΠ°Π±ΠΎΡΠΈΠ΅ ΡΡΠ°Π½ΡΠΈΠΈ Π½Π° Π±Π°Π·Π΅ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠΎΠ² Intel (IBM, HP, Compaq, Dell, ALR, Unisys, DG, Fujitsu ΠΈ Π΄Ρ.). | |
ΠΠ°ΡΡΡΠ°Π±ΠΈΡΡΠ΅ΠΌΠΎΡΡΡ | ΠΠ°Π»ΠΈΡΠΈΠ΅ ΠΎΠ±ΡΠ΅ΠΉ ΠΏΠ°ΠΌΡΡΠΈ ΡΠΈΠ»ΡΠ½ΠΎ ΡΠΏΡΠΎΡΠ°Π΅Ρ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠΎΠ² ΠΌΠ΅ΠΆΠ΄Ρ ΡΠΎΠ±ΠΎΠΉ, ΠΎΠ΄Π½Π°ΠΊΠΎ Π½Π°ΠΊΠ»Π°Π΄ΡΠ²Π°Π΅Ρ ΡΠΈΠ»ΡΠ½ΡΠ΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠ΅Π½ΠΈΡ Π½Π° ΠΈΡ ΡΠΈΡΠ»ΠΎ — Π½Π΅ Π±ΠΎΠ»Π΅Π΅ 32 Π² ΡΠ΅Π°Π»ΡΠ½ΡΡ ΡΠΈΡΡΠ΅ΠΌΠ°Ρ . ΠΠ»Ρ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΡ ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΡΠ΅ΠΌΡΡ ΡΠΈΡΡΠ΅ΠΌ Π½Π° Π±Π°Π·Π΅ SMP ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΡΡ ΠΊΠ»Π°ΡΡΠ΅ΡΠ½ΡΠ΅ ΠΈΠ»ΠΈ NUMA-Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ. | |
ΠΠΏΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½Π°Ρ ΡΠΈΡΡΠ΅ΠΌΠ° | ΠΡΡ ΡΠΈΡΡΠ΅ΠΌΠ° ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΠΏΠΎΠ΄ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ΠΌ Π΅Π΄ΠΈΠ½ΠΎΠΉ ΠΠ‘ (ΠΎΠ±ΡΡΠ½ΠΎ UNIX-ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠΉ, Π½ΠΎ Π΄Π»Ρ Intel-ΠΏΠ»Π°ΡΡΠΎΡΠΌ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ Windows NT). ΠΠ‘ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ (Π² ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΡΠ°Π±ΠΎΡΡ) ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅Ρ ΠΏΡΠΎΡΠ΅ΡΡΡ/Π½ΠΈΡΠΈ ΠΏΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°ΠΌ (scheduling), Π½ΠΎ ΠΈΠ½ΠΎΠ³Π΄Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Π° ΠΈ ΡΠ²Π½Π°Ρ ΠΏΡΠΈΠ²ΡΠ·ΠΊΠ°. | |
ΠΠΎΠ΄Π΅Π»Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ | ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π² ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΎΠ±ΡΠ΅ΠΉ ΠΏΠ°ΠΌΡΡΠΈ. (POSIX threads, OpenMP). ΠΠ»Ρ SMP-ΡΠΈΡΡΠ΅ΠΌ ΡΡΡΠ΅ΡΡΠ²ΡΡΡ ΡΡΠ°Π²Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠ΅ ΡΡΠ΅Π΄ΡΡΠ²Π° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠ°ΡΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ²Π°Π½ΠΈΡ. | |
Π ΠΈΡ. 1. Π‘ΠΈΠΌΠΌΠ΅ΡΡΠΈΡΠ½ΡΠ΅ ΠΌΡΠ»ΡΡΠΈΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ½ΡΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ.
ΠΡΠ½ΠΎΠ²Π½Π°Ρ ΠΈΠ΄Π΅Ρ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ·ΠΌΠ° ΠΏΠΎ ΡΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡ Π·Π°ΠΊΠ»ΡΡΠ°Π»Π°ΡΡ Π² ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΌ. ΠΠΌΠ΅ΡΡΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π² ΡΠ΅ΡΠΌΠΈΠ½Π°Ρ Π½ΠΈΡΠ΅ΠΉ ΠΏΡΠ΅Π΄Π»Π°Π³Π°Π»ΠΎΡΡ ΡΠ°ΡΡΠΈΡΠΈΡΡ ΡΠ·ΡΠΊΠΈ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΡΠΌΠΈ ΡΠΏΡΠ°Π²Π»ΡΡΡΠΈΠΌΠΈ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡΠΌΠΈ — ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΠΌΠΈ ΡΠΈΠΊΠ»Π°ΠΌΠΈ ΠΈ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΠΌΠΈ ΡΠ΅ΠΊΡΠΈΡΠΌΠΈ. Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΠΈ ΡΠ½ΠΈΡΡΠΎΠΆΠ΅Π½ΠΈΠ΅ Π½ΠΈΡΠ΅ΠΉ, ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ Π½ΠΈΠΌΠΈ Π²ΠΈΡΠΊΠΎΠ² ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΡ ΡΠΈΠΊΠ»ΠΎΠ² ΠΈΠ»ΠΈ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΡ ΡΠ΅ΠΊΡΠΈΠΉ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π²ΡΠ·ΠΎΠ²ΠΎΠ² ΠΏΡΠΎΡΠ΅Π΄ΡΡ) — Π²ΡΠ΅ ΡΡΠΎ Π±ΡΠ°Π» Π½Π° ΡΠ΅Π±Ρ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ.
ΠΠ΅ΡΠ²Π°Ρ ΠΏΠΎΠΏΡΡΠΊΠ° ΡΡΠ°Π½Π΄Π°ΡΡΠΈΠ·ΠΎΠ²Π°ΡΡ ΡΠ°ΠΊΡΡ ΠΌΠΎΠ΄Π΅Π»Ρ ΠΏΡΠΈΠ²Π΅Π»Π° ΠΊ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΡ Π² 1990 Π³ΠΎΠ΄Ρ ΠΏΡΠΎΠ΅ΠΊΡΠ° ΡΠ·ΡΠΊΠ° PCF Fortran (ΠΏΡΠΎΠ΅ΠΊΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ° X3H5). ΠΠ΄Π½Π°ΠΊΠΎ, ΡΡΠΎΡ ΠΏΡΠΎΠ΅ΠΊΡ ΡΠΎΠ³Π΄Π° Π½Π΅ ΠΏΡΠΈΠ²Π»Π΅ΠΊ ΡΠΈΡΠΎΠΊΠΎΠ³ΠΎ Π²Π½ΠΈΠΌΠ°Π½ΠΈΡ ΠΈ, ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈ, ΠΎΡΡΠ°Π»ΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π½Π° Π±ΡΠΌΠ°Π³Π΅. ΠΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, ΡΡΠΎ ΠΏΡΠΈΡΠΈΠ½ΠΎΠΉ ΡΡΠΎΠ³ΠΎ Π±ΡΠ»ΠΎ ΡΠ½ΠΈΠΆΠ΅Π½ΠΈΠ΅ ΠΈΠ½ΡΠ΅ΡΠ΅ΡΠ° ΠΊ ΠΌΡΠ»ΡΡΠΈΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°ΠΌ ΠΈ Π²ΡΠ΅ΠΎΠ±ΡΠ΅Π΅ ΡΠ²Π»Π΅ΡΠ΅Π½ΠΈΠ΅ ΠΌΡΠ»ΡΡΠΈΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ°ΠΌΠΈ ΠΈ HPF.
ΠΠ΄Π½Π°ΠΊΠΎ, ΡΠΏΡΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π»Π΅Ρ ΡΠΈΡΡΠ°ΡΠΈΡ ΡΠΈΠ»ΡΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΠ»Π°ΡΡ. ΠΠΎ-ΠΏΠ΅ΡΠ²ΡΡ , ΡΡΠΏΠ΅Ρ ΠΈ Π² ΡΠ°Π·Π²ΠΈΡΠΈΠΈ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠ½ΠΎΠΉ Π±Π°Π·Ρ ΡΠ΄Π΅Π»Π°Π»ΠΈ ΠΎΡΠ΅Π½Ρ ΠΏΠ΅ΡΡΠΏΠ΅ΠΊΡΠΈΠ²Π½ΡΠΌ ΠΈ ΡΠΊΠΎΠ½ΠΎΠΌΠΈΡΠ΅ΡΠΊΠΈ Π²ΡΠ³ΠΎΠ΄Π½ΡΠΌ ΡΠΎΠ·Π΄Π°Π²Π°ΡΡ ΠΌΡΠ»ΡΡΠΈΠΏΡΠΎΡΠ΅ΡΡΠΎΡΡ. ΠΠΎ-Π²ΡΠΎΡΡΡ , ΡΠΈΡΠΎΠΊΠΎΠ΅ ΡΠ°Π·Π²ΠΈΡΠΈΠ΅ ΠΏΠΎΠ»ΡΡΠΈΠ»ΠΈ ΠΌΡΠ»ΡΡΠΈΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΡ Ρ DSM (distributed shared memory — ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½Π°Ρ ΠΎΠ±ΡΠ°Ρ ΠΏΠ°ΠΌΡΡΡ), ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°ΠΌ Π½Π° ΡΠ°Π·Π½ΡΡ ΡΠ·Π»Π°Ρ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°ΡΡ ΡΠ΅ΡΠ΅Π· ΠΎΠ±ΡΠΈΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΡΠ°ΠΊΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ Π½Π° ΠΌΡΠ»ΡΡΠΈΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°Ρ (Convex Exemplar, HP 9000 V-class, SGI Origin 2000). Π-ΡΡΠ΅ΡΡΠΈΡ , Π½Π΅ ΠΎΠΏΡΠ°Π²Π΄Π°Π»ΠΈΡΡ Π½Π°Π΄Π΅ΠΆΠ΄Ρ Π½Π° ΡΠΎ, ΡΡΠΎ HPF ΡΡΠ°Π½Π΅Ρ ΡΠ°ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΡΡΠ°Π½Π΄Π°ΡΡΠΎΠΌ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠΈ Π²ΡΡΠΈΡΠ»ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ.
ΠΡΡΠΏΠ½Π΅ΠΉΡΠΈΠ΅ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΠΈ ΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠΎΠ² ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΠΈΠ»ΠΈ ΡΠ²ΠΎΠΈ ΡΡΠΈΠ»ΠΈΡ ΠΈ Π² ΠΎΠΊΡΡΠ±ΡΠ΅ 1997 Π³ΠΎΠ΄Π° Π²ΡΠΏΡΡΡΠΈΠ»ΠΈ ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΠ·ΡΠΊΠ° OpenMP Fortran — ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ ΡΠ·ΡΠΊΠ° Π€ΠΎΡΡΡΠ°Π½ 77. ΠΠΎΠ·ΠΆΠ΅ Π²ΡΡΠ»ΠΈ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΡΠ΅ ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΡ ΡΠ·ΡΠΊΠΎΠ² Π‘ΠΈ ΠΈ Π€ΠΎΡΡΡΠ°Π½ 90/95.
ΠΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎ ΡΠ°Π·Π²ΠΈΠ²Π°Π»Π°ΡΡ ΠΌΠΎΠ΄Π΅Π»Ρ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ. ΠΠ±ΠΎΠ±ΡΠ΅Π½ΠΈΠ΅ ΠΈ ΡΡΠ°Π½Π΄Π°ΡΡΠΈΠ·Π°ΡΠΈΡ ΡΠ°Π·Π»ΠΈΡΠ½ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ ΠΏΡΠΈΠ²Π΅Π»ΠΈ Π² 1993 Π³ΠΎΠ΄Ρ ΠΊ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ΅ ΡΡΠ°Π½Π΄Π°ΡΡΠ° MPI (Message Passing Interface). Π ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½Π°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ², ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ ΠΈΠΌΠ΅Π΅Ρ ΡΠΎΠ±ΡΡΠ²Π΅Π½Π½ΠΎΠ΅ Π»ΠΎΠΊΠ°Π»ΡΠ½ΠΎΠ΅ Π°Π΄ΡΠ΅ΡΠ½ΠΎΠ΅ ΠΏΡΠΎΡΡΡΠ°Π½ΡΡΠ²ΠΎ. ΠΠ·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ² — ΠΎΠ±ΠΌΠ΅Π½ Π΄Π°Π½Π½ΡΠΌΠΈ ΠΈ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΡ — ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²ΠΎΠΌ ΠΏΠ΅ΡΠ΅Π΄Π°ΡΠΈ ΡΠΎΠΎΠ±ΡΠ΅Π½ΠΈΠΉ. ΠΠ΄Π½Π°ΠΊΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ MPI ΠΏΠΎΠ΄Π²Π΅ΡΠ³Π°ΡΡΡΡ ΠΈ ΡΡΡΠΎΠ²ΠΎΠΉ ΠΊΡΠΈΡΠΈΠΊΠ΅ Π·Π° ΡΠΎ, ΡΡΠΎ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ ΠΏΠΎΠ»ΡΡΠΈΠ»ΡΡ ΡΠ»ΠΈΡΠΊΠΎΠΌ Π³ΡΠΎΠΌΠΎΠ·Π΄ΠΊΠΈΠΌ ΠΈ ΡΠ»ΠΎΠΆΠ½ΡΠΌ Π΄Π»Ρ ΠΏΡΠΈΠΊΠ»Π°Π΄Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ°.
Π£ΡΠΏΠ΅ΡΠ½ΠΎΠ΅ Π²Π½Π΅Π΄ΡΠ΅Π½ΠΈΠ΅ OpenMP Π½Π° ΠΌΡΠ»ΡΡΠΈΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°Ρ ΠΈ DSM-ΠΌΡΠ»ΡΡΠΈΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΠ°Ρ ΡΠ΅Π·ΠΊΠΎ Π°ΠΊΡΠΈΠ²ΠΈΠ·ΠΈΡΠΎΠ²Π°Π»ΠΎ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ, Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½Π½ΡΠ΅ Π½Π° ΠΏΠΎΠΈΡΠΊΠΈ ΠΏΡΡΠ΅ΠΉ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½ΠΈΡ OpenMP Π½Π° ΠΌΡΠ»ΡΡΠΈΠΊΠΎΠΌΠΏΡΡΡΠ΅ΡΡ, ΠΊΠ»Π°ΡΡΠ΅ΡΡ ΠΈ ΡΠ΅ΡΠΈ ΠΠΠ. ΠΡΠΈ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΡ ΡΠΎΡΡΠ΅Π΄ΠΎΡΠΎΡΠΈΠ»ΠΈΡΡ, Π² ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΌ, Π½Π° Π΄Π²ΡΡ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΡΡ :
Β· ΡΠ°ΡΡΠΈΡΠ΅Π½ΠΈΠ΅ ΡΠ·ΡΠΊΠ° ΡΡΠ΅Π΄ΡΡΠ²Π°ΠΌΠΈ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ ;
Β· ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½Π°Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ ΡΠΈΡΡΠ΅ΠΌΡ DSM, ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠ΅ΠΉ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΡΠΊΠ°Π·Π°Π½ΠΈΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ°, Π²ΡΡΠ°Π²Π»ΡΠ΅ΠΌΡΠ΅ ΠΈΠΌ Π² Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.
ΠΠ΅ΡΠ²ΠΎΠ΅ Π½Π°ΠΏΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ Π³ΠΎΡΠ°Π·Π΄ΠΎ Π±ΠΎΠ»Π΅Π΅ ΠΏΠ΅ΡΡΠΏΠ΅ΠΊΡΠΈΠ²Π½ΡΠΌ Π΄Π»Ρ ΠΊΠ»Π°ΡΡΠ΅ΡΠΎΠ² ΠΈ ΡΠ΅ΡΠ΅ΠΉ ΠΠΠ, ΠΎΠ΄Π½Π°ΠΊΠΎ ΡΡΡΠ΄Π½ΠΎ ΠΎΠΆΠΈΠ΄Π°ΡΡ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΡ Π² Π±Π»ΠΈΠΆΠ°ΠΉΡΠΈΠ΅ Π³ΠΎΠ΄Ρ Π²ΡΠ΅ΠΌΡ ΡΡΠ°Π½Π΄Π°ΡΡΠ° Π½ΠΎΠ²ΠΎΠ³ΠΎ ΡΠ·ΡΠΊΠ° (ΡΠ°ΡΡΠΈΡΠ΅Π½Π½ΠΎΠ³ΠΎ OpenMP). ΠΠΎΡΡΠΎΠΌΡ Π²ΡΠ΅ ΡΠΈΡΠ΅ Π½Π°ΡΠΈΠ½Π°Π΅Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π³ΠΈΠ±ΡΠΈΠ΄Π½ΡΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄, ΠΊΠΎΠ³Π΄Π° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΡΡΡΠΈΡ MPI-ΠΏΡΠΎΡΠ΅ΡΡΠΎΠ², Π° ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΏΡΠΎΡΠ΅ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠ΅ΡΡΡ Π½Π° OpenMP.
Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ ΠΈΠΌΠ΅Π΅Ρ ΠΏΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π° Ρ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ ΡΠΏΡΠΎΡΠ΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π² ΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅, ΠΊΠΎΠ³Π΄Π° Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ Π΅ΡΡΡ Π΄Π²Π° ΡΡΠΎΠ²Π½Ρ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ·ΠΌΠ° — ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ·ΠΌ ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΠΎΠ΄Π·Π°Π΄Π°ΡΠ°ΠΌΠΈ ΠΈ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ·ΠΌ Π²Π½ΡΡΡΠΈ ΠΏΠΎΠ΄Π·Π°Π΄Π°ΡΠΈ. Π’Π°ΠΊΠ°Ρ ΡΠΈΡΡΠ°ΡΠΈΡ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ, Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΌΠ½ΠΎΠ³ΠΎΠΎΠ±Π»Π°ΡΡΠ½ΡΡ (ΠΌΠ½ΠΎΠ³ΠΎΠ±Π»ΠΎΡΠ½ΡΡ ) ΠΌΠ΅ΡΠΎΠ΄ΠΎΠ² ΡΠ΅ΡΠ΅Π½ΠΈΡ Π²ΡΡΠΈΡΠ»ΠΈΡΠ΅Π»ΡΠ½ΡΡ Π·Π°Π΄Π°Ρ. ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°ΡΡ Π½Π° MPI ΡΠ°ΠΌΠΈ ΠΏΠΎΠ΄Π·Π°Π΄Π°ΡΠΈ Π³ΠΎΡΠ°Π·Π΄ΠΎ ΡΠ»ΠΎΠΆΠ½Π΅Π΅, ΡΠ΅ΠΌ ΠΈΡ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΠ°ΡΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎΠ΄Π·Π°Π΄Π°ΡΠΈ ΡΠ²ΡΠ·Π°Π½ΠΎ Ρ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ΠΌ ΡΠ»Π΅ΠΌΠ΅Π½ΡΠΎΠ² ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² ΠΈ Π²ΠΈΡΠΊΠΎΠ² ΡΠΈΠΊΠ»ΠΎΠ² ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΡΠΎΡΠ΅ΡΡΠ°ΠΌΠΈ. ΠΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΡ ΠΆΠ΅ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΏΠΎΠ΄Π·Π°Π΄Π°Ρ ΡΠ°ΠΊΠΈΡ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡΠ΅ΠΉ Π½Π΅ Π²ΡΠ·ΡΠ²Π°Π΅Ρ, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΠ²ΠΎΠ΄ΠΈΡΡΡ ΠΊ ΠΎΠ±ΠΌΠ΅Π½Ρ ΠΌΠ΅ΠΆΠ΄Ρ Π½ΠΈΠΌΠΈ Π³ΡΠ°Π½ΠΈΡΠ½ΡΠΌΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡΠΌΠΈ. ΠΠ΅ΡΡΠΎ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΡ Π΄Π΅Π»Π°Π»ΠΈ ΡΠ°Π½ΡΡΠ΅ Π½Π° ΠΎΠ΄Π½ΠΎΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ½ΡΡ ΠΠΠ, ΠΊΠΎΠ³Π΄Π° Π΄Π»Ρ ΡΠΊΠΎΠ½ΠΎΠΌΠΈΠΈ ΠΏΠ°ΠΌΡΡΠΈ Π½Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΌ ΡΠ°Π³Π΅ Π²ΡΠΏΠΎΠ»Π½ΡΠ»ΠΈ ΠΏΠΎΠ΄Π·Π°Π΄Π°ΡΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ Π΄ΡΡΠ³ Π·Π° Π΄ΡΡΠ³ΠΎΠΌ.
Π¨ΠΈΡΠΎΠΊΠΎΠ΅ ΡΠ°ΡΠΏΡΠΎΡΡΡΠ°Π½Π΅Π½ΠΈΠ΅ SMP-ΠΊΠ»Π°ΡΡΠ΅ΡΠΎΠ² ΡΠ°ΠΊΠΆΠ΅ ΠΏΠΎΠ΄ΡΠ°Π»ΠΊΠΈΠ²Π°Π΅Ρ ΠΊ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ Π³ΠΈΠ±ΡΠΈΠ΄Π½ΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π°, ΠΏΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ OpenMP Π½Π° ΠΌΡΠ»ΡΡΠΈΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π΄Π»Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΡ Π·Π°Π΄Π°Ρ (Π½Π°ΠΏΡΠΈΠΌΠ΅Ρ, Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ Π½Π° Π½Π΅ΡΡΡΡΠΊΡΡΡΠ½ΡΡ ΡΠ΅ΡΠΊΠ°Ρ ) Π΄Π°ΡΡ Π·Π°ΠΌΠ΅ΡΠ½ΡΠΉ Π²ΡΠΈΠ³ΡΡΡ Π² ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΠΈ.
ΠΡΠ½ΠΎΠ²Π½ΠΎΠΉ Π½Π΅Π΄ΠΎΡΡΠ°ΡΠΎΠΊ ΡΡΠΎΠ³ΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄Π° ΡΠ°ΠΊΠΆΠ΅ ΠΎΡΠ΅Π²ΠΈΠ΄Π΅Π½ — ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΡ Π½Π°Π΄ΠΎ Π·Π½Π°ΡΡ ΠΈ ΡΠΌΠ΅ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ Π΄Π²Π΅ ΡΠ°Π·Π½ΡΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ·ΠΌΠ° ΠΈ ΡΠ°Π·Π½ΡΠ΅ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠ°Π»ΡΠ½ΡΠ΅ ΡΡΠ΅Π΄ΡΡΠ²Π°.
1.2 Π‘ΡΠ°Π½Π΄Π°ΡΡ OpenMP
ΠΠ½ΡΠ΅ΡΡΠ΅ΠΉΡ OpenMP Π·Π°Π΄ΡΠΌΠ°Π½ ΠΊΠ°ΠΊ ΡΡΠ°Π½Π΄Π°ΡΡ Π΄Π»Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π½Π° ΠΌΠ°ΡΡΡΠ°Π±ΠΈΡΡΠ΅ΠΌΡΡ SMP-ΡΠΈΡΡΠ΅ΠΌΠ°Ρ Π² ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΎΠ±ΡΠ΅ΠΉ ΠΏΠ°ΠΌΡΡΠΈ (shared memory model). Π ΡΡΠ°Π½Π΄Π°ΡΡ OpenMP Π²Ρ ΠΎΠ΄ΡΡ ΡΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ Π½Π°Π±ΠΎΡΠ° Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ² ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ°, ΠΏΡΠΎΡΠ΅Π΄ΡΡ ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΡΠ΅Π΄Ρ. Π Π°Π·ΡΠ°Π±ΠΎΡΠΊΠΎΠΉ ΡΡΠ°Π½Π΄Π°ΡΡΠ° Π·Π°Π½ΠΈΠΌΠ°Π΅ΡΡΡ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΡ OpenMP ARB (ARchitecture Board), Π² ΠΊΠΎΡΠΎΡΡΡ Π²ΠΎΡΠ»ΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΡΠ΅Π»ΠΈ ΠΊΡΡΠΏΠ½Π΅ΠΉΡΠΈΡ ΠΊΠΎΠΌΠΏΠ°Π½ΠΈΠΉ — ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ² SMP-Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡ ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΠΎΠ³ΠΎ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ΠΈΡ. Π‘ΠΏΠ΅ΡΠΈΡΠΈΠΊΠ°ΡΠΈΠΈ Π΄Π»Ρ ΡΠ·ΡΠΊΠΎΠ² Fortran ΠΈ C/C++ ΠΏΠΎΡΠ²ΠΈΠ»ΠΈΡΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ Π² ΠΎΠΊΡΡΠ±ΡΠ΅ 1997 Π³ΠΎΠ΄Π° ΠΈ ΠΎΠΊΡΡΠ±ΡΠ΅ 1998 Π³ΠΎΠ΄Π°.
Π OpenMP ΡΠ΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° «Π·ΠΎΠ»ΠΎΡΠ°Ρ ΡΠ΅ΡΠ΅Π΄ΠΈΠ½Π°» ΠΌΠ΅ΠΆΠ΄Ρ Π΄Π²ΡΠΌΡ ΠΊΡΠ°ΠΉΠ½ΠΎΡΡΡΠΌΠΈ — ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈΠΌ ΡΠ°ΡΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΈ ΠΊΠΎΠ΄ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Ρ ΡΠ²Π½ΡΠΌ Π²ΡΠ·ΠΎΠ²ΠΎΠΌ Π½ΠΈΡΠ΅ΠΉ; ΡΡΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄, ΠΊΠΎΡΠΎΡΡΠΉ ΠΎΡΠ½ΠΎΠ²ΡΠ²Π°Π΅ΡΡΡ Π½Π° ΡΠ°ΡΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ²Π°Π½ΠΈΠΈ ΠΎΠ±ΡΡΠ½ΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠΌ, Π½ΠΎ «Ρ ΠΏΠΎΠ΄ΡΠΊΠ°Π·ΠΊΠ°ΠΌΠΈ» ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, ΠΏΠΎΠΌΠ΅ΡΠ°ΡΡΠ΅Π³ΠΎ Π² ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΡΠ΅ΠΊΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ Π² Π²ΠΈΠ΄Π΅ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅Π². ΠΡΠΈ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΡ Π½Π° ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ·ΠΌ Π½Π° ΡΡΠΎΠ²Π½Π΅ ΡΠΈΠΊΠ»ΠΎΠ² ΠΈ ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΡ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΠΎΠ² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. ΠΠ° ΡΡΠ΅Ρ ΡΡΠΎΠ³ΠΎ OpenMP ΠΈΠ΄Π΅Π°Π»ΡΠ½ΠΎ ΠΏΠΎΠ΄Ρ ΠΎΠ΄ΠΈΡ Π΄Π»Ρ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΎΠ², ΠΆΠ΅Π»Π°ΡΡΠΈΡ Π±ΡΡΡΡΠΎ ΡΠ°ΡΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΡΡ ΡΠ²ΠΎΠΈ Π²ΡΡΠΈΡΠ»ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Ρ Π±ΠΎΠ»ΡΡΠΈΠΌΠΈ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΠΌΠΈ ΡΠΈΠΊΠ»Π°ΠΌΠΈ.
Π Π°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ Π½Π΅ ΡΠΎΠ·Π΄Π°Π΅Ρ Π½ΠΎΠ²ΡΡ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, Π° ΠΏΡΠΎΡΡΠΎ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ Π² ΡΠ΅ΠΊΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ OpenMP-Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ. ΠΠ° Π ΠΈΡ. 2 ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ ΡΠ΄ΠΎΠ±ΡΡΠ²ΠΎ OpenMP: Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ Π²ΡΡΠ°Π²ΠΈΡΡ Π²ΡΠ΅Π³ΠΎ 2 ΡΡΡΠΎΡΠΊΠΈ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, Π²ΡΡΠΈΡΠ»ΡΡΡΡΡ ΡΠΈΡΠ»ΠΎ ΠΏΠΈ, ΡΡΠΎΠ±Ρ ΠΎΠ½Π° ΡΡΠ°Π»Π° ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½Π°.
ΠΠ²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΡΠ°ΡΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ²Π°Π½ΠΈΠ΅ Π²Π΅ΡΡΠΌΠ° Π·Π°ΡΡΡΠ΄Π½Π΅Π½ΠΎ ΡΠ΅ΠΌ ΠΎΠ±ΡΡΠΎΡΡΠ΅Π»ΡΡΡΠ²ΠΎΠΌ, ΡΡΠΎ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΡ ΡΡΡΠ΄Π½ΠΎ (Π΅ΡΠ»ΠΈ Π²ΠΎΠΎΠ±ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ) ΡΠ°ΡΠΏΠΎΠ·Π½Π°ΡΡ Π²Π·Π°ΠΈΠΌΠΎΠ·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΏΠΎ Π΄Π°Π½Π½ΡΠΌ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΡ ΡΡΠΏΠΈΠΊΠΎΠ², ΡΠΈΡΡΠ°ΡΠΈΠΉ ΡΠΈΠΏΠ° «Π³ΠΎΠ½ΠΊΠΈ» (race condition) ΠΈ Π΄ΡΡΠ³ΠΈΠ΅ ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΠ΅ ΡΠΈΡΡΠ°ΡΠΈΠΈ, ΠΊΠΎΡΠΎΡΡΠ΅ Π·Π°ΡΠ°ΡΡΡΡ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΡΡΡΡ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΡΠΆΠ΅ Π½Π° ΡΡΠ°ΠΏΠ΅ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ. ΠΠΎΡΡΠΎΠΌΡ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΠΎΠ»ΡΡΠΈΡΡ «ΠΏΠΎΠ΄ΡΠΊΠ°Π·ΠΊΡ» ΠΎΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΎΡΠ΅Π½Ρ ΡΠ΅Π½Π½Π°.
ΠΠ΄Π½Π°ΠΊΠΎ ΡΡΠ°Π½Π΄Π°ΡΡ OpenMP Π½Π΅ ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΠ²Π°Π΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π½Π°Π±ΠΎΡΠΎΠΌ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ², Π° ΡΠΏΠ΅ΡΠΈΡΠΈΡΠΈΡΡΠ΅Ρ API [10], ΠΊΠΎΡΠΎΡΡΠΉ, ΠΊΡΠΎΠΌΠ΅ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ² ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΡ, Π²ΠΊΠ»ΡΡΠ°Π΅Ρ Π½Π°Π±ΠΎΡ ΡΡΠ½ΠΊΡΠΈΠΉ ΡΠΈΡΡΠ΅ΠΌΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ OpenMP-ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ. ΠΠ°Π»Π΅Π΅ ΠΌΡ ΡΠ°ΡΡΠΌΠΎΡΡΠΈΠΌ ΠΎΡΠ½ΠΎΠ²Π½ΡΠ΅ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡΠΈ OpenMP ΠΏΡΠΈΠΌΠ΅Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎ ΠΊ ΡΠ·ΡΠΊΡ Fortran. Π‘ΡΡΠ΅ΡΡΠ²ΡΡΡ Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΡΠ΅ ΡΡΠ΅Π΄ΡΡΠ²Π° Π΄Π»Ρ ΡΠ·ΡΠΊΠΎΠ² Π‘ΠΈ/C++. Π ΡΠ°ΠΌΠΊΠ°Ρ OpenMP ΡΡΠ°Π½Π΄Π°ΡΡΠ½Π°Ρ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½Π°Ρ ΠΌΠΎΠ΄Π΅Π»Ρ ΡΠ·ΡΠΊΠ° Fortran ΡΠ°ΡΡΠΈΡΡΠ΅ΡΡΡ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΠΌΠΈ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡΠΌΠΈ SPMD (Single Program, Multiple Data), ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π°ΠΈΠ±ΠΎΠ»Π΅Π΅ Π±Π»ΠΈΠ·ΠΊΠΈ ΠΊ ΡΡΠ°Π΄ΠΈΡΠΈΠΎΠ½Π½ΠΎΠΉ «ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΠΉ» ΠΈΠ΄Π΅ΠΎΠ»ΠΎΠ³ΠΈΠΈ.
Π OpenMP ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ ΠΌΠΎΠ΄Π΅Π»Ρ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎΠ³ΠΎ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ fork/join. ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π½Π°ΡΠΈΠ½Π°Π΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ ΠΊΠ°ΠΊ ΠΎΠ΄ΠΈΠ½ ΠΏΡΠΎΡΠ΅ΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π² ΠpenMP Π½Π°Π·ΡΠ²Π°Π΅ΡΡΡ Π³Π»Π°Π²Π½ΠΎΠΉ Π½ΠΈΡΡΡ (master thread). ΠΡΠΎΡ ΠΏΡΠΎΡΠ΅ΡΡ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ Π΄ΠΎ ΡΠ΅Ρ ΠΏΠΎΡ, ΠΏΠΎΠΊΠ° ΠΎΠ½ Π½Π΅ Π΄ΠΎΠΉΠ΄Π΅Ρ Π΄ΠΎ ΠΏΠ΅ΡΠ²ΠΎΠΉ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎΠΉ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ (Π² ΠΏΡΠΎΡΡΠ΅ΠΉΡΠ΅ΠΌ ΡΠ»ΡΡΠ°Π΅ — ΠΎΠ±Π»Π°ΡΡΠΈ, Π·Π°ΠΊΠ»ΡΡΠ΅Π½Π½ΠΎΠΉ ΠΌΠ΅ΠΆΠ΄Ρ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Π°ΠΌΠΈ PARALLEL ΠΈ END PARALLEL). Π ΡΡΠΎΡ ΠΌΠΎΠΌΠ΅Π½Ρ ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ «Π±ΡΠΈΠ³Π°Π΄Π°» (team) Π½ΠΈΡΠ΅ΠΉ, Π° «Π±ΡΠΈΠ³Π°Π΄ΠΈΡΠΎΠΌ» Π΄Π»Ρ Π½Π΅Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ Π³Π»Π°Π²Π½Π°Ρ Π½ΠΈΡΡ. ΠΠ½ΡΡΡΠΈ Π±ΡΠΈΠ³Π°Π΄Ρ Π³Π»Π°Π²Π½Π°Ρ Π½ΠΈΡΡ ΠΈΠΌΠ΅Π΅Ρ Π½ΠΎΠΌΠ΅Ρ 0, Π° ΡΠΈΡΠ»ΠΎ Π½ΠΈΡΠ΅ΠΉ Π² Π±ΡΠΈΠ³Π°Π΄Π΅ Π·Π°Π΄Π°Π΅ΡΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ ΠΈΠ»ΠΈ ΠΌΠΎΠΆΠ΅Ρ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡΡΡ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΈ ΠΏΠ΅ΡΠ΅Π΄ Π½Π°ΡΠ°Π»ΠΎΠΌ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ ΠΏΡΡΠ΅ΠΌ Π²ΡΠ·ΠΎΠ²Π° ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅ΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ ΡΠΈΡΡΠ΅ΠΌΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ OpenMP-ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ. ΠΠ΄Π½Π°ΠΊΠΎ Π²Π½ΡΡΡΠΈ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ ΡΠΈΡΠ»ΠΎ Π½ΠΈΡΠ΅ΠΉ ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΎ.
ΠΡΡΠΎΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, Π·Π°ΠΊΠ»ΡΡΠ΅Π½Π½ΡΠΉ ΠΌΠ΅ΠΆΠ΄Ρ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Π°ΠΌΠΈ PARALLEL ΠΈ END PARALLEL, Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎ Π²ΡΠ΅ΠΌΠΈ Π½ΠΈΡΡΠΌΠΈ Π±ΡΠΈΠ³Π°Π΄Ρ (ΡΠΌ. Π ΠΈΡ. 3). ΠΠΏΠ΅ΡΠ°ΡΠΎΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΈ Π·Π°ΠΊΠ»ΡΡΠ΅Π½Π½ΡΠ΅ ΠΌΠ΅ΠΆΠ΄Ρ ΡΡΠΎΠΉ ΠΏΠ°ΡΠΎΠΉ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ², ΠΎΠ±ΡΠ°Π·ΡΡΡ, Π² ΡΠ΅ΡΠΌΠΈΠ½ΠΎΠ»ΠΎΠ³ΠΈΠΈ OpenMP, Π»Π΅ΠΊΡΠΈΡΠ΅ΡΠΊΡΡ (ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΡΡ) ΠΎΠ±Π»Π°ΡΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅ΠΉ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎΠΉ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ. ΠΠΎΡΠΊΠΎΠ»ΡΠΊΡ ΡΠΊΠ°Π·Π°Π½Π½ΡΠΉ Π±Π»ΠΎΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΌΠΎΠΆΠ΅Ρ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ Π²ΡΠ·ΠΎΠ²Ρ ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ, ΠΊΠΎΡΠΎΡΡΠ΅ ΡΠΎΠΆΠ΅ ΠΌΠΎΠ³ΡΡ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎ, Π²Π²ΠΎΠ΄ΠΈΡΡΡ ΠΏΠΎΠ½ΡΡΠΈΠ΅ Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ, ΠΊΠΎΡΠΎΡΡΠΉ Π²ΠΊΠ»ΡΡΠ°Π΅Ρ ΠΈ ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, Π²ΡΠ·ΡΠ²Π°Π΅ΠΌΡΠ΅ ΠΈΠ· Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ°.
ΠΠΎΡΠ»Π΅ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎΠΉ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ Π½ΠΈΡΠΈ Π±ΡΠΈΠ³Π°Π΄Ρ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΡΡΡΡΡ, Π° Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ Π³Π»Π°Π²Π½Π°Ρ Π½ΠΈΡΡ. ΠΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎ, Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΌΠ½ΠΎΠ³ΠΎ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΉ; ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²Π΅Π½Π½ΠΎ Π±ΡΠΈΠ³Π°Π΄Ρ Π½ΠΈΡΠ΅ΠΉ ΠΌΠΎΠ³ΡΡ ΠΎΠ±ΡΠ°Π·ΠΎΠ²ΡΠ²Π°ΡΡΡΡ Π½Π΅ ΠΎΠ΄ΠΈΠ½ ΡΠ°Π·. OpenMP ΠΏΡΠ΅Π΄ΡΡΠΌΠ°ΡΡΠΈΠ²Π°Π΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π²Π»ΠΎΠΆΠ΅Π½ΠΈΡ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΉ (ΠΏΠ°Ρ PARALLEL/END PARALLEL). ΠΠ½ΠΎΠ³ΠΈΠ΅ «ΠΊΠ»ΡΡΠΈ» (clauses) Π² Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Π°Ρ OpenMP ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ ΡΠΊΠ°Π·Π°ΡΡ Π°ΡΡΠΈΠ±ΡΡΡ Π΄Π°Π½Π½ΡΡ , Π΄Π΅ΠΉΡΡΠ²ΡΡΡΠΈΠ΅ Π² ΠΏΠ΅ΡΠΈΠΎΠ΄ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅ΠΉ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎΠΉ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ.
ΠΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, Π² ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎΠΌ ΡΠ΅Π³ΠΈΠΎΠ½Π΅ ΡΠ°ΡΡΠ½ΡΠΌΠΈ (ΠΏΡΠΈΠ²Π°ΡΠ½ΡΠΌΠΈ) ΡΠ²Π»ΡΡΡΡΡ ΠΈΠ½Π΄Π΅ΠΊΡΡ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΡ ΡΠΈΠΊΠ»ΠΎΠ² DO, Π²ΡΠ΅ ΠΎΡΡΠ°Π»ΡΠ½ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅, ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ, ΠΎΠ±ΡΠΈΠ΅. ΠΠ΄Π½Π°ΠΊΠΎ ΡΡΠΎ ΠΏΡΠ°Π²ΠΈΠ»ΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ, ΡΠΊΠ°Π·Π°Π² ΠΊΠ»ΡΡ DEFAULT (PRIVATE) ΠΈΠ»ΠΈ Π²ΠΎΠ²ΡΠ΅ ΠΎΡΠΌΠ΅Π½ΠΈΡΡ, Π΅ΡΠ»ΠΈ Π·Π°Π΄Π°ΡΡ DEFAULT (NONE). Π‘ΡΠ΅ΡΡΠΈΠΊΠΈ ΡΠΎΡΡΡΠ°Π½ΠΎΠ²ΡΠΊΠΈΡ DO-ΡΠΈΠΊΠ»ΠΎΠ² ΡΠ»Π΅Π΄ΡΠ΅Ρ Π΄Π΅Π»Π°ΡΡ ΠΏΡΠΈΠ²Π°ΡΠ½ΡΠΌΠΈ (PRIVATE) Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π½ΠΈΡΠΈ Π±ΡΠΈΠ³Π°Π΄Ρ. Π’Π°ΠΊΠΈΠ΅ ΠΏΡΠΈΠ²Π°ΡΠ½ΡΠ΅ ΠΎΠ±ΡΠ΅ΠΊΡΡ (ΠΏΡΠΎΡΡΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅, ΠΌΠ°ΡΡΠΈΠ²Ρ ΠΈ Ρ. Π΄.) Ρ ΡΠΎΡΠΊΠΈ Π·ΡΠ΅Π½ΠΈΡ ΠΈΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½Ρ ΡΠΎΠΌΡ, ΠΊΠ°ΠΊ Π΅ΡΠ»ΠΈ Π±Ρ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π½ΠΈΡΠΈ ΠΈΠΌΠ΅Π»Π°ΡΡ Π±Ρ Π΄Π΅ΠΊΠ»Π°ΡΠ°ΡΠΈΡ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ° ΡΠΎΠ³ΠΎ ΠΆΠ΅ ΡΠΈΠΏΠ°. ΠΡΠ΅ ΡΡΡΠ»ΠΊΠΈ Π½Π° ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ Π² Π»Π΅ΠΊΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎΠΉ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΠΈ Π·Π°ΠΌΠ΅Π½ΡΡΡΡΡ Π½Π° ΡΡΡΠ»ΠΊΠΈ Π½Π° ΡΡΠΎΡ Π½ΠΎΠ²ΡΠΉ ΠΏΡΠΈΠ²Π°ΡΠ½ΡΠΉ ΠΎΠ±ΡΠ΅ΠΊΡ.
ΠΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅, ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠ΅ ΠΊΠ°ΠΊ PRIVATE, ΠΏΡΠΈ Π²Ρ ΠΎΠ΄Π΅ Π² ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ ΡΠ²Π»ΡΡΡΡΡ Π½Π΅ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Π½ΡΠΌΠΈ Π΄Π»Ρ Π»ΡΠ±ΠΎΠΉ Π½ΠΈΡΠΈ Π±ΡΠΈΠ³Π°Π΄Ρ. ΠΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ ΠΎΠΏΠΈΡΠ°ΡΠ΅Π»Ρ FIRSTPRIVATE ΠΏΡΠΈΠ²Π°ΡΠ½ΡΠ΅ ΠΊΠΎΠΏΠΈΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΡΡΡΡΡ Π΄Π°Π½Π½ΡΠΌΠΈ ΠΈΠ· ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΎΠ±ΡΠ΅ΠΊΡΠ°, ΡΡΡΠ΅ΡΡΠ²ΡΡΡΠ΅Π³ΠΎ Π΄ΠΎ Π²Ρ ΠΎΠ΄Π° Π² ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΡ ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ. LASTPRIVATE ΠΎΡΠ»ΠΈΡΠ°Π΅ΡΡΡ ΠΎΡ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° PRIVATE ΡΠ΅ΠΌ, ΡΡΠΎ ΠΏΠΎΡΠ»Π΅ Π²ΡΡ ΠΎΠ΄Π° ΠΈΠ· ΡΠΈΠΊΠ»Π° ΠΈΠ»ΠΈ ΠΈΠ· ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΉ ΡΠ΅ΠΊΡΠΈΠΈ ΠΊΠΎΠ½Π΅ΡΠ½ΡΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ, ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Π½ΡΠ΅ Π² ΡΠΏΠΈΡΠΊΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ , Π±ΡΠ΄ΡΡ Π΄ΠΎΡΡΡΠΏΠ½Ρ Π΄Π»Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ.
ΠΠΈΡΠ΅ΠΊΡΠΈΠ²Π° THREADPRIVATE (ΡΠΏΠΈΡΠΎΠΊ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ) ΠΎΠ±ΡΡΠ²Π»ΡΠ΅Ρ ΠΏΡΠΈΠ²Π°ΡΠ½ΡΠΌΠΈ Π² Π½ΠΈΡΡΡ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠ΅Π³ΠΈΠΎΠ½Π° ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅, ΠΎΠΏΠΈΡΠ°Π½Π½ΡΠ΅ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅. ΠΠΈΡΠ΅ΠΊΡΠΈΠ²Π° ΡΠΊΠ°Π·ΡΠ²Π°Π΅ΡΡΡ ΡΡΠ°Π·Ρ ΠΏΠΎΡΠ»Π΅ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΈ Π½Π΅ Π²Π»ΠΈΡΠ΅Ρ Π½Π° ΡΠ°Π±ΠΎΡΡ Ρ Π½ΠΈΠΌΠΈ Π²Π½Π΅ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠ΅Π³ΠΈΠΎΠ½Π°. Π‘ Π½Π΅ΠΉ ΡΠ²ΡΠ·Π°Π½Π° Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Π° COPYIN (ΡΠΏΠΈΡΠΎΠΊ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ) — Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π½ΠΈΡΠΈ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠ΅Π³ΠΈΠΎΠ½Π° ΡΠΎΠ·Π΄Π°ΡΡΡΡ ΠΊΠΎΠΏΠΈΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ , ΠΎΠΏΠΈΡΠ°Π½Π½ΡΡ Π² Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Π΅ threadprivate, ΠΊΠΎΠΏΠΈΡΠΌ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°ΡΡΡΡ ΡΠ΅ΠΊΡΡΠΈΠ΅ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΎΡΠΈΠ³ΠΈΠ½Π°Π»ΠΎΠ². ΠΠΌΠ΅Π½Π°, ΡΠΊΠ°Π·Π°Π½Π½ΡΠ΅ Π² ΡΠΏΠΈΡΠΊΠ°Ρ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ threadprivate ΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° copyin, Π΄ΠΎΠ»ΠΆΠ½Ρ ΡΠΎΠ²ΠΏΠ°Π΄Π°ΡΡ. COPING ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ Ρ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²ΠΎΠΉ parallel.
Π‘ΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΡΠ»ΠΎΠ²Π½ΠΎΠ³ΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ°: IF (cΠΊΠ°Π»ΡΡΠ½ΠΎΠ΅_Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠ΅_Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅).
ΠΡΠ»ΠΈ ΡΡΠΎΡ ΠΊΠ»ΡΡ ΡΠΊΠ°Π·Π°Π½, ΡΠΎ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ°Ρ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½Π°Ρ ΠΎΠ±Π»Π°ΡΡΡ ΠΊΠΎΠ΄ΠΎΠ² Π±ΡΠ΄Π΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌΠΈ Π½ΠΈΡΡΠΌΠΈ ΡΠΎΠ»ΡΠΊΠΎ ΠΏΡΠΈ ΡΡΠ»ΠΎΠ²ΠΈΠΈ, ΡΡΠΎ «ΡΠΊΠ°Π»ΡΡΠ½ΠΎΠ΅_Π»ΠΎΠ³ΠΈΡΠ΅ΡΠΊΠΎΠ΅_Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠ΅» ΠΈΡΡΠΈΠ½Π½ΠΎ. ΠΠ°ΠΏΡΠΈΠΌΠ΅Ρ, ΡΠΊΠ°Π·Π°Π² IF (N.GT.1000), ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΡΡΠ°Π²ΠΈΡΡ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡ ΠΏΠΎΡΠΎΠ΄ΠΈΡΡ ΡΠ°ΠΊΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΡΡΠΎ Π²ΠΎ Π²ΡΠ΅ΠΌΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΡΡΡ ΡΠ°Π·ΠΌΠ΅ΡΠ½ΠΎΡΡΡ (N) ΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π²ΡΠΏΠΎΠ»Π½ΡΠ»Π°ΡΡ Π±Ρ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎ, ΡΠΎΠ»ΡΠΊΠΎ Π΅ΡΠ»ΠΈ ΡΡΠ° ΡΠ°Π·ΠΌΠ΅ΡΠ½ΠΎΡΡΡ Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π²Π΅Π»ΠΈΠΊΠ° — Π±ΠΎΠ»ΡΡΠ΅ 1000. ΠΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΈΠ·Π±Π΅Π³Π°ΡΡ ΡΠ°ΡΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ²Π°Π½ΠΈΡ ΠΏΡΠΈ ΠΌΠ°Π»Π΅Π½ΡΠΊΠΈΡ ΡΠ°Π·ΠΌΠ΅ΡΠ½ΠΎΡΡΡΡ , ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΎΠΊΠ°Π·Π°ΡΡΡΡ Π½Π΅Π²ΡΠ³ΠΎΠ΄Π½ΡΠΌ ΠΈΠ·-Π·Π° Π±ΠΎΠ»ΡΡΠΎΠΉ Π΄ΠΎΠ»ΠΈ Π½Π°ΠΊΠ»Π°Π΄Π½ΡΡ ΡΠ°ΡΡ ΠΎΠ΄ΠΎΠ².
ΠΠ°ΠΆΠ½ΡΠΌ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½ΡΠΎΠΌ ΡΡΠ°Π½Π΄Π°ΡΡΠ° OpenMP ΡΠ²Π»ΡΠ΅ΡΡΡ Π½Π°Π±ΠΎΡ ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΠΎΠΊΡΡΠΆΠ΅Π½ΠΈΡ, Π·Π°Π΄Π°ΡΡΠΈΡ ΡΡΠ΅Π΄Ρ OpenMP:
Β· subroutine OMP_SET_NUM_THREADS (N) — ΡΡΡΠ°Π½Π°Π²Π»ΠΈΠ²Π°Π΅Ρ ΡΠΈΡΠ»ΠΎ Π½ΠΈΡΠ΅ΠΉ, ΡΠ°Π²Π½ΠΎΠ΅ N.
Β· integer function OMP_GET_NUM_THREADS () — Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ ΡΠΈΡΠ»ΠΎ Π½ΠΈΡΠ΅ΠΉ Π² Π±ΡΠΈΠ³Π°Π΄Π΅.
Β· integer function OMP_GET_THREAD_NUM () -Π²ΠΎΠ·Π²ΡΠ°ΡΠ°Π΅Ρ Π½ΠΎΠΌΠ΅Ρ «ΡΠ΅ΠΊΡΡΠ΅ΠΉ» Π½ΠΈΡΠΈ (ΠΈΠ· ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΏΡΠΎΠΈΠ·ΠΎΡΠ΅Π» Π²ΡΠ·ΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΈ) Π² Π±ΡΠΈΠ³Π°Π΄Π΅.
ΠΡΠΎΠΌΠ΅ ΡΠΊΠ°Π·Π°Π½ΠΈΠΉ Π½Π° ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡΠ°Π±ΠΎΡ ΠΌΠ΅ΠΆΠ΄Ρ Π½ΠΈΡΡΠΌΠΈ, OpenMP ΠΈΠΌΠ΅Π΅Ρ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ SINGLE/END SINGLE, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΠ°Π·ΡΠ΅ΡΠ°Π΅Ρ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ Π·Π°ΠΊΠ»ΡΡΠ΅Π½Π½ΡΠΉ Π² Π½Π΅Π΅ Π±Π»ΠΎΠΊ Fortran-ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΡΠΎΠ»ΡΠΊΠΎ ΠΎΠ΄Π½ΠΎΠΉ Π½ΠΈΡΠΈ.
ΠΠ»Ρ ΡΠ°ΡΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ²Π°Π½ΠΈΡ ΡΠΈΠΊΠ»ΠΎΠ² ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Π° DO (ΡΠΌ. Π ΠΈΡ. 4). Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ «ΠΊΠ»ΡΡΠ΅ΠΉ» ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ ΠΎΠΏΠΈΡΠ°ΡΠ΅Π»ΠΈ PRIVATE (ΡΠΏΠΈΡΠΎΠΊ), FIRSTPRIVATE (ΡΠΏΠΈΡΠΎΠΊ), SHARED (ΡΠΏΠΈΡΠΎΠΊ), ΠΊΠ»ΡΡ REDUCTION, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΊΠ»ΡΡΠΈ ORDERED ΠΈ SCHEDULE.
ΠΠ»ΡΡ SCHEDULE ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΡΠΊΠ°Π·Π°Π½ΠΈΡ Π΄ΠΈΡΡΠΈΠΏΠ»ΠΈΠ½Ρ ΠΏΠ»Π°Π½ΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΡΠΈΠΊΠ»Π° Π½ΠΈΡΡΠΌΠΈ ΠΈ ΠΈΠΌΠ΅Π΅Ρ Π²ΠΈΠ΄: SCHEDULE (ΡΠΈΠΏ[, M])
ΠΠ½ ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ, ΠΊΠ°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ ΠΈΡΠ΅ΡΠ°ΡΠΈΠΈ ΡΠΈΠΊΠ»Π° Π±ΡΠ΄ΡΡ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½Ρ Π΄Π»Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΌΠ΅ΠΆΠ΄Ρ Π½ΠΈΡΡΠΌΠΈ Π±ΡΠΈΠ³Π°Π΄Ρ. Π ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° «ΡΠΈΠΏ» ΠΌΠΎΠΆΠ½ΠΎ ΡΠΊΠ°Π·Π°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅:
Β· STATIC [, m] - Π±Π»ΠΎΡΠ½ΠΎ-ΡΠΈΠΊΠ»ΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΈΡΠ΅ΡΠ°ΡΠΈΠΉ: ΠΏΠ΅ΡΠ²ΡΠΉ Π±Π»ΠΎΠΊ ΠΈΠ· m ΠΈΡΠ΅ΡΠ°ΡΠΈΠΉ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅Ρ ΠΏΠ΅ΡΠ²Π°Ρ Π½ΠΈΡΡ, Π²ΡΠΎΡΠΎΠΉ Π±Π»ΠΎΠΊ — Π²ΡΠΎΡΠ°Ρ ΠΈ Ρ. Π΄. Π΄ΠΎ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΉ Π½ΠΈΡΠΈ, Π·Π°ΡΠ΅ΠΌ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΡΠ½ΠΎΠ²Π° Π½Π°ΡΠΈΠ½Π°Π΅ΡΡΡ Ρ ΠΏΠ΅ΡΠ²ΠΎΠΉ Π½ΠΈΡΠΈ; ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ m ΡΠ°Π²Π½ΠΎ 1;
Β· DYNAMIC [, m] - Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΈΡΠ΅ΡΠ°ΡΠΈΠΉ Ρ ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½Π½ΡΠΌ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠΌ Π±Π»ΠΎΠΊΠ°: ΡΠ½Π°ΡΠ°Π»Π° Π²ΡΠ΅ Π½ΠΈΡΠΈ ΠΏΠΎΠ»ΡΡΠ°ΡΡ ΠΏΠΎΡΡΠΈΠΈ ΠΈΠ· m ΠΈΡΠ΅ΡΠ°ΡΠΈΠΉ, Π° Π·Π°ΡΠ΅ΠΌ ΠΊΠ°ΠΆΠ΄Π°Ρ Π½ΠΈΡΡ, Π·Π°ΠΊΠ°Π½ΡΠΈΠ²Π°ΡΡΠ°Ρ ΡΠ²ΠΎΡ ΡΠ°Π±ΠΎΡΡ, ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ ΡΠ»Π΅Π΄ΡΡΡΡΡ ΠΏΠΎΡΡΠΈΡ ΠΎΠΏΡΡΡ-ΡΠ°ΠΊΠΈ ΠΈΠ· m ΠΈΡΠ΅ΡΠ°ΡΠΈΠΉ;
Β· GUIDED [, m] - Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠ΅ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΈΡΠ΅ΡΠ°ΡΠΈΠΉ Π±Π»ΠΎΠΊΠ°ΠΌΠΈ ΡΠΌΠ΅Π½ΡΡΠ°ΡΡΠ΅Π³ΠΎΡΡ ΡΠ°Π·ΠΌΠ΅ΡΠ°; Π°Π½Π°Π»ΠΎΠ³ΠΈΡΠ½ΠΎ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ DYNAMIC, Π½ΠΎ ΡΠ°Π·ΠΌΠ΅Ρ Π²ΡΠ΄Π΅Π»ΡΠ΅ΠΌΡΡ Π±Π»ΠΎΠΊΠΎΠ² Π²ΡΠ΅ Π²ΡΠ΅ΠΌΡ ΡΠΌΠ΅Π½ΡΡΠ°Π΅ΡΡΡ, ΡΡΠΎ Π² ΡΡΠ΄Π΅ ΡΠ»ΡΡΠ°Π΅Π² ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π°ΠΊΠΊΡΡΠ°ΡΠ½Π΅Π΅ ΡΠ±Π°Π»Π°Π½ΡΠΈΡΠΎΠ²Π°ΡΡ Π·Π°Π³ΡΡΠ·ΠΊΡ Π½ΠΈΡΠ΅ΠΉ;
Β· RUNTIME — ΡΠΏΠΎΡΠΎΠ± ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΈΡΠ΅ΡΠ°ΡΠΈΠΉ ΡΠΈΠΊΠ»Π° Π²ΡΠ±ΠΈΡΠ°Π΅ΡΡΡ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ Π·Π½Π°ΡΠ΅Π½ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ OMP_SCHEDULE.
Β·
ΠΡΠ»ΠΈ Π² OpenMP-Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Π΅ END DO Π·Π°Π΄Π°Π½ΠΎ NOWAIT, Π² ΠΊΠΎΠ½ΡΠ΅ ΡΠΈΠΊΠ»Π° Π½ΠΈΡΠΈ Π½Π΅ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΡΡΡΡΡ. ΠΠ»ΡΡ REDUCTION Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ !$OMP PARALLEL DO ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ ΡΠ΅Π΄ΡΠΊΡΠΈΠΎΠ½Π½ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ (ΡΠΌ. Π ΠΈΡ. 5).
Π OpenMP ΠΈΠΌΠ΅Π΅ΡΡΡ ΡΠ°ΠΊΠΆΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡ ΡΠΎΠΊΡΠ°ΡΠ΅Π½ΠΈΡ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡΠΈΠ΅ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΡΡΡ ΠΈΠ½ΡΡΡΡΠΊΡΠΈΠΈ PARALLEL/END PARALLEL ΠΈ DO/ENDDO Π² ΠΏΠ°ΡΡ PARALLEL DO/END PARALLEL DO.
ΠΠΈΡΠ΅ΠΊΡΠΈΠ²Π° SECTIONS (ΡΠΌ. Π ΠΈΡ. 6) ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΠ°Π±ΠΎΡΡ ΠΌΠ΅ΠΆΠ΄Ρ Π½ΠΈΡΡΠΌΠΈ Π² «Π½Π΅ΠΈΡΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΠΎΠΌ» ΡΠ»ΡΡΠ°Π΅. ΠΠ»ΡΡΠΈ, ΠΊΠ°ΠΊ ΠΈ ΡΠ°Π½Π΅Π΅, ΠΌΠΎΠ³ΡΡ ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ Π½Π° ΡΠΈΠΏ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ (PRIVATE, FIRSTPRIVATE ΠΈ Ρ. Π΄.), Π° ΡΠ°ΠΊΠΆΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ ΠΊΠ»ΡΡ REDUCTION. OpenMP-ΠΊΠΎΠ½ΡΡΡΡΠΊΡΠΈΡ SECTIONS ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌ Π½ΠΈΡΡΠΌ Π²ΡΠΏΠΎΠ»Π½ΡΡΡ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎ ΠΎΠ±ΡΡΠ½ΡΠΉ Π»ΠΈΠ½Π΅ΠΉΠ½ΡΠΉ ΡΡΠ°ΡΡΠΎΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½Π° Π€ΠΎΡΡΡΠ°Π½Π΅, ΡΠ°Π·Π±ΠΈΡΡΠΉ Π½Π° «ΡΠ΅ΠΊΡΠΈΠΈ» — Π±Π»ΠΎΠΊΠΈ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ² ΡΠ·ΡΠΊΠ°. ΠΡΠΈ ΡΠ΅ΠΊΡΠΈΠΈ ΠΌΠΎΠ³ΡΡ ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΡ Π² ΡΠ΅Π±Π΅, Π² ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ, Π²ΡΠ·ΠΎΠ²Ρ ΡΠΎΡΡΡΠ°Π½ΠΎΠ²ΡΠΊΠΈΡ ΠΏΠΎΠ΄ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ.
ΠΠΎΠ³Π°ΡΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡ ΡΡΠ΅Π΄ΡΡΠ²Π° OpenMP ΠΈ Π΄Π»Ρ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ. Π‘ΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡΡ, Π² ΡΠ°ΡΡΠ½ΠΎΡΡΠΈ, ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ Π±Π°ΡΡΠ΅Ρ (!$OMP BARRIER) ΠΈΠ»ΠΈ ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΡΡ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΡ (!$OMP ATOMIC), ΠΏΡΠ΅Π΄ΠΎΡ ΡΠ°Π½ΡΡΡΡΡ ΠΎΡ ΠΎΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΈΠΌΠΈ Π½ΠΈΡΡΠΌΠΈ Π² ΠΎΠ΄Π½ΠΎ ΠΈ ΡΠΎ ΠΆΠ΅ ΠΏΠΎΠ»Π΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ. ΠΡΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΡΠ΅Ρ ΠΏΡΠ΅Π΄ΠΎΡΠ²ΡΠ°ΡΠΈΡΡ ΡΠΈΡΡΠ°ΡΠΈΡ Π³ΠΎΠ½ΠΊΠΈ. ΠΡΡΠ³Π°Ρ ΠΏΠΎΠ»Π΅Π·Π½Π°Ρ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Π°, ΠΎ ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΡΠΎΠΈΡ ΡΠΏΠΎΠΌΡΠ½ΡΡΡ — ΡΡΠΎ !$OMP FLUSH. ΠΠ½Π° Π·Π°ΡΡΠ°Π²Π»ΡΠ΅Ρ Π² ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅ΠΉ ΡΠΎΡΠΊΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΏΠΎΠ»ΡΡΠΈΡΡ «ΡΠΎΠ³Π»Π°ΡΠΎΠ²Π°Π½Π½ΠΎΠ΅» ΠΌΠ΅ΠΆΠ΄Ρ Π½ΠΈΡΡΠΌΠΈ ΡΠΎΡΡΠΎΡΠ½ΠΈΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΈΠ²Π½ΠΎΠΉ ΠΏΠ°ΠΌΡΡΠΈ (ΠΏΡΠΈ ΡΡΠΎΠΌ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ΠΈΠ· ΡΠ΅Π³ΠΈΡΡΡΠΎΠ² Π±ΡΠ΄ΡΡ Π·Π°ΠΏΠΈΡΠ°Π½Ρ Π² ΠΏΠ°ΠΌΡΡΡ, ΡΠ±ΡΠΎΡΡΡΡΡ Π±ΡΡΠ΅ΡΡ Π·Π°ΠΏΠΈΡΠΈ ΠΈ Ρ. Π΄.). ΠΠ°ΡΠ° Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ² MASTER: END MASTER Π²ΡΠ΄Π΅Π»ΡΠ΅Ρ ΡΡΠ°ΡΡΠΎΠΊ ΠΊΠΎΠ΄Π°, ΠΊΠΎΡΠΎΡΡΠΉ Π±ΡΠ΄Π΅Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ ΡΠΎΠ»ΡΠΊΠΎ Π½ΠΈΡΡΡ-ΠΌΠ°ΡΡΠ΅ΡΠΎΠΌ. ΠΡΡΠ°Π»ΡΠ½ΡΠ΅ Π½ΠΈΡΠΈ ΠΏΡΠΎΠΏΡΡΠΊΠ°ΡΡ Π΄Π°Π½Π½ΡΠΉ ΡΡΠ°ΡΡΠΎΠΊ ΠΈ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡΡ ΡΠ°Π±ΠΎΡΡ Ρ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ°, ΡΠ°ΡΠΏΠΎΠ»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ ΡΠ»Π΅Π΄ΠΎΠΌ Π·Π° Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²ΠΎΠΉ END MASTER. Π‘ ΠΏΠΎΠΌΠΎΡΡΡ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ CRITICAL ΠΎΡΠΎΡΠΌΠ»ΡΠ΅ΡΡΡ ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΡΠ΅ΠΊΡΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. Π ΠΊΠ°ΠΆΠ΄ΡΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π² ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΠ΅ΠΊΡΠΈΠΈ ΠΌΠΎΠΆΠ΅Ρ Π½Π°Ρ ΠΎΠ΄ΠΈΡΡΡΡ Π½Π΅ Π±ΠΎΠ»Π΅Π΅ ΠΎΠ΄Π½ΠΎΠΉ Π½ΠΈΡΠΈ (ΡΠΌ. Π ΠΈΡ. 7). ΠΡΠ»ΠΈ ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΠ°Ρ ΡΠ΅ΠΊΡΠΈΡ ΡΠΆΠ΅ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ ΠΊΠ°ΠΊΠΎΠΉ-Π»ΠΈΠ±ΠΎ Π½ΠΈΡΡΡ P0, ΡΠΎ Π²ΡΠ΅ Π΄ΡΡΠ³ΠΈΠ΅ Π½ΠΈΡΠΈ, Π²ΡΠΏΠΎΠ»Π½ΠΈΠ²ΡΠΈΠ΅ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ Π΄Π»Ρ ΡΠ΅ΠΊΡΠΈΠΈ Ρ Π΄Π°Π½Π½ΡΠΌ ΠΈΠΌΠ΅Π½Π΅ΠΌ, Π±ΡΠ΄ΡΡ Π·Π°Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½Ρ, ΠΏΠΎΠΊΠ° Π½ΠΈΡΡ P0 Π½Π΅ Π·Π°ΠΊΠΎΠ½ΡΠΈΡ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½ΠΎΠΉ ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΠΎΠΉ ΡΠ΅ΠΊΡΠΈΠΈ. ΠΠ°ΠΊ ΡΠΎΠ»ΡΠΊΠΎ P0 Π²ΡΠΏΠΎΠ»Π½ΠΈΡ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ END CRITICAL, ΠΎΠ΄Π½Π° ΠΈΠ· Π·Π°Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½Π½ΡΡ Π½Π° Π²Ρ ΠΎΠ΄Π΅ Π½ΠΈΡΠ΅ΠΉ Π²ΠΎΠΉΠ΄Π΅Ρ Π² ΡΠ΅ΠΊΡΠΈΡ. ΠΡΠ»ΠΈ Π½Π° Π²Ρ ΠΎΠ΄Π΅ Π² ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΡΡ ΡΠ΅ΠΊΡΠΈΡ ΡΡΠΎΡΠ»ΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π½ΠΈΡΠ΅ΠΉ, ΡΠΎ ΡΠ»ΡΡΠ°ΠΉΠ½ΡΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ Π²ΡΠ±ΠΈΡΠ°Π΅ΡΡΡ ΠΎΠ΄Π½Π° ΠΈΠ· Π½ΠΈΡ , Π° ΠΎΡΡΠ°Π»ΡΠ½ΡΠ΅ Π·Π°Π±Π»ΠΎΠΊΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ Π½ΠΈΡΠΈ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡΡ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΠ΅. ΠΡΠ΅ Π½Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½Π½ΡΠ΅ ΠΊΡΠΈΡΠΈΡΠ΅ΡΠΊΠΈΠ΅ ΡΠ΅ΠΊΡΠΈΠΈ ΡΡΠ»ΠΎΠ²Π½ΠΎ Π°ΡΡΠΎΡΠΈΠΈΡΡΡΡΡΡ Ρ ΠΎΠ΄Π½ΠΈΠΌ ΠΈ ΡΠ΅ΠΌ ΠΆΠ΅ ΠΈΠΌΠ΅Π½Π΅ΠΌ.
ΠΠΈΡΠ΅ΠΊΡΠΈΠ²Π° ORDERED Π·Π°ΡΡΠ°Π²Π»ΡΠ΅Ρ ΠΊΠΎΠ΄Ρ Fortran, Π·Π°ΠΊΠ»ΡΡΠ΅Π½Π½ΡΠ΅ Π²Π½ΡΡΡΠΈ ΠΏΠ°ΡΡ ORDERED/END ORDERED, Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ Π² «Π΅ΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠΌ» ΠΏΠΎΡΡΠ΄ΠΊΠ΅ (Π² ΡΠΎΠΉ, Π² ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΈΡΠ΅ΡΠ°ΡΠΈΠΈ ΡΠΈΠΊΠ»Π° Π²ΡΠΏΠΎΠ»Π½ΡΡΡΡΡ ΠΏΡΠΈ Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΠΎΠΌ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΠΌ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ). ΠΡΠ° ΠΏΠ°ΡΠ° Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ² ΠΌΠΎΠΆΠ΅Ρ ΠΏΡΠΈΡΡΡΡΡΠ²ΠΎΠ²Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π² Π΄ΠΈΠ½Π°ΠΌΠΈΡΠ΅ΡΠΊΠΎΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ DO (ΠΈΠ»ΠΈ PARALLEL DO), Π² ΠΊΠΎΡΠΎΡΠΎΠΉ ΡΠΊΠ°Π·Π°Π½ ΠΊΠ»ΡΡ ORDERED. Π’Π°ΠΊΠΈΠ΅ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ ΠΌΠΎΠ³ΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΡΡΡ Π΄Π»Ρ ΠΎΡΠ³Π°Π½ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΠ΅ΡΠ°ΡΠΈ Π² Π½ΠΎΡΠΌΠ°Π»ΡΠ½ΠΎΠΉ — ΡΠΊΠ°ΠΆΠ΅ΠΌ, ΠΏΠΎ Π²ΠΎΠ·ΡΠ°ΡΡΠ°Π½ΠΈΡ ΡΡΠ΅ΡΡΠΈΠΊΠ° ΡΠΈΠΊΠ»Π°ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ.
1.3 Π Π°ΡΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ²Π°Π½ΠΈΠ΅ Π΄Π»Ρ OpenMP
ΠΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π² ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΡ — ΠΏΡΠΎΡΠ΅ΡΡ Π½Π΅ΡΡΠΈΠ²ΠΈΠ°Π»ΡΠ½ΡΠΉ, Π½Π΅ΠΎΠ΄Π½ΠΎΠ·Π½Π°ΡΠ½ΡΠΉ ΠΈ Π½Π΅ΡΠΎΡΠΌΠ°Π»ΡΠ½ΡΠΉ. Π Π°ΡΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ²Π°Π½ΠΈΠ΅ Π² OpenMPΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, Π² ΠΊΠΎΠ½Π΅ΡΠ½ΠΎΠΌ ΡΡΠ΅ΡΠ΅, ΡΠ²ΠΎΠ΄ΠΈΡΡΡ ΠΊ ΠΏΡΠΈΠ½ΡΡΠΈΡ ΡΠ΅ΡΠ΅Π½ΠΈΡ ΠΏΠΎ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ Π½ΠΈΡΠ΅ΠΉ ΠΈ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ ΠΈ ΡΠ°ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ΅ Π² ΡΠ΅ΠΊΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΡ OpenMP-Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ². Π Π°Π·Π½ΡΠ΅ ΡΠΏΠΎΡΠΎΠ±Ρ ΠΎΠ±ΡΡΠ²Π»Π΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ , ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ ΠΈ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ Π½ΠΈΡΠ΅ΠΉ ΠΌΠΎΠ³ΡΡ ΠΈΠΌΠ΅ΡΡ ΡΠ°Π·Π½ΡΡ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΡ, ΠΏΡΠΈΡΠ΅ΠΌ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΡ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΠΌΠΎΠΆΠ΅Ρ Π·Π°Π²ΠΈΡΠ΅ΡΡ ΠΊΠ°ΠΊ ΠΎΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΈ ΡΠΈΡΡΠ΅ΠΌΡ, ΡΠ°ΠΊ ΠΈ ΠΎΡ ΡΠ°Π·ΠΌΠ΅ΡΠ° Π·Π°Π΄Π°ΡΠΈ.
ΠΠ· ΡΡΠΎΠ³ΠΎ ΡΠ»Π΅Π΄ΡΠ΅Ρ, ΡΡΠΎ:
Β· ΡΡΡΠ΄Π½ΠΎ ΡΠ°ΡΡΡΠΈΡΡΠ²Π°ΡΡ Π½Π° ΡΠΎΠ·Π΄Π°Π½ΠΈΠ΅ ΡΠΈΡΡΠ΅ΠΌΡ ΠΏΠΎΠ»Π½ΠΎΡΡΡΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·ΠΈΡΡΡΡΠ΅ΠΉ ΡΡΠΎ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅, Ρ. Π΅. ΡΠ°ΡΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅ΡΡΡ ΠΊΠ°ΠΊ ΠΈΡΠ΅ΡΠ°ΡΠΈΠΎΠ½Π½ΡΠΉ ΠΏΡΠΎΡΠ΅ΡΡ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ Ρ ΡΠΈΡΡΠ΅ΠΌΠΎΠΉ;
Β· ΡΠΈΡΡΠ΅ΠΌΠ° Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Π° ΠΎΠ³ΡΠ°Π½ΠΈΡΠΈΠ²Π°ΡΡ Π²ΡΠ±ΠΎΡ, Π° ΠΏΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ, Π΄ΠΎΠ»ΠΆΠ½Π° ΠΈ ΠΏΠΎΠ΄ΡΠΊΠ°Π·ΡΠ²Π°ΡΡ Π²Π°ΡΠΈΠ°Π½ΡΡ ΡΠ°ΡΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ²Π°Π½ΠΈΡ;
Β· ΡΠΈΡΡΠ΅ΠΌΠ° Π΄ΠΎΠ»ΠΆΠ½Π° Π΄ΠΎΠΏΡΡΠΊΠ°ΡΡ Π²ΠΌΠ΅ΡΠ°ΡΠ΅Π»ΡΡΡΠ²ΠΎ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ, Ρ. Π΅. ΠΏΡΠΈΠ½ΡΡΠΈΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠΉ ΡΠ°ΠΌΠΈΠΌ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ;
1.4 CΡΡΡ ΠΈ Π°ΠΊΡΡΠ°Π»ΡΠ½ΠΎΡΡΡ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ
ΠΡΠ΅ΠΈΠΌΡΡΠ΅ΡΡΠ²Π° OpenMP:
1) Π Π°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊ Π½Π΅ ΡΠΎΠ·Π΄Π°Π΅Ρ Π½ΠΎΠ²ΡΡ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, Π° ΠΏΡΠΎΡΡΠΎ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅Ρ Π² ΡΠ΅ΠΊΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ OpenMP-Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ.
2) OpenMP — Π΄ΠΎΡΡΠ°ΡΠΎΡΠ½ΠΎ Π³ΠΈΠ±ΠΊΠΈΠΉ ΠΌΠ΅Ρ Π°Π½ΠΈΠ·ΠΌ, ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΡΡΠΈΠΉ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΡ Π±ΠΎΠ»ΡΡΠΈΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ ΠΊΠΎΠ½ΡΡΠΎΠ»Ρ Π½Π°Π΄ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΏΡΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΡ.
3) ΠΡΠ΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΡΡΡ, ΡΡΠΎ OpenMP-ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ° Π½Π° ΠΎΠ΄Π½ΠΎΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ½ΠΎΠΉ ΠΏΠ»Π°ΡΡΠΎΡΠΌΠ΅ ΠΌΠΎΠΆΠ΅Ρ Π±ΡΡΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½Π° Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, Ρ. Π΅. Π½Π΅Ρ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΡΡΠΈ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΡΡ ΠΈ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΡ Π²Π΅ΡΡΠΈΠΈ. ΠΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ OpenMP ΠΏΡΠΎΡΡΠΎ ΠΈΠ³Π½ΠΎΡΠΈΡΡΡΡΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΡΠΌ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠΎΠΌ.
4) ΠΠ΄Π½ΠΈΠΌ ΠΈΠ· Π΄ΠΎΡΡΠΎΠΈΠ½ΡΡΠ² OpenMP Π΅Π³ΠΎ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΡΡΠΈΡΠ°ΡΡ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΡ ΡΠ°ΠΊ Π½Π°Π·ΡΠ²Π°Π΅ΠΌΡΡ «orphan» (ΠΎΡΠΎΡΠ²Π°Π½Π½ΡΡ ) Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ², ΡΠΎ Π΅ΡΡΡ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ ΠΈ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ ΡΠ°Π±ΠΎΡΡ ΠΌΠΎΠ³ΡΡ Π½Π΅ Π²Ρ ΠΎΠ΄ΠΈΡΡ Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ Π² Π»Π΅ΠΊΡΠΈΡΠ΅ΡΠΊΠΈΠΉ ΠΊΠΎΠ½ΡΠ΅ΠΊΡΡ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ.
5) OpenMP — ΡΡΠ°Π½Π΄Π°ΡΡ, ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ°Π·ΡΠ°Π±ΠΎΡΠ°Π½ ΠΏΡΠ΅Π΄ΡΡΠ°Π²ΠΈΡΠ΅Π»ΡΠ½ΡΠΌ ΡΠΎΡΡΠΌΠΎΠΌ (HP, IBM, Intel, SGI, Sun, Fujitsu, NEC) Π΄Π»Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΌΡΠ»ΡΡΠΈΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠΎΠ² ΠΈ DSM-ΡΠΈΡΡΠ΅ΠΌ
6) ΠΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°Π΅ΡΡΡ Π² ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡΠΎΡΠ°Ρ ΡΠ·ΡΠΊΠΎΠ² Fotran, C, C++ Π΄Π»Ρ Π²ΡΠ΅Ρ ΠΎΡΠ½ΠΎΠ²Π½ΡΡ ΡΠΈΠΏΠΎΠ² ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠΎΠ².
ΠΠ΄Π½Π°ΠΊΠΎ, «Π»Π΅Π³ΠΊΠΎΡΡΡ» ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ Π½Π° OpenMP Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π΅ΡΠ΅ ΡΠΏΡΠΎΡΡΠΈΡΡ, Π·Π° ΡΡΠ΅Ρ «ΡΠΈΡΡΠ΅ΠΌΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΠΈ ΡΠ°ΡΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ²Π°Π½ΠΈΡ». ΠΡΠ»ΠΈ «ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΡΠΉ» ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡ Π±ΡΠ΄Π΅Ρ Π²ΠΈΠ΄Π΅ΡΡ Π°Π½Π°Π»ΠΈΠ· ΡΠ²ΠΎΠ΅ΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΈ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΠΈ ΠΏΠΎ ΡΠ°ΡΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ²Π°Π½ΠΈΡ, «ΡΠΌΡΡΠ²Π΅Π½Π½ΡΠ΅ Π·Π°ΡΡΠ°ΡΡ» Π½Π° Π²ΡΡΠ°Π²ΠΊΡ ΡΠ°ΡΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ²Π°ΡΡΠΈΡ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ² ΡΠ²Π΅Π΄ΡΡΡΡ ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡΠΌΡ ΠΈΠ»ΠΈ ΠΏΡΠΎΠΏΠ°Π΄ΡΡ Π²ΠΎΠΎΠ±ΡΠ΅. ΠΡΡΠ³ΠΎΠΉ Π²Π°ΡΠΈΠ°Π½Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΡΠΈΡΡΠ΅ΠΌΡ — Π°Π½Π°Π»ΠΈΠ· ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΠΈ ΡΠΆΠ΅ ΡΠ°ΡΠΏΠ°ΡΠ°Π»Π»Π΅Π»Π΅Π½Π½ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΈΠ»ΠΈ ΡΡΠ°Π²Π½Π΅Π½ΠΈΠ΅ Π΅Π΅ Ρ Π΄ΡΡΠ³ΠΈΠΌΠΈ Π²Π°ΡΠΈΠ°Π½ΡΠ°ΠΌΠΈ ΡΠ°ΡΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ²Π°Π½ΠΈΡ. Π ΡΡΠΎΠΌ ΡΠ»ΡΡΠ°Π΅ Π·Π°ΠΌΠ΅ΡΠ½ΠΎ ΠΎΠ±Π»Π΅Π³ΡΠ°Π΅ΡΡΡ ΠΏΠΎΠΈΡΠΊ ΠΎΠΏΡΠΈΠΌΠ°Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠ°ΡΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ²Π°Π½ΠΈΡ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, ΠΏΡΠΈ ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°Π½ΠΈΠΈ ΡΠ°ΠΊΠΎΠΉ ΡΠΈΡΡΠ΅ΠΌΡ Π»ΡΠ±ΠΎΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΡΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡ ΡΠΌΠΎΠΆΠ΅Ρ Π±Π΅Π· Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΏΠΎΠ΄Π³ΠΎΡΠΎΠ²ΠΊΠΈ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²ΡΠ²Π°ΡΡ ΡΠ²ΠΎΠΉ ΠΊΠΎΠ΄ ΠΊ «ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎΠΌΡ» Π²Π°ΡΠΈΠ°Π½ΡΡ. ΠΡΠΎ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎ Π°ΠΊΡΡΠ°Π»ΡΠ½ΠΎ Π΄Π»Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠΈΡΡΠΎΠ², ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΡΡΠΈΡ ΡΠ»ΠΎΠΆΠ½ΡΠ΅ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΡ, Π·Π°Π½ΠΈΠΌΠ°ΡΡΠΈΠ΅ ΠΎΠ³ΡΠΎΠΌΠ½ΠΎΠ΅ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ. ΠΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΌΡΠ»ΡΡΠΈΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ½ΡΡ ΡΠΈΡΡΠ΅ΠΌ Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π΄Π°ΡΡ Π·Π°ΠΌΠ΅ΡΠ½ΠΎΠ΅ ΡΡΠΊΠΎΡΠ΅Π½ΠΈΠ΅ ΡΠ°ΠΊΠΈΡ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ.
2. Π¦Π΅Π»ΠΈ Π΄ΠΈΠΏΠ»ΠΎΠΌΠ½ΠΎΠΉ ΡΠ°Π±ΠΎΡΡ
2.1 Π¦Π΅Π»ΠΈ ΠΏΡΠΎΠ΅ΠΊΡΠ° «Π‘ΠΈΡΡΠ΅ΠΌΠ° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΠΈ ΡΠ°ΡΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ²Π°Π½ΠΈΡ»
ΠΠ°Π½Π½Π°Ρ Π΄ΠΈΠΏΠ»ΠΎΠΌΠ½Π°Ρ ΡΠ°Π±ΠΎΡΠ° ΡΠ²Π»ΡΠ΅ΡΡΡ Π»ΠΈΡΡ ΡΠ°ΡΡΡΡ ΠΏΡΠΎΠ΅ΠΊΡΠ° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΠΈ ΡΠ°ΡΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ²Π°Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ, ΠΏΠΎΡΡΠΎΠΌΡ ΡΠ½Π°ΡΠ°Π»Π° ΠΎΡΡΠ°Π½ΠΎΠ²ΠΈΠΌΡΡ Π½Π° ΠΏΡΠΎΠ΅ΠΊΡΠ΅.
Π ΠΈΡ. 8. ΠΡΠΎΠ΅ΠΊΡ: Π‘ΠΈΡΡΠ΅ΠΌΠ° Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΠΈ ΡΠ°ΡΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ²Π°Π½ΠΈΡ.
ΠΠ° Π ΠΈΡ. 8 ΡΡ Π΅ΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΏΠΎΠΊΠ°Π·Π°Π½Ρ ΡΠΎΡΡΠ°Π²Π»ΡΡΡΠΈΠ΅ ΠΏΡΠΎΠ΅ΠΊΡΠ°: «ΠΠ½Π°Π»ΠΈΠ· ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ», «ΠΠΊΡΠΏΠ΅ΡΡ Π΄Π»Ρ ΠΌΡΠ»ΡΡΠΈΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°» (OpenMP) ΠΈ «ΠΠΊΡΠΏΠ΅ΡΡ Π΄Π»Ρ ΠΊΠ»Π°ΡΡΠ΅ΡΠ°» (DVM).
ΠΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΡΠΎΠ·Π΄Π°Π΅Ρ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½Π° ΡΠ·ΡΠΊΠ΅ Fortran. Π ΠΈΡΠΎΠ³Π΅ ΡΠ°Π±ΠΎΡΡ ΡΠΈΡΡΠ΅ΠΌΡ, ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΏΠΎΠ»ΡΡΠ°Π΅Ρ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π΄Π»Ρ Π°Π½Π°Π»ΠΈΠ·Π°:
Β· Π΄Π΅ΡΠ΅Π²ΠΎ ΡΠΈΠΊΠ»ΠΎΠ²; Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠΈΠΊΠ»Π° — Π΅Π³ΠΎ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΈ Π°ΡΡΠΈΠ±ΡΡΡ (ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ Π°Π½Π°Π»ΠΈΠ·Π°);
Β· ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ ;
Β· ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² Π² ΡΠΈΠΊΠ»Π°Ρ ΠΈ Π½Π°ΠΉΠ΄Π΅Π½Π½ΡΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ;
Β· ΡΠΏΠΈΡΠΎΠΊ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½Π½ΡΡ (Π² ΡΠΎΠΌ ΡΠΈΡΠ»Π΅ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½Π½ΡΡ , Π½ΠΎ ΠΎΡΠ²Π΅ΡΠ³Π½ΡΡΡΡ ) Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ² ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ (Π·Π°Π΄Π°ΡΠ° «ΠΠΊΡΠΏΠ΅ΡΡΠ°»);
Β· ΡΠΎΠ·Π΄Π°Π½Π½ΡΠ΅ ΠΈ ΠΌΠΎΠ΄ΠΈΡΠΈΡΠΈΡΡΠ΅ΠΌΡΠ΅ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ Π½Π°Π±ΠΎΡΡ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΉ ΡΠ΅Π»Π΅Π²ΠΎΠΉ ΠΌΠ°ΡΠΈΠ½Ρ ΠΈ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠ² Π·Π°Π΄Π°Ρ;
Β· Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΏΡΠ΅Π΄Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠ³ΠΎ Π²Π°ΡΠΈΠ°Π½ΡΠ° ΡΠ°ΡΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ²Π°Π½ΠΈΡ (Π²ΡΠ΅Ρ ΠΊΠΎΠ½ΡΠΈΠ³ΡΡΠ°ΡΠΈΠΉ ΠΈ ΡΠ°Π·ΠΌΠ΅ΡΠΎΠ²) ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡΠΈΠΊΠ»Π° ΠΈ Π²ΡΠ΅ΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΊΠ°ΠΊ ΠΊΠΎΡΠ½Ρ Π΄Π΅ΡΠ΅Π²Π° ΡΠΈΠΊΠ»ΠΎΠ², — ΠΎΡΠ΅Π½ΠΊΠΈ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΈ ΠΊΠ°ΡΠ΅ΡΡΠ²Π° ΡΠ°ΡΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ²Π°Π½ΠΈΡ Π΄Π»Ρ Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π²Π°ΡΠΈΠ°Π½ΡΠ° (Π·Π°Π΄Π°ΡΠ° «ΠΠΊΡΠΏΠ΅ΡΡΠ°»);
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ°, ΠΏΠΎΡΡΡΠΏΠ°Ρ Π² ΡΠΈΡΡΠ΅ΠΌΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΠΈ ΡΠ°ΡΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ²Π°Π½ΠΈΡ, ΠΏΡΠΎΡ ΠΎΠ΄ΠΈΡ Π°Π½Π°Π»ΠΈΠ·, Π½Π° ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈΠΈ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΡΠΎΡΠΌΠΈΡΡΠ΅ΡΡΡ ΠΠ°Π·Π° ΠΠ°Π½Π½ΡΡ , Π² ΠΊΠΎΡΠΎΡΡΡ Π²Ρ ΠΎΠ΄ΡΡ: Π΄Π΅ΡΠ΅Π²ΠΎ ΡΠΈΠΊΠ»ΠΎΠ²; ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ², ΠΎΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² Π² ΡΠΈΠΊΠ»Π°Ρ ; Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡΠ΅Π»ΡΠ½ΡΠ΅ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ.
Π‘ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΠ΅ΠΉ ΠΈΠ· Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ «ΠΠΊΡΠΏΠ΅ΡΡΡ» ΠΈΡΡΡ ΡΠ°ΠΌΡΠ΅ ΠΎΠΏΡΠΈΠΌΠ°Π»ΡΠ½ΡΠ΅ ΡΠΏΠΎΡΠΎΠ±Ρ ΡΠ°ΡΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ²Π°Π½ΠΈΡ ΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ Π½ΠΈΡ Π² Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ . ΠΠΎΠ΄ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½Π° Π²ΡΡ ΠΎΠ΄Π΅ ΡΠΈΡΡΠ΅ΠΌΡ Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅ΡΡΡ, Π° Π²ΡΠ΅Π³ΠΎ Π»ΠΈΡΡ Π΄ΠΎΠ±Π°Π²Π»ΡΡΡΡΡ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ, Π³Π΄Π΅ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄ΡΠ΅ΡΡΡ Π²ΡΡΠ°Π²ΠΈΡΡ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ OpenMP ΠΈΠ»ΠΈ DVM (Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π»ΡΡΡΠΈΡ Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ²), Π½Π°ΡΠΊΠΎΠ»ΡΠΊΠΎ Π±ΡΠ΄ΡΡ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½Ρ ΡΡΠΈ Π²ΡΡΠ°Π²ΠΊΠΈ, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΈΠ· Π°Π½Π°Π»ΠΈΠ·Π°.
2.2 Π¦Π΅Π»ΠΈ «ΠΠΊΡΠΏΠ΅ΡΡΠ° Π΄Π»Ρ ΠΌΡΠ»ΡΡΠΈΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°»
Π¦Π΅Π»Ρ Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π΄ΠΈΠΏΠ»ΠΎΠΌΠ° — ΡΠ°Π·ΡΠ°Π±ΠΎΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΡΠ΅Π°Π»ΠΈΠ·ΡΡΡΠ΅ΠΉ «ΠΠΊΡΠΏΠ΅ΡΡ Π΄Π»Ρ ΠΌΡΠ»ΡΡΠΈΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ°» Π² ΠΏΡΠΎΠ΅ΠΊΡΠ΅. ΠΠ° ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈΠΈ Π΄Π°Π½Π½ΡΡ , ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΡΡ Π½Π° ΡΡΠ°Π΄ΠΈΠΈ Π°Π½Π°Π»ΠΈΠ·Π°, ΠΈ Ρ Π°ΡΠ°ΠΊΡΠ΅ΡΠΈΡΡΠΈΠΊ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΌΡΠ»ΡΡΠΈΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ° «ΠΠΊΡΠΏΠ΅ΡΡ» Π΄ΠΎΠ»ΠΆΠ΅Π½ Π·Π°Π½Π΅ΡΡΠΈ Π² Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡ (Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Π°Ρ OpenMP), ΠΊΠΎΡΠΎΡΡΠ΅ Π΄ΠΎΠ»ΠΆΠ½Ρ Π±ΡΡΡ Π²ΡΡΠ°Π²Π»Π΅Π½Ρ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΠΏΠΎΠ»ΡΡΠΈΡΡΡ Π½Π° Π²ΡΡ ΠΎΠ΄Π΅ ΡΠΈΡΡΠ΅ΠΌΡ, Π° ΡΠ°ΠΊΠΆΠ΅ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ ΠΏΡΠΎΠ³Π½ΠΎΠ·ΠΈΡΡΠ΅ΠΌΠΎΠΉ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΠΈ ΡΠ°ΡΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ²Π°Π½ΠΈΡ. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±ΡΠ°Π·ΠΎΠΌ, «ΠΠΊΡΠΏΠ΅ΡΡ» Π³Π΅Π½Π΅ΡΠΈΡΡΠ΅Ρ, ΠΎΡΠ΅Π½ΠΈΠ²Π°Π΅Ρ ΠΈ Π²ΡΠ±ΠΈΡΠ°Π΅Ρ Π»ΡΡΡΠΈΠ΅ Π²Π°ΡΠΈΠ°Π½ΡΡ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠΉ ΠΈ Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π΄Π°Π½Π½ΡΡ . ΠΠΊΡΠΏΠ΅ΡΡ Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΠ΅Ρ ΠΊΠΎΠ΄ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, Π° Π»ΠΈΡΡ Π²Π½ΠΎΡΠΈΡ Π² Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ «Π½Π°ΠΈΠ»ΡΡΡΠΈΡ ΡΠ΅ΠΊΠΎΠΌΠ΅Π½Π΄Π°ΡΠΈΡΡ ΠΏΠΎ ΡΠ°ΡΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ²Π°Π½ΠΈΡ». ΠΡΠ° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ Π²ΠΏΠΎΡΠ»Π΅Π΄ΡΡΠ²ΠΈΠΈ ΠΈ Π±ΡΠ΄Π΅Ρ Π²ΡΠ΄Π°Π½Π° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ.
2.3 ΠΡ ΠΎΠ΄Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅
ΠΠΏΠΈΡΠ°Π½ΠΈΠ΅ ΡΠΈΠΊΠ»Π° ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ:
Β· ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ Π½Π° ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΠΈΠΊΠ»Π°;
Β· ΠΏΠ΅ΡΠ²ΠΎΠ΅, ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅;
Β· Π½Π°Π»ΠΈΡΠΈΠ΅ Π² ΡΠΈΠΊΠ»Π΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠΎΠ² Π²Π²ΠΎΠ΄Π°-Π²ΡΠ²ΠΎΠ΄Π°, ΠΏΠΎΠ±ΠΎΡΠ½ΡΡ Π²ΡΡ ΠΎΠ΄ΠΎΠ² ΠΈ Ρ. ΠΏ.
Β· ΠΎΡΠ΅Π½ΠΊΠ° ΡΡΡΠ΄ΠΎΠ΅ΠΌΠΊΠΎΡΡΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π²ΠΈΡΠΊΠ° ΡΠΈΠΊΠ»Π°;
Β· ΠΏΡΠΈΠ·Π½Π°ΠΊ ΡΠ΅ΡΠ½ΠΎΠΉ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΡΡΠΈ;
Β· ΡΠΏΠΈΡΠΎΠΊ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠΉ ΠΊ ΠΌΠ°ΡΡΠΈΠ²Π°ΠΌ ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌ.
ΠΠ΅ΡΠ΅Π²ΠΎ ΡΠΈΠΊΠ»ΠΎΠ² — ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΡΠΈΠΊΠ»ΠΎΠ² Ρ ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠ΅ΠΌ «Π½Π΅ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²Π΅Π½Π½ΠΎ Π²Π»ΠΎΠΆΠ΅Π½ Π²». ΠΠΎΡΠ΅Π½Ρ «Π΄Π΅ΡΠ΅Π²Π° ΡΠΈΠΊΠ»ΠΎΠ²», ΡΡΠΎΠ²Π΅Π½Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΡΠ°ΠΌ ΡΠΈΠΊΠ»ΠΎΠΌ Π½Π΅ ΡΠ²Π»ΡΠ΅ΡΡΡ, Π½ΠΎ ΡΠΎΡΠΌΠ°Π»ΡΠ½ΠΎ ΠΌΠΎΠΆΠ΅Ρ ΡΡΠΈΡΠ°ΡΡΡΡ «ΡΠΈΠΊΠ»ΠΎΠΌ» Π±Π΅Π· ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΡΠΈΠΊΠ»Π° Ρ ΠΎΠ΄Π½ΠΎΠΊΡΠ°ΡΠ½ΡΠΌ Π²ΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ.
Π‘ΠΏΠΈΡΠΎΠΊ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² (ΠΈ ΠΏΡΠΎΡΡΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ).
ΠΠ»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π°:
Β· ΠΈΠ΄Π΅Π½ΡΠΈΡΠΈΠΊΠ°ΡΠΎΡ;
Β· ΡΠ°Π·ΠΌΠ΅Ρ ΠΏΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ;
Β· ΡΠΏΠΈΡΠΎΠΊ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠΉ ΠΊ ΠΌΠ°ΡΡΠΈΠ²Ρ.
ΠΠ°ΡΠΈΠ°Π½Ρ Π·Π°Π΄Π°ΡΠΈ:
Β· ΡΠ°Π·ΠΌΠ΅ΡΠ½ΠΎΡΡΠΈ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² ΠΏΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ (ΡΠΆΠ΅ ΠΊΠ°ΠΊ ΠΊΠΎΠ½ΡΡΠ°Π½ΡΡ);
Β· ΡΠΈΡΠ»ΠΎ ΠΈΡΠ΅ΡΠ°ΡΠΈΠΉ;
Β· ΠΈΠ»ΠΈ Π·Π½Π°ΡΠ΅Π½ΠΈΡ Π²Π½Π΅ΡΠ½ΠΈΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ , ΠΎΡ ΠΊΠΎΡΠΎΡΡΡ Π·Π°Π²ΠΈΡΡΡ ΡΡΠΈ Π²Π΅Π»ΠΈΡΠΈΠ½Ρ.
ΠΠ°ΡΠΈΠ°Π½Ρ ΠΌΠ°ΡΡΠΈΠ²Π° ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠΎΠ²:
Β· ΡΠΈΡΠ»ΠΎ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΠΉ ΠΈ ΡΠ°Π·ΠΌΠ΅Ρ ΠΏΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡ ΠΈΠ·ΠΌΠ΅ΡΠ΅Π½ΠΈΡ (ΡΠ΅ΡΠ΅ΡΠΊΠ° ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠΎΠ²).
ΠΠ±ΡΠ°ΡΠ΅Π½ΠΈΡ ΠΊ ΠΌΠ°ΡΡΠΈΠ²Π°ΠΌ (ΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠΌ) Π² ΡΠΈΠΊΠ»Π΅ — ΠΎΡΠ½ΠΎΡΠ΅Π½ΠΈΠ΅ «ΠΊ <ΠΌΠ°ΡΡΠΈΠ²Ρ> ΠΎΠ±ΡΠ°ΡΠ°ΡΡΡΡ Π² <ΡΠΈΠΊΠ»Π΅>». ΠΠ»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΠ°ΡΡ <οΏ½ΠΌΠ°ΡΡΠΈΠ², ΡΠΈΠΊΠ»>:
Β· Π½Π΅Ρ (Π½Π΅ ΡΠΎΠ·Π΄Π°Π΅Ρ) Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ Π½ΠΈ ΠΌΠ΅ΠΆΠ΄Ρ ΠΈΡΠ΅ΡΠ°ΡΠΈΡΠΌΠΈ, Π½ΠΈ Π²Π½ΡΡΡΠΈ;
Β· Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡ Π²Π½ΡΡΡΠΈ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΡΠ΅ΡΠ°ΡΠΈΠΈ;
Β· REDUCTION (Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΠΈΡΠ΅ΡΠ°ΡΠΈΡΠΌΠΈ ΡΠΎΠ·Π΄Π°ΡΡ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ ΡΠΏΠ΅ΡΠΈΠ°Π»ΡΠ½ΠΎΠ³ΠΎ Π²ΠΈΠ΄Π°, ΡΠΈΠΏΠ° a=a+xi);
Β· Private, Lastprivate, Firstprivate — ΠΏΡΠΈΠ²Π°ΡΠ½ΡΠ΅ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅
Β· Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡΡΠ°Ρ ΠΈΠ·-Π·Π° Π½Π΅Π³ΠΎ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡ ΠΌΠ΅ΠΆΠ΄Ρ ΠΈΡΠ΅ΡΠ°ΡΠΈΡΠΌΠΈ ΠΎΠ±ΡΠ΅Π³ΠΎ Π²ΠΈΠ΄Π°.
Π‘ΠΏΠΈΡΠΎΠΊ Π²ΡΠ΅Ρ ΠΎΠ±ΡΠ°ΡΠ΅Π½ΠΈΠΉ, Ρ. Π΅. Π½Π°Π±ΠΎΡΠΎΠ² ΠΈΠ½Π΄Π΅ΠΊΡΠ½ΡΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ, ΠΆΠ΅Π»Π°ΡΠ΅Π»ΡΠ½ΠΎ Π±Π΅Π· ΠΏΠΎΠ²ΡΠΎΡΠ΅Π½ΠΈΠΉ. ΠΡΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ Π½Π°Π΄ΠΎ ΡΠΊΠ°Π·Π°ΡΡ:
Β· ΡΡΠ΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ/ΠΈ ΠΏΡΠΈΡΠ²Π°ΠΈΠ²Π°Π½ΠΈΠ΅;
Β· ΠΈΠ½Π΄Π΅ΠΊΡΠ½ΡΠ΅ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΡ;
2.4 ΠΡΡ ΠΎΠ΄Π½ΡΠ΅ ΠΈ ΡΠΎΡ ΡΠ°Π½ΡΠ΅ΠΌΡΠ΅ Π΄Π°Π½Π½ΡΠ΅
ΠΡΡ ΠΎΠ΄Π½ΡΠ΅ Π΄Π°Π½Π½ΡΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΡΡ ΡΠΎΠ±ΠΎΠΉ:
Β· ΠΠ°ΡΠΈΠ°Π½Ρ ΡΠ°ΡΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ²Π°Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. ΠΠ°ΡΠΈΠ°Π½Ρ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ Π½Π°Π±ΠΎΡ ΠΏΡΠ°Π²ΠΈΠ» ΠΏΠΎΠ»ΡΡΠ΅Π½ΠΈΡ OpenMP-ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. ΠΡΠ΅Π½ΠΊΠ° ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΠΈ Π²ΡΠΏΠΎΠ»Π½ΡΠ΅ΡΡΡ Π΄Π»Ρ Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π²Π°ΡΠΈΠ°Π½ΡΠ° ΡΠ°ΡΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ²Π°Π½ΠΈΡ ΠΈ Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π²Π°ΡΠΈΠ°Π½ΡΠ° Π·Π°ΠΏΡΡΠΊΠ°.
Β· ΠΡΠ΅Π½ΠΊΠ° Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π²Π°ΡΠΈΠ°Π½ΡΠ° ΡΠ°ΡΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ²Π°Π½ΠΈΡ ΠΈ Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π²Π°ΡΠΈΠ°Π½ΡΠ° Π·Π°ΠΏΡΡΠΊΠ°: ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΠΎΡΡΠΈ ΡΠΈΠΊΠ»Π°, ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π² ΡΠ΅Π»ΠΎΠΌ ΠΈ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΠΈ ΡΠ°ΡΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ²Π°Π½ΠΈΡ.
Β· ΠΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ, ΠΎΠ±ΡΡΡΠ½ΡΡΡΠ°Ρ, ΠΏΠΎΡΠ΅ΠΌΡ Π²ΡΠ±ΡΠ°Π½ΠΎ Π΄Π°Π½Π½ΠΎΠ΅ ΡΠ°ΡΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅. ΠΠ»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π²ΡΡΠ°Π²Π»Π΅Π½Π½ΠΎΠΉ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ Π²ΡΡΠΈΡΠ»Π΅Π½ΠΈΠ΅ ΡΡΠΊΠΎΡΠ΅Π½ΠΈΡ, ΠΏΠΎΠ»ΡΡΠ΅Π½Π½ΠΎΠ³ΠΎ Π·Π° ΡΡΠ΅Ρ ΡΡΠΎΠΉ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ.
3. ΠΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΡ «ΡΠΈΡΡΠ΅ΠΌ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΠ·Π°ΡΠΈΠΈ ΡΠ°ΡΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ²Π°Π½ΠΈΡ»
ΠΠ΄Π΅ΡΡ Π±ΡΠ΄Π΅Ρ ΠΏΡΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½ ΠΊΡΠ°ΡΠΊΠΈΠΉ ΠΎΠ±Π·ΠΎΡ ΡΠΈΡΡΠ΅ΠΌ, Π² ΠΊΠΎΡΠΎΡΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠΈ ΠΈ ΡΠ°Π±ΠΎΡΠΈΠ΅ Π³ΡΡΠΏΠΏΡ Π΄ΠΎΡΡΠΈΠ³Π»ΠΈ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΡΡ ΠΏΡΠΎΠ΄Π²ΠΈΠΆΠ΅Π½ΠΈΠΉ Π² ΡΠ΅ΡΠ΅Π½ΠΈΠΈ Π·Π°Π΄Π°ΡΠΈ.
1) Interactive Parallelizing Assistance Tool for OpenMP [7]
Aachen University, ΠΠ΅ΡΠΌΠ°Π½ΠΈΡ. 2003 Π³.
Π‘ΠΈΡΡΠ΅ΠΌΠ° Π°Π½Π°Π»ΠΈΠ·ΠΈΡΡΠ΅Ρ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎΡΡΡ OpenMP ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΈ Π²ΡΠ΄Π°Π΅Ρ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ Π°Π½Π°Π»ΠΈΠ·Π° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ. Π‘ΠΈΡΡΠ΅ΠΌΠ° ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ Ρ ΡΠΈΠΊΠ»Π°ΠΌΠΈ. ΠΠ»Ρ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠ³ΠΎ ΡΠΈΠΊΠ»Π° ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΠΌΠΎΡΡΠ΅ΡΡ, ΠΊΠ°ΠΊΠΈΠ΅ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ OpenMP Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ Π΄Π»Ρ Π²ΡΡΠ°Π²ΠΊΠΈ. ΠΠΎ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°ΠΌ Π°Π½Π°Π»ΠΈΠ·Π° ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΡΠ°ΠΌ Π²ΡΡΠ°Π²Π»ΡΠ΅Ρ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ ΠΈΠ»ΠΈ ΠΌΠ΅Π½ΡΠ΅Ρ ΠΊΠΎΠ΄ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ. ΠΡΡΡ ΠΎΠΏΡΠΈΡ Π²ΡΠ±ΠΎΡΠ° ΠΎΡΠ΄Π΅Π»ΡΠ½ΠΎΠ³ΠΎ ΡΡΠ°ΡΡΠΊΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π΄Π»Ρ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠ°ΡΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ²Π°Π½ΠΈΡ.
2) Interprocedural Parallelizing Compiler WPP and Analysis Information Visualization tool Aivi [8]
Hitachi, Ltd. Π―ΠΏΠΎΠ½ΠΈΡ. 2000 Π³.
Π‘ΠΈΡΡΠ΅ΠΌΠ° ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ ΠΌΠ΅ΠΆΠΏΡΠΎΡΠ΅Π΄ΡΡΠ½ΡΠΉ Π°Π½Π°Π»ΠΈΠ·: Π°Π½Π°Π»ΠΈΠ· ΡΠΊΠ°Π»ΡΡΠΎΠ² ΠΈ ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ², ΠΊΠ»ΠΎΠ½ΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠΎΡΠ΅Π΄ΡΡ, Π°Π½Π°Π»ΠΈΠ· Π²ΡΠ·ΠΎΠ²ΠΎΠ² ΡΡΠ½ΠΊΡΠΈΠΉ. Π‘ΠΈΡΡΠ΅ΠΌΠ° ΡΠ°Π±ΠΎΡΠ°Π΅Ρ ΡΠΎΠ»ΡΠΊΠΎ Ρ ΡΠΈΠΊΠ»Π°ΠΌΠΈ. ΠΠ΅Π½Π΅ΡΠ°ΡΠΈΡ OpenMP Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ² ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ. Π ΡΠΈΡΡΠ΅ΠΌΡ Π²Ρ ΠΎΠ΄ΠΈΡ ΠΌΠΎΡΠ½ΡΠΉ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½Ρ Π²ΠΈΠ·ΡΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ, ΠΏΠΎΠΊΠ°Π·ΡΠ²Π°ΡΡΠΈΠΉ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΡ Π°Π½Π°Π»ΠΈΠ·Π°.
3) The ParaWise Expert Assistant [6]
University of Greenwich, ΠΠ΅Π»ΠΈΠΊΠΎΠ±ΡΠΈΡΠ°Π½ΠΈΡ. ΠΠ²Π³ΡΡΡ 2004.
ΠΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² ΡΠΈΡΡΠ΅ΠΌΡ ParaWise/CAPO. ΠΠ° ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈΠΈ ΠΈΠ½ΡΡΡΡΠΌΠ΅Π½ΡΠΎΠ² ΡΠΈΡΡΠ΅ΠΌΡ, ΠΏΡΠΎΠ²ΠΎΠ΄ΡΡΠΈΡ Π°Π½Π°Π»ΠΈΠ· ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, «ΠΠΊΡΠΏΠ΅ΡΡΠ°ΡΡΠΈΡΡΠ΅Π½Ρ» ΠΏΠΎΠ΄ΡΠΊΠ°Π·ΡΠ²Π°Π΅Ρ: Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ ΡΠ°ΡΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ²Π°Π½ΠΈΠ΅, ΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ Π½Π΅ΠΊΠΎΡΠΎΡΡΠ΅ Π²Π°ΡΠΈΠ°Π½ΡΡ ΡΠ°ΡΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ²Π°Π½ΠΈΡ (Π²ΡΡΠ°Π²ΠΊΠΈ OpenMP Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²).
ΠΠΎΠ²ΡΠΌΠΈ ΡΠ²ΠΎΠΉΡΡΠ²Π°ΠΌΠΈ, ΠΎΡΠ»ΠΈΡΠ°ΡΡΠΈΠΌΠΈ Π½Π°ΡΡ ΡΠΈΡΡΠ΅ΠΌΡ ΠΎΡ ΠΏΠ΅ΡΠ΅ΡΠΈΡΠ»Π΅Π½Π½ΡΡ Π·Π΄Π΅ΡΡ, ΡΠ²Π»ΡΡΡΡΡ ΠΎΡΠΈΠ΅Π½ΡΠ°ΡΠΈΡ Π½Π° ΠΊΠ»Π°ΡΡΠ΅Ρ ΠΈ ΠΌΡΠ»ΡΡΠΈΠΏΡΠΎΡΠ΅ΡΡΠΎΡ ΠΈ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΡΠΎΠΏΡΡΡΠΈΡΡ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡΠ²ΠΈΠ΅ Ρ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ, Π»ΠΈΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π·Π°ΠΏΡΠΎΡΠΈΠ² «Π΄ΠΎΠ±ΡΠΎ» Π½Π° Π²ΡΡΠ°Π²ΠΊΡ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ². ΠΠ΅ΡΠ²ΠΎΠ΅ ΡΠ²ΠΎΠΉΡΡΠ²ΠΎ ΠΎΡΠΎΠ±ΠΎ Π²Π°ΠΆΠ½ΠΎ, ΡΠ°ΠΊ ΠΊΠ°ΠΊ ΡΠ°ΡΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ²Π°Π½ΠΈΠ΅ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌ Π΄Π»Ρ Π±ΡΠ΄ΡΡΠΈΡ Π²ΡΡΠΎΠΊΠΎΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΠ΅Π»ΡΠ½ΡΡ ΡΠΈΡΡΠ΅ΠΌ Ρ ΠΌΠ½ΠΎΠ³ΠΎΡΡΠΎΠ²Π½Π΅Π²ΡΠΌ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ·ΠΌΠΎΠΌ ΡΠ²ΡΠ·Π°Π½ΠΎ Ρ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΎΠ±Π΅ΠΈΡ ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ OpenMP ΠΈ DVM.
4. ΠΠΎΡΡΡΠΎΠ΅Π½ΠΈΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΡ Π·Π°Π΄Π°ΡΠΈ
Π’Π°ΠΊ ΠΊΠ°ΠΊ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π·Π°Π΄Π°ΡΠΈ Π²ΡΡΠ°Π²ΠΊΠΈ OpenMP Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ² Π½Π°ΠΏΡΡΠΌΡΡ Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ Π΄Π°Π½Π½ΡΡ , ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»ΡΠ΅ΠΌΡΡ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠΎΠΌ, ΡΠΎ ΠΏΠΎΡΡΡΠΎΠ΅Π½ΠΈΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΡ Π·Π°Π΄Π°Ρ «ΠΠΊΡΠΏΠ΅ΡΡΠ°» ΠΌΡ ΠΌΠΎΠΆΠ΅ΠΌ ΡΠ°ΡΡΠΌΠ°ΡΡΠΈΠ²Π°ΡΡ ΡΠΎΠ»ΡΠΊΠΎ Π² ΡΠ΅ΡΠ½ΠΎΠΉ ΠΏΡΠΈΠ²ΡΠ·ΠΊΠ΅ ΠΊ Π΄Π°Π½Π½ΡΠΌ Π°Π½Π°Π»ΠΈΠ·Π°.
4.1 Π€ΠΎΡΠΌΠ°Ρ Π²Ρ ΠΎΠ΄Π½ΡΡ Π΄Π°Π½Π½ΡΡ
Π Π°Π±ΠΎΡΠ° Ρ ΠΠ°Π·ΠΎΠΉ ΠΠ°Π½Π½ΡΡ Π΄Π»Ρ ΡΠΊΡΠΏΠ΅ΡΡΠ° ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²ΠΎΠΌ ΠΈΠ½ΡΠ΅ΡΡΠ΅ΠΉΡΠ°. ΠΡΠ½ΠΎΠ²Π½Π°Ρ ΡΠ°ΡΡΡ ΠΠ°Π·Ρ ΠΠ°Π½Π½ΡΡ Π΄Π΅ΡΠ΅Π²ΠΎ ΡΠΈΠΊΠ»ΠΎΠ². Π‘ΡΡΡΠΊΡΡΡΠ° Π΄Π΅ΡΠ΅Π²Π° Π²Π°ΠΆΠ½Π° Π΄Π»Ρ ΠΎΠΏΠΈΡΠ°Π½ΠΈΡ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ² ΡΠ°Π±ΠΎΡΡ ΡΠΊΡΠΏΠ΅ΡΡΠ°. ΠΠ΅ΡΡΠΈΠ½Ρ Π΄Π΅ΡΠ΅Π²Π° ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΡ ΡΠΈΠΏΠΎΠ²:
Β· ΠΡΠΎΡΠ΅Π΄ΡΡΠ°. Π Π΄Π°Π½Π½ΠΎΠΉ Π²Π΅ΡΡΠΈΠΈ «Π‘ΠΈΡΡΠ΅ΠΌΡ Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ ΡΠ°ΡΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ²Π°Π½ΠΈΡ» ΠΏΡΠΎΡΠ΅Π΄ΡΡΠΎΠΉ ΡΡΠΈΡΠ°Π΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ ΡΠ΅Π»ΠΎ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.
Β· Π¦ΠΈΠΊΠ». Π¦ΠΈΠΊΠ» ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎΠ±ΠΎ Π²ΡΠ΅Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ , ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΡΡΠΈΡ ΡΡ Π² Π½Π΅ΠΌ, Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡΡ , Π½Π°ΠΉΠ΄Π΅Π½Π½ΡΡ Π² Π½Π΅ΠΌ Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠΎΠΌ, Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π²ΠΈΡΠΊΠ°, ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΈΡΠ΅ΡΠ°ΡΠΈΠΉ Π΄Π»Ρ Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π²Π°ΡΠΈΠ°Π½ΡΠ° Π·Π°Π΄Π°ΡΠΈ.
Β· ΠΠΈΠ½Π΅ΠΉΠ½ΡΠΉ ΡΡΠ°Π³ΠΌΠ΅Π½Ρ.
Β· Π£ΡΠ»ΠΎΠ²Π½ΡΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡ.
ΠΡΡ ΠΎΠ΄Π½ΡΠΌΠΈ Π΄Π°Π½Π½ΡΠ΅ ΡΠΊΡΠΏΠ΅ΡΡΠ° ΡΠ²Π»ΡΡΡΡΡ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΊ Π²Π΅ΡΡΠΈΠ½Π°ΠΌ Π΄Π΅ΡΠ΅Π²Π° ΡΠΈΠΊΠ»ΠΎΠ². ΠΠΎ ΡΡΠΈΠΌ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠΌ Π² Π²ΡΡ ΠΎΠ΄Π½ΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π²ΡΡΠ°Π²Π»ΡΡΡΡΡ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ OpenMP. ΠΠ°ΠΆΠ½ΠΎ Π·Π°ΠΌΠ΅ΡΠΈΡΡ, ΡΡΠΎ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΏΡΠΎΡΡΠ°Π²Π»Π΅Π½Ρ Π΄ΠΎ Π²Π΅ΡΡΠΈΠ½Ρ, ΡΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ OpenMP, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡ Π±ΡΠ΄ΡΡ ΡΡΠΎΡΡΡ Π΄ΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ°, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π³ΠΎ Π²Π΅ΡΡΠΈΠ½Π΅. ΠΡΠΎΡΠΎΠΉ Π²Π°ΡΠΈΠ°Π½Ρ — ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΏΠΎΡΠ»Π΅ Π²Π΅ΡΡΠΈΠ½Ρ, ΡΡΠΎ ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ OpenMP, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡ Π±ΡΠ΄ΡΡ ΡΡΠΎΡΡΡ ΠΏΠΎΡΠ»Π΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ°, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π³ΠΎ Π²Π΅ΡΡΠΈΠ½Π΅.
4.2 ΠΡΠ½ΠΎΠ²Π½ΡΠ΅ Π°ΡΠΏΠ΅ΠΊΡΡ ΡΠ°Π±ΠΎΡΡ ΡΠΊΡΠΏΠ΅ΡΡΠ°
ΠΡΠΈ ΡΠΎΡΡΠ°Π²Π»Π΅Π½ΠΈΠΈ Π°Π»Π³ΠΎΡΠΈΡΠΌΠΎΠ² ΡΠΊΡΠΏΠ΅ΡΡΠ° Π±ΡΠ»ΠΈ ΡΡΡΠ΅Π½Ρ ΡΠ»Π΅Π΄ΡΡΡΠΈΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΠΈ OpenMP:
1) Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΡΠ°Π±ΠΎΡΡ Ρ ΡΠΈΠΊΠ»Π°ΠΌΠΈ (Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Π° DO).
2) Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΎΠ±ΡΠ°Π±ΠΎΡΠΊΠΈ ΡΠ΅Π΄ΡΠΊΡΠΈΠΎΠ½Π½ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ (Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Π° REDUCTION).
3) Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΈΡΠΏΠΎΠ»Π½ΡΡΡ ΡΠ°ΡΡΡ ΠΊΠΎΠ΄Π° Π²Π½ΡΡΡΠΈ ΡΠΈΠΊΠ»Π° Π² «Π΅ΡΡΠ΅ΡΡΠ²Π΅Π½Π½ΠΎΠΌ» ΠΏΠΎΡΡΠ΄ΠΊΠ΅ (Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Π° ORDERED).
4) Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΏΡΠΈΠ²Π°ΡΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ (Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Π° PRIVATE).
5) Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΎΠ±ΡΠ°Π·ΠΎΠ²ΡΠ²Π°ΡΡ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ ΠΏΠΎΡΡΠ΅Π΄ΡΡΠ²ΠΎΠΌ OpenMP Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ² (ΡΡΠ° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ Π±ΡΠ΄Π΅Ρ ΡΠ°ΡΡΠΌΠΎΡΡΠ΅Π½Π° Π½ΠΈΠΆΠ΅).
6) Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡΡ ΠΎΡΠΌΠ΅Π½Ρ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΉ ΠΌΠ΅ΠΆΠ΄Ρ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΠΌΠΈ ΡΠΈΠΊΠ»Π°ΠΌΠΈ (Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Π° NOWAIT).
ΠΡΠΈ ΡΠ°Π±ΠΎΡΠ΅ ΡΠΊΡΠΏΠ΅ΡΡΠ° Π²ΡΠ΅ ΡΠΈΠΊΠ»Ρ Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ ΡΠ°Π·Π±ΠΈΠ²Π°ΡΡΡΡ Π½Π° ΠΠΎΡΠ΅Π½ΡΠΈΠ°Π»ΡΠ½ΠΎ ΠΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΠ΅ Π¦ΠΈΠΊΠ»Ρ (Π΄Π°Π»Π΅Π΅ ΠΠΠ¦) ΠΈ Π¦ΠΈΠΊΠ»Ρ, ΠΠ΅ΠΏΠΎΠ΄Π΄Π°ΡΡΠΈΠ΅ΡΡ Π Π°ΡΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ²Π°Π½ΠΈΡ (Π΄Π°Π»Π΅Π΅ Π¦ΠΠ ). ΠΠΠ¦ - ΡΠΈΠΊΠ», ΠΊΠΎΡΠΎΡΡΠΉ ΠΌΠΎΠΆΠ½ΠΎ ΡΠ°ΡΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΡΡ ΡΡΠ΅Π΄ΡΡΠ²Π°ΠΌΠΈ OpenMP, Π½Π΅ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ. Π¦ΠΠ - ΡΠΈΠΊΠ»Ρ, ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ ΠΏΠΎΠ΄Π΄Π°ΡΡΡΡ ΡΠ°ΡΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ²Π°Π½ΠΈΡ ΠΈΠ·-Π·Π° Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠ΅ΠΉ ΠΏΠΎ Π΄Π°Π½Π½ΡΠΌ ΠΌΠ΅ΠΆΠ΄Ρ Π²ΠΈΡΠΊΠ°ΠΌΠΈ ΡΠΈΠΊΠ»Π°. Π’Π°ΠΊΠΈΠ΅ ΡΠΈΠΊΠ»Ρ Π±ΡΠ²Π°ΡΡ ΡΠ»Π΅Π΄ΡΡΡΠΈΡ Π²ΠΈΠ΄ΠΎΠ²:
1) ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠ΅ Π²Π²ΠΎΠ΄/Π²ΡΠ²ΠΎΠ΄.
2) ΡΠΎΠ΄Π΅ΡΠΆΠ°ΡΠΈΠ΅ Π²ΡΡ ΠΎΠ΄ ΠΈΠ· ΡΠΈΠΊΠ»Π°.
ΠΡΠ½ΠΎΠ²Π½Π°Ρ ΡΠ΅Π»Ρ «ΠΠΊΡΠΏΠ΅ΡΡΠ°» — Π½Π°Ρ ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ Π΄Π»Ρ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½Π°Π±ΠΎΡΠ° Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ² OpenMP ΡΠ°ΠΊΠΎΠ³ΠΎ, ΡΡΠΎ ΡΡΠΊΠΎΡΠ΅Π½ΠΈΠ΅ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΏΡΠΈ Π·Π°Π΄Π°Π½Π½ΠΎΠΌ Π²Π°ΡΠΈΠ°Π½ΡΠ΅ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π±ΡΠ΄Π΅Ρ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡΠ½ΠΎ. ΠΠ°Π·ΠΎΠ²Π΅ΠΌ ΡΠ°ΠΊΠΎΠΉ Π½Π°Π±ΠΎΡ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ² Π½Π°ΠΈΠ»ΡΡΡΠΈΠΌΠΈ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡΠΌΠΈ ΠΊ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅. ΠΡΠ΅ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΡΠ°Π·ΠΎΠ±ΡΠ΅ΠΌ Π½Π° Π΄Π²Π° Π²ΠΈΠ΄Π°: ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ ΠΏΠΎ Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ (PRIVATE, REDUCTION ΠΈ Ρ. Π΄.) ΠΈ Π²ΡΠ΅ Π΄ΡΡΠ³ΠΈΠ΅ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠΈ. ΠΠ°Π·ΠΎΠ²Π΅ΠΌ ΠΠ°ΡΠΈΠ°Π½ΡΠΎΠΌ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ·ΠΌΠ° ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ (Π΄Π°Π»Π΅Π΅ ΠΠ°ΡΠΈΠ°Π½Ρ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ·ΠΌΠ°) - Π²Π°ΡΠΈΠ°Π½Ρ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ² OpenMP, ΠΎΠΏΠΈΡΡΠ²Π°ΡΡΠΈΡ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΠ΅ ΠΎΠ±Π»Π°ΡΡΠΈ ΠΈ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΠ΅ ΡΠΈΠΊΠ»Ρ (Π±Π΅Π· Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ² Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ). Π’ΠΎΠ³Π΄Π° ΠΠ°ΡΠΈΠ°Π½Ρ Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ (ΠΠ°ΡΠΈΠ°Π½Ρ Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ) - Π²Π°ΡΠΈΠ°Π½Ρ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ² Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ . ΠΠ»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Π²Π°ΡΠΈΠ°Π½ΡΠ° ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ·ΠΌΠ° ΠΌΠΎΠΆΠ΅Ρ ΡΡΡΠ΅ΡΡΠ²ΠΎΠ²Π°ΡΡ Π½Π΅ΡΠΊΠΎΠ»ΡΠΊΠΎ Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ² Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ. ΠΡΠΎΠ²Π΅ΡΠΊΠΎΠΉ ΠΠ»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π½ΠΎΠΉ ΠΠΎΠΊΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π½Π°Π·ΠΎΠ²Π΅ΠΌ Π½Π°Ρ ΠΎΠΆΠ΄Π΅Π½ΠΈΠ΅ ΠΌΠΈΠ½ΠΈΠΌΡΠΌΠ° ΠΎΡΠ΅Π½ΠΎΡΠ½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠΈ Π΄Π»Ρ Π½Π°Π±ΠΎΡΠ° Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°ΡΠΈΠΉ Π΄Π»Ρ Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π²Π°ΡΠΈΠ°Π½ΡΠ° ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ·ΠΌΠ° Ρ ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅Π², ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΡ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½ΠΎΠΉ ΠΎΡΠ΅Π½ΠΎΡΠ½ΠΎΠΉ ΡΡΠ½ΠΊΡΠΈΠ΅ΠΉ. Π‘Ρ Π΅ΠΌΠ° ΡΠ°ΡΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ²Π°Π½ΠΈΡ — ΡΠΈΠΊΡΠ°ΡΠΈΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π²Π°ΡΠΈΠ°Π½ΡΠ° ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ·ΠΌΠ° ΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π²Π°ΡΠΈΠ°Π½ΡΠ° Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ.
Π Π°Π±ΠΎΡΠ° ΠΠΊΡΠΏΠ΅ΡΡΠ° Π΄Π»Ρ ΠΌΡΠ»ΡΡΠΈΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠ° ΡΠ°Π·Π΄Π΅Π»Π΅Π½Π° Π½Π° 4 ΡΡΠ°Π΄ΠΈΠΈ:
1) Π Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π²ΡΠ΅Ρ ΡΠΈΠΊΠ»ΠΎΠ² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ Π½Π° ΠΠΠ¦ ΠΈ Π¦ΠΠ , ΠΎΠ±ΠΎΠ·Π½Π°ΡΠ΅Π½ΠΈΠ΅ Π²ΠΈΠ΄ΠΎΠ² ΠΠΠ¦ ΠΈ ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π°Π±ΠΎΡΠ° Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ² Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ .
2) ΠΠ΅ΡΠ΅Π±ΠΎΡ Π²ΡΠ΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ² ΡΠ°ΡΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ²Π°Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΠΏΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠ΅ ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π°ΠΈΠ»ΡΡΡΠ΅Π³ΠΎ Π²Π°ΡΠΈΠ°Π½ΡΠ° ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ·ΠΌΠ°.
3) ΠΠ΅ΡΠ΅Π±ΠΎΡ Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ² Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°ΡΠΈΠΉ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ, ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π½Π°ΠΈΠ»ΡΡΡΠ΅ΠΉ ΡΡ Π΅ΠΌΡ ΡΠ°ΡΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ²Π°Π½ΠΈΡ, ΠΏΠΎΠ΄ΡΡΠ΅Ρ ΡΡΠΊΠΎΡΠ΅Π½ΠΈΡ.
4) Π Π°ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ² OpenMP, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΡ Π½Π°ΠΈΠ»ΡΡΡΠ΅ΠΉ ΡΡ Π΅ΠΌΠ΅ ΡΠ°ΡΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ²Π°Π½ΠΈΡ, Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ.
Π ΠΏΡΠΎΡΠ΅ΡΡΠ΅ ΡΠ°Π±ΠΎΡΡ «ΠΠΊΡΠΏΠ΅ΡΡΠ°» ΡΠΎΠ·Π΄Π°ΡΡΡΡ Π²Π½ΡΡΡΠ΅Π½Π½ΠΈΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ Π΄Π°Π½Π½ΡΡ , ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠΈΠ²Π°ΡΡΠΈΠ΅ ΡΠ΅ΡΠ΅Π½ΠΈΠ΅ Π·Π°Π΄Π°ΡΠΈ, ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Π½ΡΠ΅ Π² Π’Π°Π±Π»ΠΈΡΠ΅ 1
ΠΠ°Π·Π²Π°Π½ΠΈΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ | ΠΠ° ΠΊΠ°ΠΊΠΎΠΌ ΡΠ°Π³Π΅ ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ | Π§ΡΠΎ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ | ΠΠ°ΡΠ΅ΠΌ Π½ΡΠΆΠ½ΠΎ | |
ΠΠ΅ΡΠ²ΠΎΠ΅ Π²Π½ΡΡΡΠ΅Π½Π½Π΅Π΅ | 1 ΡΠ°Π³ | 1. ΠΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎΠ±ΠΎ Π²ΡΠ΅Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ 2. ΠΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ «ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ» | ΠΠ°Π·ΠΎΠ²ΠΎΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅, Π½Π° ΠΎΡΠ½ΠΎΠ²Π°Π½ΠΈΠΈ ΠΊΠΎΡΠΎΡΠΎΠ³ΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΡΡΡΠΈΠΉ Π°Π½Π°Π»ΠΈΠ· | |
ΠΡΠΎΡΠΎΠ΅ Π²Π½ΡΡΡΠ΅Π½Π½Π΅Π΅ | 2−3 ΡΠ°Π³ | Π‘Ρ Π΅ΠΌΠ° ΡΠ°ΡΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ²Π°Π½ΠΈΡ, ΠΊΠΎΡΠΎΡΠ°Ρ ΡΡΠΈΡΠ°Π΅ΡΡΡ Π½Π°ΠΈΠ»ΡΡΡΠ΅ΠΉ | ΠΠ»Ρ ΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅Π² (ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΏΠΎ ΡΠ°ΡΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ²Π°Π½ΠΈΡ) | |
Π‘ΠΏΠΈΡΠΎΠΊ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΡ ΡΠ΅Π³ΠΈΠΎΠ½ΠΎΠ² | 2 ΡΠ°Π³ | ΠΡΠ΅ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΠ΅ ΡΠ΅Π³ΠΈΠΎΠ½Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ | ΠΠ»Ρ ΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅Π² (ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΏΠΎ Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ) | |
ΠΡΠΎΠ³ΡΠ°ΠΌΠΌΠ½ΡΠΉ ΡΠΏΠΈΡΠΎΠΊ Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°ΡΠΈΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ | 3 ΡΠ°Π³ | Π‘ΠΏΠΈΡΠΎΠΊ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ , Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΈΠ· ΠΊΠΎΡΠΎΡΡΡ Π²Π΅Π΄Π΅ΡΡΡ ΡΠΏΠΈΡΠΎΠΊ Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°ΡΠΈΠΉ Π² ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΡ ΡΠ΅Π³ΠΈΠΎΠ½Π°Ρ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ | ΠΠ»Ρ ΠΏΡΠΎΡΡΠ°Π½ΠΎΠ²ΠΊΠΈ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡ threadprivate | |
Π’Π°Π±Π»ΠΈΡΠ° 1. ΠΠ½ΡΡΡΠ΅Π½Π½ΠΈΠ΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ «ΠΠΊΡΠΏΠ΅ΡΡΠ°» .
ΠΠ΅ΡΠ²ΠΎΠ΅ Π²Π½ΡΡΡΠ΅Π½Π½Π΅Π΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΎ Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ .
ΠΡΠ° ΠΈΠ½ΡΠΎΡΠΌΠ°ΡΠΈΡ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»ΡΠ΅Ρ ΡΠΎΠ±ΠΎΠΉ 2 ΠΏΠ°ΡΡ Π·Π½Π°ΡΠ΅Π½ΠΈΠΉ, ΠΏΠΎ ΠΊΠΎΡΠΎΡΡΠΌ ΠΎΠ΄Π½ΠΎΠ·Π½Π°ΡΠ½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΠΈΡΡ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Ρ OpenMP, Ρ ΠΏΠΎΠΌΠΎΡΡΡ ΠΊΠΎΡΠΎΡΠΎΠΉ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½Π°Ρ Π±ΡΠ΄Π΅Ρ Π»ΠΎΠΊΠ°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Π² ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΠ΅ Π½ΡΠΆΠ½ΡΠΌ ΡΠΏΠΎΡΠΎΠ±ΠΎΠΌ.
ΠΠΎΠΌΠ΅ΡΠΊΠΈ ΠΏΡΠΎΡΡΠ°Π²Π»ΡΡΡΡΡ Π΄Π»Ρ Π²ΡΠ΅Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ , ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ Π²Π½ΡΡΡΠΈ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ°. ΠΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠ΅ ΠΏΠΎΠΌΠ΅ΡΠΊΠΈ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½Ρ Π² Π’Π°Π±Π»ΠΈΡΠ΅ 2.
1-Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ 1-ΠΉ ΠΏΠ°ΡΡ (Π²ΠΈΠ΄ ΠΏΡΠΈΠ²Π°ΡΠ½ΠΎΠΉ) | 2-Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ 1-ΠΉ ΠΏΠ°ΡΡ — ΠΏΠΎΠΌΠ΅ΡΠΊΠ° ΠΏΡΠΈΠ²Π°ΡΠ½ΠΎΠΉ | |
private (ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ) firstprivate lastprivate reduction | Ind — ΠΈΠ½Π΄Π΅ΠΊΡ Set — ΠΠ΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΊΠ°Π·Π°ΡΡ Π² ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΡΡ Redtype () — ΡΠΈΠΏ ΡΠ΅Π΄ΡΠΊΡΠΈΠΈ (ΡΠΎΠ»ΡΠΊΠΎ Π΄Π»Ρ ΡΠ΅Π΄ΡΠΊΡΠΈΠΎΠ½Π½ΡΡ ) Pos (ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ) — Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡΡΠ²ΠΈΡΡ ΠΏΡΠΈΠ²Π°ΡΠ½ΠΎΠΉ, Π½ΠΎ Π½Π΅ ΠΎΠ±ΡΠ·Π°ΡΠ΅Π»ΡΠ½ΠΎ No — Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡΡΠ²ΠΈΡΡ ΠΏΡΠΈΠ²Π°ΡΠ½ΠΎΠΉ | |
1-Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ 2-ΠΉ ΠΏΠ°ΡΡ (ΠΎΠ±ΡΠ°Ρ) | 2-Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ 2-ΠΉ ΠΏΠ°ΡΡ (ΠΏΠΎΠΌΠ΅ΡΠΊΠ° ΠΎΠ±ΡΠ΅ΠΉ) | |
Shared (ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ) | Def (ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ) — ΠΎΠ±ΡΠ°Ρ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ Set — Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΊΠ°Π·Π°ΡΡ Π² Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Π°Ρ No — Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠ±ΡΡΠ²ΠΈΡΡ ΠΎΠ±ΡΠ΅ΠΉ | |
Π’Π°Π±Π»ΠΈΡΠ° 2. ΠΠΎΠΌΠ΅ΡΠΊΠΈ ΠΏΠΎ Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ .
ΠΠ°ΠΊ ΠΏΠΎΠΌΠ΅ΡΠΊΠΈ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Π°ΠΌ OpenMP:
ΠΡΠ»ΠΈ 2-Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ 1-ΠΉ ΠΏΠ°ΡΡ = Set, ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠ±ΡΡΠ²ΠΈΡΡ PRIVATE.
ΠΡΠ»ΠΈ 2-Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ 2-ΠΉ ΠΏΠ°ΡΡ = Set, ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠ±ΡΡΠ²ΠΈΡΡ SHARED.
ΠΡΠ»ΠΈ 1-Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ 1-ΠΉ ΠΏΠ°ΡΡ = reduction, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠ° Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Π° REDUCTION (2-Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ 1-ΠΉ ΠΏΠ°ΡΡ: ΠΈΠΌΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ).
ΠΡΠ»ΠΈ 1-Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ 1-ΠΉ ΠΏΠ°ΡΡ = lastprivate, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠ° Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Π° LASTPRIVATE (ΠΈΠΌΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ).
ΠΡΠ»ΠΈ 1-Π΅ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ 1-ΠΉ ΠΏΠ°ΡΡ = firstprivate, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠ° Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Π° FIRSTPRIVATE (ΠΈΠΌΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΉ).
4.3 ΠΡΠ΅Π½ΠΎΡΠ½ΡΠ΅ ΡΡΠ½ΠΊΡΠΈΠΈ
1) ΠΡΠ΅Π½ΠΎΡΠ½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ ΡΡΠΎΠΈΠΌΠΎΡΡΠΈ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠ΅Π³ΠΈΠΎΠ½Π° Π²ΡΡΠΈΡΠ»ΡΠ΅ΡΡΡ ΠΏΠΎ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΡΠΎΡΠΌΡΠ»Π΅:
Π‘ΡΠΎΠΈΠΌΠΎΡΡΡ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ = (ΡΡΠΎΠΈΠΌΠΎΡΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ / ΡΠΈΡΠ»ΠΎ Π½ΠΈΡΠ΅ΠΉ + ΡΡΠΎΠΈΠΌΠΎΡΡΡ ordered) * ΡΠΈΡΠ»ΠΎ ΠΈΡΠ΅ΡΠ°ΡΠΈΠΉ + ΡΡΠΎΠΈΠΌΠΎΡΡΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΈ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ ΡΡΠΎΠΈΠΌΠΎΡΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ
ΠΡΠΎ ΡΡΠΎΠΈΠΌΠΎΡΡΡ ΠΎΠ΄Π½ΠΎΠΉ ΠΈΡΠ΅ΡΠ°ΡΠΈΠΈ ΡΠΈΠΊΠ»Π° (ΠΏΡΠ΅Π΄ΠΎΡΡΠ°Π²Π»Π΅Π½Π° Π°Π½Π°Π»ΠΈΠ·Π°ΡΠΎΡΠΎΠΌ) Π±Π΅Π· ΡΡΠ΅ΡΠ° ΡΡΠΎΠΈΠΌΠΎΡΡΠΈ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ, ΠΎΠΊΡΡΠΆΠ΅Π½Π½ΡΡ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Π°ΠΌΠΈ Ordered/End Ordered ΡΠΈΡΠ»ΠΎ Π½ΠΈΡΠ΅ΠΉ — ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ «ΠΏΠΎΠ»Π΅Π·Π½ΡΡ » ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠΎΠ². ΠΠ»Ρ ΡΠΈΠΊΠ»Π° ΡΡΠΎ Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ ΡΠ°Π²Π½ΠΎ ΠΌΠΈΠ½ΠΈΠΌΡΠΌΡ ΠΈΠ· ΠΎΠ±ΡΠ΅Π³ΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΠΏΡΠΎΡΠ΅ΡΡΠΎΡΠΎΠ² ΠΈ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²Π° ΠΈΡΠ΅ΡΠ°ΡΠΈΠΉ ΡΠΈΠΊΠ»Π°.
ΡΡΠΎΠΈΠΌΠΎΡΡΡ ordered = ΡΡΠΎΠΈΠΌΠΎΡΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π²ΡΡΠ°ΠΆΠ΅Π½ΠΈΠΉ, ΠΎΠΊΡΡΠΆΠ΅Π½Π½ΡΡ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Π°ΠΌΠΈ Ordered/End Ordered.
ΡΡΠΎΠΈΠΌΠΎΡΡΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΠΈ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ = const + ΡΡΠΎΠΈΠΌΠΎΡΡΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ m ΠΏΡΠΈΠ²Π°ΡΠ½ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ + ΡΡΠΎΠΈΠΌΠΎΡΡΡ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ. ΠΠΎΠ½ΡΡΠ°Π½ΡΠ° Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ ΡΠΈΡΡΠ΅ΠΌΡ ΠΈ Π±Π΅ΡΠ΅ΡΡΡ ΠΈΠ· Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ ΠΈΠ»ΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ. ΠΡΠΎ Π²ΡΠ΅ΠΌΡ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΠ΅ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ (ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ) ΠΈ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠ΅Π³ΠΈΠΎΠ½Π°.
ΡΡΠΎΠΈΠΌΠΎΡΡΡ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ m ΠΏΡΠΈΠ²Π°ΡΠ½ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ = m, Π³Π΄Π΅ m ΡΡΠΎ ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΡΠΈΠ²Π°ΡΠ½ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π² Π΄Π°Π½Π½ΠΎΠΌ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎΠΌ ΡΠ΅Π³ΠΈΠΎΠ½Π΅. Π’Π°ΠΊ ΠΊΠ°ΠΊ ΠΈΠ·Π²Π΅ΡΡΠ½ΠΎ, ΡΡΠΎ Π΅Π΄ΠΈΠ½ΠΈΡΠ° ΡΡΠΎΠΈΠΌΠΎΡΡΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΡΠΊΠ²ΠΈΠ²Π°Π»Π΅Π½ΡΠ½Π° Π΅Π΄ΠΈΠ½ΠΈΡΠ½ΠΎΠΉ Π·Π°ΠΏΠΈΡΠΈ Π² ΠΏΠ°ΠΌΡΡΡ, ΡΠΎ Π΄Π»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ m Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ Π²ΠΎΠ·ΡΠΌΠ΅ΠΌ Π²ΡΠ΅ΠΌΡ ΡΠ°Π²Π½ΠΎΠ΅ m «ΡΡΠ»ΠΎΠ²Π½ΡΡ Π΅Π΄ΠΈΠ½ΠΈΡ». ΠΡΠΎ ΡΠ²ΡΠ·Π°Π½ΠΎ Ρ ΡΠ΅ΠΌ, ΡΡΠΎ Π΄Π»Ρ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π½ΠΈΡΠΈ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ m ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ .
ΡΡΠΎΠΈΠΌΠΎΡΡΡ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ = ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ ΠΏΡΠΈΠ²Π°ΡΠ½ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ . Π‘ΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΡ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΏΡΠΈ Π·Π°ΠΊΡΡΡΠΈΠΈ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎΠ³ΠΎ ΡΠΈΠΊΠ»Π°. ΠΡΠΈ ΡΡΠΎΠΌ Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·ΠΈΡΠΎΠ²Π°ΡΡ Π²ΡΠ΅ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΠ΅ ΠΊΠΎΠΏΠΈΠΈ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ . Π‘ΡΠΎΠΈΠΌΠΎΡΡΡ Π±Π°ΡΡΠ΅ΡΠ½ΠΎΠΉ ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΠΈ, Π·Π°Π²ΠΈΡΡΡΠ΅ΠΉ ΠΎΡ Π°ΠΏΠΏΠ°ΡΠ°ΡΡΡΡ, ΡΡΠΈΡΡΠ²Π°Π΅ΡΡΡ Π² ΡΡΠΎΠΈΠΌΠΎΡΡΠΈ ΡΠ΄Π°Π»Π΅Π½ΠΈΡ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎΠΉ ΠΎΠ±Π»Π°ΡΡΠΈ.
2) ΠΡΠ΅Π½ΠΎΡΠ½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ ΡΡΠΎΠΈΠΌΠΎΡΡΠΈ Π²ΡΡΠΈΡΠ»ΡΠ΅ΡΡΡ ΠΏΠΎ ΡΠ»Π΅Π΄ΡΡΡΠ΅ΠΉ ΡΠΎΡΠΌΡΠ»Π΅:
Π‘ΡΠΎΠΈΠΌΠΎΡΡΡ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅ΡΠ° = ΡΡΠΎΠΈΠΌΠΎΡΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ Π²Π½ΡΡΡΠΈ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅ΡΠ° * ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅ΡΠ° + ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅ΡΠ° + ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΡ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅ΡΠ°.
ΡΡΠΎΠΈΠΌΠΎΡΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ Π²Π½ΡΡΡΠΈ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅ΡΠ° = ΡΡΠΎΠΈΠΌΠΎΡΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ ΠΈΡΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π²Π½ΡΡΡΠ΅Π½Π½Π΅Π³ΠΎ ΡΠΈΠΊΠ»Π° (ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½ Π»ΠΈΡΡ Π΄Π»Ρ ΡΠ΅ΡΠ½ΠΎ Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΡ ΡΠΈΠΊΠ»ΠΎΠ²).
ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅ΡΠ°, ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ, ΠΊΠΎΠ³Π΄Π° Π² ΡΠ°Π±ΠΎΡΡ Π·Π°Π΄Π΅ΠΉΡΡΠ²ΠΎΠ²Π°Π½Π° Ρ ΠΎΡΡ Π±Ρ 1 Π½ΠΈΡΡ.
ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅ΡΠ° = const, Π·Π°Π²ΠΈΡΠΈΡ ΠΎΡ Π°ΡΡ ΠΈΡΠ΅ΠΊΡΡΡΡ ΡΠΈΡΡΠ΅ΠΌΡ ΠΈ Π±Π΅ΡΠ΅ΡΡΡ ΠΈΠ· Π±Π°Π·Ρ Π΄Π°Π½Π½ΡΡ ΠΈΠ»ΠΈ ΠΎΠΏΡΠ΅Π΄Π΅Π»ΡΠ΅ΡΡΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Π΅ΠΌ.
ΡΠΈΠ½Ρ ΡΠΎΠ½ΠΈΠ·Π°ΡΠΈΡ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅ΡΠ° = ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ² FLUSH, BARRIER ΠΈ ENDDO * ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π»ΠΎΠΊΠ°Π»ΡΠ½ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ * ΠΊΠΎΠ»ΠΈΡΠ΅ΡΡΠ²ΠΎ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅ΡΠ°.
3) ΠΡΠ΅Π½ΠΎΡΠ½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ ΡΠ΅Π³ΠΈΠΎΠ½Π° ΡΠ°Π²Π½Π° ΡΡΠΌΠΌΠ΅ Π²ΡΠ΅Ρ ΠΎΡΠ΅Π½ΠΎΡΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΉ ΡΠ»Π΅Π½ΠΎΠ² ΡΠ΅Π³ΠΈΠΎΠ½Π°.
5. ΠΠΎΡΠ°Π³ΠΎΠ²Π°Ρ ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΡ «ΠΠΊΡΠΏΠ΅ΡΡΠ°»
5.1 Π¨Π°Π³ 1. ΠΡΠ΅Π΄Π²Π°ΡΠΈΡΠ΅Π»ΡΠ½ΡΠΉ Π°Π½Π°Π»ΠΈΠ·
ΠΠ°Π½Π½ΡΠ΅ Π½Π° Π²Ρ ΠΎΠ΄Π΅: ΠΠ°Π·Π° ΠΠ°Π½Π½ΡΡ Ρ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°ΠΌΠΈ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°.
ΠΠ°Π½Π½ΡΠ΅ Π½Π° Π²ΡΡ ΠΎΠ΄Π΅: 1-Π΅ Π²Π½ΡΡΡΠ΅Π½Π½Π΅Π΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅.
ΠΠ°ΠΊ ΠΏΡΠΎΡ ΠΎΠ΄ΠΈΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π²Ρ ΠΎΠ΄Π½ΡΡ Π΄Π°Π½Π½ΡΡ Π² Π²ΡΡ ΠΎΠ΄Π½ΡΠ΅:
Π¦ΠΈΠΊΠ»Ρ ΡΠ°Π·Π΄Π΅Π»ΡΠ΅ΠΌ Π½Π° ΠΠΠ¦ ΠΈ Π¦ΠΠ , ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎ ΡΠ°ΡΡΡΠΈΡΡΠ²Π°Ρ Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°ΡΠΈΡ ΠΏΠΎ ΡΠΌΠΎΠ»ΡΠ°Π½ΠΈΡ. ΠΠΈΠ½Π΅ΠΉΠ½ΡΠ΅ ΡΡΠ°Π³ΠΌΠ΅Π½ΡΡ ΠΈ ΡΡΠ»ΠΎΠ²Π½ΡΠ΅ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΡ ΠΏΡΠΎΡΡΠΎ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠΈΠΌ. ΠΡΠΎΡ ΠΎΠ΄ ΠΏΠΎ Π΄Π΅ΡΠ΅Π²Ρ ΠΎΡΡΡΠ΅ΡΡΠ²Π»ΡΠ΅ΡΡΡ «ΡΠ²Π΅ΡΡ Ρ-Π²Π½ΠΈΠ·» .
ΠΠ»Π³ΠΎΡΠΈΡΠΌ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ Π²Ρ ΠΎΠ΄Π½ΡΡ Π΄Π°Π½Π½ΡΡ Π² Π²ΡΡ ΠΎΠ΄Π½ΡΠ΅:
ΠΡΠΎΡ ΠΎΠ΄ΠΈΠΌ ΠΏΠΎ Π΄Π΅ΡΠ΅Π²Ρ ΡΠΈΠΊΠ»ΠΎΠ² ΠΈΠ· ΠΠ°Π·Ρ ΠΠ°Π½Π½ΡΡ , Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ ΠΎΡ Π²Π΅ΡΡΠΈΠ½Ρ Π΄Π΅Π»Π°Π΅ΠΌ ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠΈΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ.
ΠΡΠ»ΠΈ Π²Π΅ΡΡΠΈΠ½Π° — ΡΠΈΠΊΠ», Π½Π΅ΠΏΠΎΠ΄Π΄Π°ΡΡΠΈΠΉΡΡ ΡΠ°ΡΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ²Π°Π½ΠΈΡ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠΈΠΌ Π΅Π³ΠΎ Π² ΠΏΠ΅ΡΠ²ΠΎΠ΅ Π²Π½ΡΡΡΠ΅Π½Π½Π΅Π΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Ρ ΠΏΠΎΠΌΠ΅ΡΠΊΠΎΠΉ Π¦ΠΠ .
ΠΡΠ»ΠΈ Π²Π΅ΡΡΠΈΠ½Π° — ΠΠΠ¦, ΠΏΡΠΎΠ²ΠΎΠ΄ΠΈΠΌ ΡΠ»Π΅Π΄ΡΡΡΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΡΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ:
1) Π ΡΠ΅ΠΊΡΡΡΡ Π²Π΅ΡΡΠΈΡ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅Π² ΠΊ Π²Π΅ΡΡΠΈΠ½Π΅ Π² ΠΏΠ΅ΡΠ²ΠΎΠΌ Π²Π½ΡΡΡΠ΅Π½Π½Π΅ΠΌ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠΈ Π·Π°ΠΏΠΈΡΠ°ΡΡ ΠΠΠ¦.
2) ΠΠΎΠΌΠ΅ΡΠΈΡΡ ΡΡΠΎΠ²Π΅Π½Ρ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΡΡΠΈ (ΠΈΡΡ ΠΎΠ΄Ρ ΠΈΠ· ΡΠΎΠ³ΠΎ, ΡΡΠΎ «ΡΠ΅Π»ΠΎ» ΠΏΡΠΎΠ³ΡΠ°ΠΌΠΌΡ ΠΈΠΌΠ΅Π΅Ρ ΡΡΠΎΠ²Π΅Π½Ρ 0).
3) ΠΠ»Ρ Π²ΡΠ΅Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ , ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΠΌΡΡ Π² Π΄Π°Π½Π½ΠΎΠΌ ΡΠΈΠΊΠ»Π΅ Π²ΠΎ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎΠΌ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠΈ ΡΠ΄Π΅Π»Π°ΡΡ ΠΏΠΎΠΌΠ΅ΡΠΊΠΈ:
Β· ΠΠ»Ρ ΠΈΠ½Π΄Π΅ΠΊΡΠ°: private, ind, shared, no
Β· ΠΠ»Ρ ΠΎΡΡΠ°Π»ΡΠ½ΡΡ : private, pos, shared, def
4) ΠΡΠ»ΠΈ Π΅ΡΡΡ ΡΠ΅Π΄ΡΠΊΡΠΈΡ Π² ΡΠΈΠΊΠ»Π΅: Π΄Π»Ρ Π²ΡΠ΅Ρ ΡΠ΅Π΄ΡΠΊΡΠΈΠΎΠ½Π½ΡΡ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΠ΄Π΅Π»Π°ΡΡ ΠΏΠΎΠΌΠ΅ΡΠΊΠΈ: reduction, " ΠΎΠΏΠ΅ΡΠ°ΡΠΈΡ ΡΠ΅Π΄ΡΠΊΡΠΈΠΈ" , shared, no
5) ΠΡΠ»ΠΈ Π² ΡΠΈΠΊΠ»Π΅ ΠΏΡΠΈΡΡΡΡΡΠ²ΡΠ΅Ρ ΡΠΊΠ°Π»ΡΡΠ½Π°Ρ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡ ΠΏΠΎ Π΄Π°Π½Π½ΡΠΌ: Π΄Π»Ρ Π²ΡΠ΅Ρ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΠΎ ΡΠΊΠ°Π»ΡΡΠ½ΠΎΠΉ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡΡ ΡΠ΄Π΅Π»Π°ΡΡ ΠΏΠΎΠΌΠ΅ΡΠΊΠΈ: private (lastprivate), set, shared, no
6) ΠΡΠ»ΠΈ ΡΠΈΠΊΠ» ΡΠΎΠ΄Π΅ΡΠΆΠΈΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡ ΠΏΠΎ Π΄Π°Π½Π½ΡΠΌ Π² ΠΌΠ°ΡΡΠΈΠ²Π΅: ΠΏΡΠΎΡΡΠ°Π²ΠΈΡΡ Π΄Π»Ρ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΡΠΈΠΊΠ»Π° ΠΏΠΎΠΌΠ΅ΡΠΊΡ ordered ΠΈ Π΄Π»Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ°, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π³ΠΎ ΠΏΠ΅ΡΠ²ΠΎΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΌΠ°ΡΡΠΈΠ²Π°, ΠΈΠΌΠ΅ΡΡΠ΅Π³ΠΎ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡ, Π² ΡΠ΅Π»Π΅ ΡΠΈΠΊΠ»Π° ΠΏΠΎΠΌΠ΅ΡΠΊΡ «ΠΏΠ΅ΡΠ²ΠΎΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ordered», Π΄Π»Ρ ΠΎΠΏΠ΅ΡΠ°ΡΠΎΡΠ°, ΡΠΎΠΎΡΠ²Π΅ΡΡΡΠ²ΡΡΡΠ΅Π³ΠΎ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΌΡ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΡ ΠΌΠ°ΡΡΠΈΠ²Π°, ΠΈΠΌΠ΅ΡΡΠ΅ΠΌΡ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡ, Π² ΡΠ΅Π»Π΅ ΡΠΈΠΊΠ»Π° ΠΏΠΎΡΡΠ°Π²ΠΈΡΡ ΠΏΠΎΠΌΠ΅ΡΠΊΡ «ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ ordered». ΠΠ°ΡΡΠΈΠ²Ρ, Π²ΡΠ·Π²Π°Π²ΡΠΈΠ΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡ Π·Π°Π½Π΅ΡΡΠΈ Π² ΡΠΏΠΈΡΠΎΠΊ «ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² Ρ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΡΠΌΠΈ» .
ΠΡΠ»ΠΈ Π²Π΅ΡΡΠΈΠ½Π° — Π»ΠΈΠ½Π΅ΠΉΠ½ΡΠΉ ΡΡΠ°Π³ΠΌΠ΅Π½Ρ ΠΈΠ»ΠΈ Π²Π΅ΡΠ²Π»Π΅Π½ΠΈΠ΅ - ΠΏΡΠΎΡΡΠΎ ΠΏΠ΅ΡΠ΅Π½ΠΎΡΠΈΠΌ Π²Π΅ΡΡΠΈΠ½Ρ ΠΈΠ· ΠΠ°Π·Ρ ΠΠ°Π½Π½ΡΡ Π² 1-Π΅ Π²Π½ΡΡΡΠ΅Π½Π½Π΅Π΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅.
5.2 Π¨Π°Π³ 2. ΠΡΠ±ΠΎΡ Π²Π°ΡΠΈΠ°Π½ΡΠ° ΡΠ°ΡΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ²Π°Π½ΠΈΡ
ΠΠ°Π½Π½ΡΠ΅ Π½Π° Π²Ρ ΠΎΠ΄Π΅: ΠΠ°Π·Π° ΠΠ°Π½Π½ΡΡ Ρ ΡΠ΅Π·ΡΠ»ΡΡΠ°ΡΠ°ΠΌΠΈ ΡΡΠ°ΡΠΈΡΠ΅ΡΠΊΠΎΠ³ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°, 1-Π΅ Π²Π½ΡΡΡΠ΅Π½Π½Π΅Π΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅.
ΠΠ°Π½Π½ΡΠ΅ Π½Π° Π²ΡΡ ΠΎΠ΄Π΅: Π½Π΅Π·Π°ΠΊΠΎΠ½ΡΠ΅Π½Π½ΠΎΠ΅ 2-Π΅ Π²Π½ΡΡΡΠ΅Π½Π½Π΅Π΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅.
ΠΠ°ΠΊ ΠΏΡΠΎΡ ΠΎΠ΄ΠΈΡ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π²Ρ ΠΎΠ΄Π½ΡΡ Π΄Π°Π½Π½ΡΡ Π² Π²ΡΡ ΠΎΠ΄Π½ΡΠ΅:
ΠΠ»Ρ ΠΠΠ¦ Π²ΡΠ±ΠΈΡΠ°Π΅ΠΌ Π½Π°ΠΈΠ»ΡΡΡΠΈΠΉ Π²Π°ΡΠΈΠ°Π½Ρ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅Π². ΠΠ΄Π½ΠΎΠ²ΡΠ΅ΠΌΠ΅Π½Π½ΠΎ ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ 2-Π΅ Π²Π½ΡΡΡΠ΅Π½Π½Π΅Π΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅, ΠΎΡΡΠ°ΠΆΠ°ΡΡΠ΅Π΅ Π½Π°ΠΈΠ»ΡΡΡΡΡ ΡΡ Π΅ΠΌΡ ΡΠ°ΡΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ²Π°Π½ΠΈΡ: ΠΏΠ΅ΡΠ΅Π±ΠΎΡΠΎΠΌ Π²ΡΠ΅Ρ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΡ Π²Π°ΡΠΈΠ°Π½ΡΠΎΠ² ΡΠ°ΡΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ²Π°Π½ΠΈΡ ΠΈ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Π½ΡΡ Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°ΡΠΈΠΉ. ΠΠΎΠΈΡΠΊ Π½Π°ΠΈΠ»ΡΡΡΠ΅Π³ΠΎ ΡΠ°ΡΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ²Π°Π½ΠΈΡ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ «ΡΠ½ΠΈΠ·Ρ-Π²Π²Π΅ΡΡ »: ΡΠ½Π°ΡΠ°Π»Π° ΡΠΏΡΡΠΊΠ°Π΅ΠΌΡΡ Π½Π° ΡΠ°ΠΌΡΠΉ Π½ΠΈΠΆΠ½ΠΈΠΉ ΡΡΠΎΠ²Π΅Π½Ρ, Π½Π°Ρ ΠΎΠ΄ΠΈΠΌ ΡΠ°ΡΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ²Π°Π½ΠΈΠ΅ Π΄Π»Ρ Π½Π΅Π³ΠΎ, Π·Π°ΡΠ΅ΠΌ ΠΏΠΎΠ΄Π½ΠΈΠΌΠ°Π΅ΠΌΡΡ Π½Π° 1 ΡΡΠΎΠ²Π΅Π½Ρ Π²ΡΡΠ΅ ΠΈ Π½Π°Ρ ΠΎΠ΄ΠΈΠΌ Π½Π°ΠΈΠ»ΡΡΡΠ΅Π΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅ Π΄Π»Ρ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΡΡΠΎΠ²Π½Ρ ΠΈ Ρ. Π΄. ΠΡΠΈ Π½Π°Ρ ΠΎΠΆΠ΄Π΅Π½ΠΈΠΈ Π½Π°ΠΈΠ»ΡΡΡΠ΅Π³ΠΎ Π²Π°ΡΠΈΠ°Π½ΡΠ° ΡΠ°ΡΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ²Π°Π½ΠΈΡ Π½Π° ΡΡΠΎΠ²Π½Π΅ ΠΏΡΡΠ°Π΅ΠΌΡΡ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΠΈΡΡ ΠΏΠΎΠ΄ΡΡΠ΄ ΡΡΠΎΡΡΠΈΠ΅ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠ΅ Π΄Π»Ρ ΡΠ°ΡΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ²Π°Π½ΠΈΡ ΡΠΈΠΊΠ»Ρ Π² ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΠΉ ΡΠ΅Π³ΠΈΠΎΠ½. ΠΡΠ»ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡ Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ Π² ΡΠ΅Π³ΠΈΠΎΠ½Π΅, ΠΎΠ½ Π΄Π΅Π»ΠΈΡΡΡ Π½Π° ΡΠ΅Π³ΠΈΠΎΠ½Ρ, Π² ΠΊΠΎΡΠΎΡΡΡ Π½Π΅ Π±ΡΠ΄Π΅Ρ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠ°.
ΠΠ° ΡΡΠΎΠΌ ΡΠ°Π³Π΅ ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌ Π΄Π΅ΡΠ΅Π²ΠΎ ΠΈΠ· 1-ΠΎΠ³ΠΎ Π²Π½ΡΡΡΠ΅Π½Π½Π΅Π³ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ ΠΈ Π²ΡΠ±ΠΈΡΠ°Π΅ΠΌ Π½Π°ΠΈΠ»ΡΡΡΡΡ ΡΡ Π΅ΠΌΡ ΡΠ°ΡΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ²Π°Π½ΠΈΡ Π΄Π»Ρ Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΡ ΠΠΠ¦ ΠΈ ΠΎΠ±ΡΠ΅Π΄ΠΈΠ½ΡΠ΅ΠΌ Π² ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΠ΅ ΡΠ΅Π³ΠΈΠΎΠ½Ρ «ΡΠΎΡΠ΅Π΄Π½ΠΈΠ΅» ΠΠΠ¦. ΠΠ»Ρ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΡ ΡΠ΅Π³ΠΈΠΎΠ½ΠΎΠ² ΠΏΠ΅ΡΠ΅Π±ΠΈΡΠ°Π΅ΠΌ Π²ΡΠ΅ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΡΠ΅ Π²Π°ΡΠΈΠ°Π½ΡΡ ΠΊΠΎΠΌΠΌΠ΅Π½ΡΠ°ΡΠΈΠ΅Π² Ρ ΡΠΈΠΊΡΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π½Π°ΠΈΠ»ΡΡΡΠ΅Π³ΠΎ ΠΈΠ· Π½ΠΈΡ Π²ΠΎ 2-ΠΌ Π²Π½ΡΡΡΠ΅Π½Π½Π΅ΠΌ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠΈ.
ΠΠ»Π³ΠΎΡΠΈΡΠΌ ΠΏΡΠ΅ΠΎΠ±ΡΠ°Π·ΠΎΠ²Π°Π½ΠΈΡ Π²Ρ ΠΎΠ΄Π½ΡΡ Π΄Π°Π½Π½ΡΡ Π² Π²ΡΡ ΠΎΠ΄Π½ΡΠ΅:
ΠΡΠΎΡ ΠΎΠ΄ΠΈΠΌ Π²Π΅ΡΡΠΈΠ½Ρ Π΄Π΅ΡΠ΅Π²Π° ΠΈΠ· 1-Π³ΠΎ Π²Π½ΡΡΡΠ΅Π½Π½Π΅Π³ΠΎ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΡ. ΠΠ·Π½Π°ΡΠ°Π»ΡΠ½ΠΎ Π²ΡΠ΅ ΠΠΠ¦ ΠΏΠΎΠΌΠ΅ΡΠ°ΡΡΡΡ ΠΊΠ°ΠΊ Π½Π΅ ΠΏΡΠΎΠΉΠ΄Π΅Π½Π½ΡΠ΅. ΠΡΠΎΠ΄ΠΎΠ»ΠΆΠ°Π΅ΠΌ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ, ΠΏΠΎΠΊΠ° Π½Π΅ ΠΎΡΡΠ°Π½Π΅ΡΡΡ Π½Π΅ ΠΏΡΠΎΠΉΠ΄Π΅Π½Π½ΡΡ ΠΠΠ¦.
ΠΡΠ½ΠΎΠ²Π½ΡΠ΅ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ ΡΠ°Π³Π° 2:
1) ΠΠ°Ρ ΠΎΠ΄ΠΈΠΌ ΠΠΠ¦ Π½Π°ΠΈΠ±ΠΎΠ»ΡΡΠ΅Π³ΠΎ ΡΡΠΎΠ²Π½Ρ (Ρ.Π΅. ΡΠ°ΠΌΡΠΉ «Π½ΠΈΠ·ΡΠΈΠΉ» ΠΏΠΎ Π²Π»ΠΎΠΆΠ΅Π½Π½ΠΎΡΡΠΈ) ΠΈ Π΄Π΅Π»Π°Π΅ΠΌ ΡΡΠΎΠ²Π΅Π½Ρ Π½Π°ΠΉΠ΄Π΅Π½Π½ΠΎΠ³ΠΎ ΡΠΈΠΊΠ»Π° ΡΠ΅ΠΊΡΡΠΈΠΌ.
2) ΠΠ»Ρ Π²ΡΠ΅Ρ ΡΠΈΠΊΠ»ΠΎΠ² ΡΠ΅ΠΊΡΡΠ΅Π³ΠΎ ΡΡΠΎΠ²Π½Ρ ΡΡΠ°Π²Π½ΠΈΠ²Π°Π΅ΠΌ 3 ΠΎΡΠ΅Π½ΠΎΡΠ½ΡΡ ΡΡΠ½ΠΊΡΠΈΠΈ:
a) ΠΎΡΠ΅Π½ΠΎΡΠ½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ Π΄Π»Ρ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ Π²Π°ΡΠΈΠ°Π½ΡΠ°,
b) ΠΎΡΠ΅Π½ΠΎΡΠ½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ ΠΏΡΠΈ ΡΠ°ΡΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ²Π°Π½ΠΈΠΈ Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΡΠΈΠΊΠ»Π°,
c) ΠΎΡΠ΅Π½ΠΎΡΠ½Π°Ρ ΡΡΠ½ΠΊΡΠΈΡ ΠΏΡΠΈ ΡΠ°ΡΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ²Π°Π½ΠΈΠΈ Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΡ ΡΠΈΠΊΠ»ΠΎΠ², ΠΏΡΠΈ ΡΠΎΠΌ, ΡΡΠΎ Π΄Π°Π½Π½ΡΠΉ ΡΠΈΠΊΠ» ΠΎΡΡΠ°Π΅ΡΡΡ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°ΡΠ΅Π»ΡΠ½ΡΠΌ (ΡΡΠΎΡ Π²Π°ΡΠΈΠ°Π½Ρ ΠΎΡΠ΅Π½ΠΈΠ²Π°Π΅ΡΡΡ ΡΠΎΠ»ΡΠΊΠΎ, Π΅ΡΠ»ΠΈ ΡΡΡΠ΅ΡΡΠ²ΡΡΡ Π²Π»ΠΎΠΆΠ΅Π½Π½ΡΠ΅ ΠΠΠ¦).
3) ΠΡΠ»ΠΈ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½Π° ΡΡΠ½ΠΊΡΠΈΡ a), ΡΠΎ ΡΠΈΠΊΠ» ΠΏΠΎΠΌΠ΅ΡΠ°Π΅ΡΡΡ ΠΊΠ°ΠΊ Π½Π΅ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠΉ Π΄Π»Ρ ΡΠ°ΡΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ²Π°Π½ΠΈΡ. ΠΡΠ»ΠΈ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½Π° ΡΡΠ½ΠΊΡΠΈΡ b), ΡΠΎ ΡΠΈΠΊΠ» ΠΏΠΎΠΌΠ΅ΡΠ°Π΅ΡΡΡ ΠΊΠ°ΠΊ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠΉ Π΄Π»Ρ ΡΠ°ΡΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ²Π°Π½ΠΈΡ ΠΈ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΡΡΡ Π² ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΠΉ ΡΠ΅Π³ΠΈΠΎΠ½. ΠΠ»ΠΎΠΆΠ΅Π½Π½ΡΠ΅ ΡΠΈΠΊΠ»Ρ, ΠΏΡΠΈΠ·Π½Π°Π½Π½ΡΠ΅ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠΌΠΈ Π΄Π»Ρ ΡΠ°ΡΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ²Π°Π½ΠΈΡ ΡΡΠ°Π½ΠΎΠ²ΡΡΡΡ Π½Π΅ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠΌΠΈ Π΄Π»Ρ ΡΠ°ΡΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ²Π°Π½ΠΈΡ. ΠΡΠ»ΠΈ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½Π° ΡΡΠ½ΠΊΡΠΈΡ Ρ), ΡΠΎ Π½ΠΈΠΊΠ°ΠΊΠΈΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΠΉ Π½Π΅ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ.
4) Π¦ΠΈΠΊΠ»Ρ, Π΄Π»Ρ ΠΊΠΎΡΠΎΡΡΡ ΡΠ°ΡΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ²Π°Π½ΠΈΠ΅ ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΠΎ (ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡΠ½Π° ΡΡΠ½ΠΊΡΠΈΡ b) Π΄ΠΎΠ±Π°Π²Π»ΡΡΡΡΡ Π² ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΠΉ ΡΠ΅Π³ΠΈΠΎΠ½. ΠΡΠ»ΠΈ Π½Π° ΡΠ΅ΠΊΡΡΠ΅ΠΌ ΡΡΠΎΠ²Π½Π΅ ΡΠΆΠ΅ Π΅ΡΡΡ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΠΉ ΡΠ΅Π³ΠΈΠΎΠ½, ΠΏΡΠΈΡΠ΅ΠΌ ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ ΠΏΡΠΎΠΉΠ΄Π΅Π½Π½ΡΠΉ ΡΠΈΠΊΠ» ΡΠΎΡΠ΅Π΄ΡΡΠ²ΡΠ΅Ρ Ρ ΡΠ΅ΠΊΡΡΠΈΠΌ, ΡΠΎ ΠΏΡΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° ΠΎΡΡΡΡΡΡΠ²ΠΈΠ΅ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠΎΠ² Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°ΡΠΈΠΉ, Π΅ΡΠ»ΠΈ ΡΠ΅ΠΊΡΡΠΈΠΉ ΡΠΈΠΊΠ» Π±ΡΠ΄Π΅Ρ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ Π² ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΠΉ ΡΠ΅Π³ΠΈΠΎΠ½. Π ΡΠ»ΡΡΠ°Π΅ ΠΎΡΡΡΡΡΡΠ²ΠΈΡ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΠΎΠ², ΡΠ΅ΠΊΡΡΠΈΠΉ ΡΠΈΠΊΠ» Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΡΡΡ Π² ΡΠ΅Π³ΠΈΠΎΠ½. ΠΡΠ»ΠΈ Π½Π°ΠΉΠ΄Π΅Π½Ρ ΠΊΠΎΠ½ΡΠ»ΠΈΠΊΡΡ Π»ΠΎΠΊΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ, ΠΈΠ»ΠΈ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠΉ ΡΠΈΠΊΠ» Π½Π° ΡΡΠΎΠ²Π½Π΅ Π½Π΅ ΡΠΎΡΠ΅Π΄ΡΡΠ²ΡΠ΅Ρ Ρ ΡΠ΅ΠΊΡΡΠΈΠΌ, ΠΈΠ»ΠΈ ΡΠ΅ΠΊΡΡΠΈΠΉ ΡΠΈΠΊΠ» ΠΏΠ΅ΡΠ²ΡΠΉ Π½Π° ΡΡΠΎΠ²Π½Π΅, ΡΠΎ Π΄Π»Ρ ΡΠΈΠΊΠ»Π° ΡΠΎΠ·Π΄Π°Π΅ΡΡΡ Π½ΠΎΠ²ΡΠΉ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΠΉ ΡΠ΅Π³ΠΈΠΎΠ½. ΠΡΠ»ΠΈ Π² ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΠΉ ΡΠ΅Π³ΠΈΠΎΠ½ Π΄ΠΎΠ±Π°Π²Π»ΡΠ΅ΡΡΡ ΡΠΈΠΊΠ», ΡΠΎ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° Π½Π° ΡΡΡΠ°Π½ΠΎΠ²ΠΊΡ Nowait.
5) ΠΠ°Π»Π΅Π΅, ΡΠΈΠΊΠ» ΠΏΠΎΠΌΠ΅ΡΠ°Π΅ΡΡΡ, ΠΊΠ°ΠΊ ΠΏΡΠΎΠΉΠ΄Π΅Π½Π½ΡΠΉ. ΠΡΠ»ΠΈ Π½Π° ΡΡΠΎΠ²Π½Π΅ Π½Π΅ ΠΎΡΡΠ°Π»ΠΎΡΡ Π½Π΅ ΠΏΡΠΎΠΉΠ΄Π΅Π½Π½ΡΡ ΡΠΈΠΊΠ»ΠΎΠ², ΡΠ΅ΠΊΡΡΠΈΠΉ ΡΡΠΎΠ²Π΅Π½Ρ ΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ Π½Π° Π΅Π΄ΠΈΠ½ΠΈΡΡ ΠΌΠ΅Π½ΡΡΠ΅, ΠΈ ΠΏΡΠΎΠ΄ΠΎΠ»ΠΆΠ°ΡΡΡΡ Π΄Π΅ΠΉΡΡΠ²ΠΈΡ 2). ΠΡΠ»ΠΈ ΠΆΠ΅ ΡΠ΅ΠΊΡΡΠΈΠΉ ΡΡΠΎΠ²Π΅Π½Ρ ΠΏΡΠΈΠ½ΡΠ» Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ 0, ΡΠΎ ΠΏΠΎΡΠ»Π΅ ΡΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ Π½Π΅ ΠΎΡΡΠ°Π½Π΅ΡΡΡ Π½Π΅ ΠΏΡΠΎΠΉΠ΄Π΅Π½Π½ΡΡ ΠΠΠ¦ ΡΠΎΡΠΌΠΈΡΡΠ΅ΡΡΡ Π²ΡΠΎΡΠΎΠ΅ Π²Π½ΡΡΡΠ΅Π½Π½Π΅Π΅ ΠΏΡΠ΅Π΄ΡΡΠ°Π²Π»Π΅Π½ΠΈΠ΅, ΠΎΡΡΠ°ΠΆΠ°ΡΡΠ΅Π΅ Π²ΡΠ΅ ΡΠΈΠΊΠ»Ρ, ΡΡΡΠ΅ΠΊΡΠΈΠ²Π½ΡΠ΅ Π΄Π»Ρ ΡΠ°ΡΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΠΈΠ²Π°Π½ΠΈΡ.
ΠΠ°ΠΊ ΠΏΡΠΎΠΈΡΡ ΠΎΠ΄ΠΈΡ ΡΡΡΠ°Π½ΠΎΠ²ΠΊΠ° NOWAIT Π΄Π»Ρ ΠΏΠΎΠ΄ΡΡΠ΄ ΡΡΠΎΡΡΠΈΡ ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΡ ΡΠΈΠΊΠ»ΠΎΠ²:
Π£ΡΠ»ΠΎΠ²ΠΈΠ΅ ΠΏΡΠΎΠ²Π΅ΡΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΏΠΎΠ΄ΡΡΠ΄ ΠΈΠ΄ΡΡΠΈΡ ΡΠΈΠΊΠ»ΠΎΠ² ΠΏΡΠΈ Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠΈ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΡΠΈΠΊΠ»Π° Π² ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΡΠΉ ΡΠ΅Π³ΠΈΠΎΠ½.
Β· ΠΡΠ»ΠΈ Ρ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π³ΠΎ ΡΠΈΠΊΠ»Π° Π² ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎΠΌ ΡΠ΅Π³ΠΈΠΎΠ½Π΅ Π΅ΡΡΡ ΠΏΠΎΠΌΠ΅ΡΠΊΠ° NowaitIn (ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΠΏΠ΅ΡΠ΅Π΄ ΠΏΡΠ΅Π΄ΡΠ΄ΡΡΠΈΠΌ ΡΠΈΠΊΠ»ΠΎΠΌ ΡΠΆΠ΅ ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π° Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Π° NOWAIT), ΡΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ ΡΡΠ»ΠΎΠ²ΠΈΠ΅ Nowait Π΄Π»Ρ ΠΏΠ°Ρ (Π½ΠΎΠ²ΡΠΉ ΡΠΈΠΊΠ», ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ ΡΠΈΠΊΠ» Π² ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎΠΌ ΡΠ΅Π³ΠΈΠΎΠ½Π΅). ΠΡΠ»ΠΈ ΡΡΠ»ΠΎΠ²ΠΈΠ΅ ΠΈΡΡΠΈΠ½Π½ΠΎ ΠΏΡΠΎΠ²Π΅ΡΡΡΡ ΡΡΠ»ΠΎΠ²ΠΈΠ΅ Π΄Π»Ρ ΠΏΠ°Ρ Π²ΡΠ΅Ρ (Π½ΠΎΠ²ΡΠΉ ΡΠΈΠΊΠ», ΡΠΈΠΊΠ» Ρ ΠΏΠΎΠΌΠ΅ΡΠΊΠΎΠΉ NowaitOut), ΠΏΡΠΈΡΠ΅ΠΌ Π½Π°ΡΠΈΠ½Π°Ρ Ρ ΠΏΡΠ΅Π΄ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π³ΠΎ ΠΈ Π² ΠΎΠ±ΡΠ°ΡΠ½ΠΎΠΌ ΠΏΠΎΡΡΠ΄ΠΊΠ΅, Π΄ΠΎ ΠΏΠ΅ΡΠ²ΠΎΠΉ Π½Π΅ΡΠ΄Π°ΡΠ½ΠΎΠΉ ΠΏΡΠΎΠ²Π΅ΡΠΊΠΈ ΠΈΠ»ΠΈ Π΄ΠΎ ΠΏΠ΅ΡΠ²ΠΎΠ³ΠΎ ΡΠΈΠΊΠ»Π° Π±Π΅Π· ΠΏΠΎΠΌΠ΅ΡΠΊΠΈ NowaitOut. ΠΡΠ»ΠΈ Π½Π΅ Π±ΡΠ»ΠΎ Π½Π΅ΡΠ΄Π°ΡΠ½ΡΡ ΠΏΡΠΎΠ²Π΅ΡΠΎΠΊ, ΠΏΠΎΡΡΠ°Π²ΠΈΡΡ Ρ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΡΠΈΠΊΠ»Π° ΠΏΠΎΠΌΠ΅ΡΠΊΡ NowaitIn, Π° Ρ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π³ΠΎ Π² ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎΠΌ ΡΠ΅Π³ΠΈΠΎΠ½Π΅ NowaitOut (ΠΎΠ·Π½Π°ΡΠ°Π΅Ρ, ΡΡΠΎ ΠΏΠΎΡΠ»Π΅ ΡΠΈΠΊΠ»Π° ΡΡΡΠ°Π½ΠΎΠ²Π»Π΅Π½Π° Π΄ΠΈΡΠ΅ΠΊΡΠΈΠ²Π° NOWAIT).
Β· ΠΡΠ»ΠΈ ΠΆΠ΅ Ρ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π³ΠΎ ΡΠΈΠΊΠ»Π° Π² ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎΠΌ ΡΠ΅Π³ΠΈΠΎΠ½Π΅ Π½Π΅Ρ ΠΏΠΎΠΌΠ΅ΡΠΊΠΈ ΠΏΠΎΠΌΠ΅ΡΠΊΠ° NowaitIn, ΡΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΈΡΡ ΡΡΠ»ΠΎΠ²ΠΈΠ΅ Nowait Π΄Π»Ρ ΠΏΠ°Ρ (Π½ΠΎΠ²ΡΠΉ ΡΠΈΠΊΠ», ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΠΉ ΡΠΈΠΊΠ» Π² ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎΠΌ ΡΠ΅Π³ΠΈΠΎΠ½Π΅). ΠΡΠ»ΠΈ ΡΡΠ»ΠΎΠ²ΠΈΠ΅ ΠΈΡΡΠΈΠ½Π½ΠΎ, ΠΏΠΎΡΡΠ°Π²ΠΈΡΡ Ρ Π½ΠΎΠ²ΠΎΠ³ΠΎ ΡΠΈΠΊΠ»Π° ΠΏΠΎΠΌΠ΅ΡΠΊΡ NowaitIn, Π° Ρ ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π³ΠΎ Π² ΠΏΠ°ΡΠ°Π»Π»Π΅Π»ΡΠ½ΠΎΠΌ ΡΠ΅Π³ΠΈΠΎΠ½Π΅ NowaitOut.
ΠΡΠΎΠ²Π΅ΡΠΊΠ° ΡΡΠ»ΠΎΠ²ΠΈΡ Nowait ΠΌΠ΅ΠΆΠ΄Ρ Π΄Π²ΡΠΌΡ ΡΠΈΠΊΠ»Π°ΠΌΠΈ:
Β· ΠΡΠ»ΠΈ ΠΌΠ½ΠΎΠΆΠ΅ΡΡΠ²ΠΎ ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ /ΠΌΠ°ΡΡΠΈΠ²ΠΎΠ² Π΄Π»Ρ 2 ΠΏΠΎΠ΄ΡΡΠ΄ ΠΈΠ΄ΡΡΠΈΡ ΡΠΈΠΊΠ»ΠΎΠ² Π½Π΅ ΠΏΠ΅ΡΠ΅ΡΠ΅ΠΊΠ°Π΅ΡΡΡ (Π·Π° ΠΈΡΠΊΠ»ΡΡΠ΅Π½ΠΈΠ΅ΠΌ ΠΈΠ½Π΄Π΅ΠΊΡΠΎΠ² — ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡΠΌΠΈ), ΡΠΎ ΠΏΡΠΎΠ²Π΅ΡΠΊΠ° ΡΠ΄Π°ΡΠ½Π°.