Π”ΠΈΠΏΠ»ΠΎΠΌΡ‹, курсовыС, Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚Ρ‹, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Ρ‹Π΅...
Брочная ΠΏΠΎΠΌΠΎΡ‰ΡŒ Π² ΡƒΡ‡Ρ‘Π±Π΅

БистСма Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ распараллСливания отобраТСния Π½Π° ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΏΡ€ΠΎΡ†Π΅ΡΡΠΎΡ€

Π”ΠΈΠΏΠ»ΠΎΠΌΠ½Π°ΡΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΠΈΠ£Π·Π½Π°Ρ‚ΡŒ ΡΡ‚ΠΎΠΈΠΌΠΎΡΡ‚ΡŒΠΌΠΎΠ΅ΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹

Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΈΠΌΠ΅Π΅Ρ‚ прСимущСства с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния упрощСния программирования Π² Ρ‚ΠΎΠΌ случаС, ΠΊΠΎΠ³Π΄Π° Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Π΅ΡΡ‚ΡŒ Π΄Π²Π° уровня ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠ·ΠΌΠ° — ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠ·ΠΌ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΏΠΎΠ΄Π·Π°Π΄Π°Ρ‡Π°ΠΌΠΈ ΠΈ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠ·ΠΌ Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΏΠΎΠ΄Π·Π°Π΄Π°Ρ‡ΠΈ. Вакая ситуация Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΡ€ΠΈ использовании многообластных (ΠΌΠ½ΠΎΠ³ΠΎΠ±Π»ΠΎΡ‡Π½Ρ‹Ρ…) ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π½Π° 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 подряд ΠΈΠ΄ΡƒΡ‰ΠΈΡ… Ρ†ΠΈΠΊΠ»ΠΎΠ² Π½Π΅ ΠΏΠ΅Ρ€Π΅ΡΠ΅ΠΊΠ°Π΅Ρ‚ся (Π·Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ΠΌ индСксов — ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌΠΈ), Ρ‚ΠΎ ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠ° ΡƒΠ΄Π°Ρ‡Π½Π°.

ΠŸΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ вСсь тСкст
Π—Π°ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ Ρ„ΠΎΡ€ΠΌΡƒ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ Ρ€Π°Π±ΠΎΡ‚ΠΎΠΉ