ΠŸΠΎΠΌΠΎΡ‰ΡŒ Π² написании студСнчСских Ρ€Π°Π±ΠΎΡ‚
АнтистрСссовый сСрвис

ΠžΡΠ½ΠΎΠ²Ρ‹ распараллСливания ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, ΠΈΡ… динамичСский Π°Π½Π°Π»ΠΈΠ·

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

Π˜ΡΡ…ΠΎΠ΄Π½Π°Ρ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° поступаСт Π½Π° Π²Ρ…ΠΎΠ΄ инструмСнтатору, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π΅ прСдставлСниС ΠΈ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ для динамичСского Π°Π½Π°Π»ΠΈΠ·Π°. Π—Π°Π΄Π°Ρ‡Π° Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π° — ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡƒΡŽ экспСртным модулям для распараллСливания ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. ΠŸΠΎΠ»ΡŒΠ·ΡƒΡΡΡŒ этой ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ, экспСртныС ΠΌΠΎΠ΄ΡƒΠ»ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€ΠΈΠ½ΡΡ‚ΡŒ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΎ Ρ€Π°ΡΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠ²Π°Π½ΠΈΠΈ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… Ρ†ΠΈΠΊΠ»ΠΎΠ², ΠΎ Ρ€Π°ΡΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ Π΄Π°Π½Π½Ρ‹Ρ…… Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ >

ΠžΡΠ½ΠΎΠ²Ρ‹ распараллСливания ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, ΠΈΡ… динамичСский Π°Π½Π°Π»ΠΈΠ· (Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚, курсовая, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ)

Аннотация Анализ зависимостСй ΠΏΠΎ Π΄Π°Π½Π½Ρ‹ΠΌ являСтся ваТнСйшим этапом ΠΏΡ€ΠΈ распараллСливании ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ. Данная Ρ€Π°Π±ΠΎΡ‚Π° посвящСна ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌ динамичСского Π°Π½Π°Π»ΠΈΠ·Π° зависимостСй. Π Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‚ΡΡ Π΄Π²Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Π° динамичСского Π°Π½Π°Π»ΠΈΠ·Π°, Π° Ρ‚Π°ΠΊΠΆΠ΅ практичСская рСализация ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈΠ· Π½ΠΈΡ…. ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΉ динамичСский Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‚Π°Ρ‚ΡŒ Π² Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ Ρ‡Π°ΡΡ‚ΡŒΡŽ систСмы Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ распараллСливания ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ.

1 Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅ 3

1.1 ΠŸΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ 3

1.2 Автоматизация распараллСливания 5

1.3 БтатичСский Π°Π½Π°Π»ΠΈΠ· 6

1.4 ДинамичСский Π°Π½Π°Π»ΠΈΠ· 8

1.5 РаспараллСливаниС Π²ΠΎ Π²Ρ€Π΅ΠΌΡ выполнСния 9

1.6 ЦСль Ρ€Π°Π±ΠΎΡ‚Ρ‹ 10

2 ΠŸΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΊΠ° Π·Π°Π΄Π°Ρ‡ΠΈ 11

2.1 Зависимости ΠΏΠΎ Π΄Π°Π½Π½Ρ‹ΠΌ 11

2.2 БистСма Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ распараллСливания 12

2.3 Π—Π°Π΄Π°Ρ‡Π° Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π° 13

3 ДинамичСский Π°Π½Π°Π»ΠΈΠ· 14

3.1 Π‘Ρ…Π΅ΠΌΠ° Ρ€Π°Π±ΠΎΡ‚Ρ‹ динамичСского Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π° 14

3.2 ДинамичСский Π°Π½Π°Π»ΠΈΠ· с ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π΄Π΅Ρ€Π΅Π²Π° контСкстов 15

3.3 ДинамичСский Π°Π½Π°Π»ΠΈΠ· с ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Ρ… Π½ΠΎΠΌΠ΅Ρ€ΠΎΠ² ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ. 17

3.4 ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π° ΠΈ Π½Π΅Π΄ΠΎΡΡ‚Π°Ρ‚ΠΊΠΈ динамичСского Π°Π½Π°Π»ΠΈΠ·Π°. 19

4 ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠ°Ρ рСализация 22

4.1 Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ 22

4.2 Π€ΠΎΡ€ΠΌΠ°Ρ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² 24

4.3 Π’Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π΅ устройство Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π° 26

4.4 Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ тСстирования 28

5 Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ 30

6 Π›ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΡƒΡ€Π° 31

1.

Π’Π²Π΅Π΄Π΅Π½ΠΈΠ΅

Π‘ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° появлСния Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… машин ΠΎΠ΄Π½ΠΎΠΉ ΠΈΠ· ΠΎΡΠ½ΠΎΠ²Π½Ρ‹Ρ… ΠΈΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ являСтся Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Ρ‚Ρ€ΡƒΠ΄ΠΎΠ΅ΠΌΠΊΠΈΡ… вычислСний. ΠŸΡ€ΠΈ этом ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ поставлСнных Π·Π°Π΄Π°Ρ‡ растСт быстрСС, Ρ‡Π΅ΠΌ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ процСссора. МногиС соврСмСнныС Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Π·Π°Π΄Π°Ρ‡ΠΈ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ однопроцСссорных Π­Π’Πœ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ слишком Π΄ΠΎΠ»Π³ΠΎ Π»ΠΈΠ±ΠΎ Π·Π°Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ большой объСм рСсурсов Ρ‚Π°ΠΊΠΈΡ…, ΠΊΠ°ΠΊ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠ°ΠΌΡΡ‚ΡŒ. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ для увСличСния скорости вычислСний примСняСтся Ρ‚Π°ΠΊΠΆΠ΅ ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΏΡƒΡ‚ΡŒ — созданиС многопроцСссорных Π­Π’Πœ.

1.1 ΠŸΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠŸΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹ΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π±ΡƒΠ΄Π΅ΠΌ Π½Π°Π·Ρ‹Π²Π°Ρ‚ΡŒ процСсс написания ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ для многопроцСссорной систСмы. РазумССтся, ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈΠΌΠ΅Π΅Ρ‚ ряд особСнностСй ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹ΠΌ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΠΈ ΠΎΡ‚ Ρ‚ΠΈΠΏΠ° многопроцСссорной систСмы ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ срСдства программирования:

БистСмы с ΠΎΠ±Ρ‰Π΅ΠΉ ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ (SMP) — Π½Π°Π±ΠΎΡ€ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎ Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΡ… процСссоров, ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΡ… доступ ΠΊ ΠΎΠ±Ρ‰Π΅ΠΉ для всСх процСссоров памяти, ΠΏΡ€ΠΈΡ‡Π΅ΠΌ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ доступа ΠΊ ΠΏΠ°ΠΌΡΡ‚ΠΈ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Π° для всСх процСссоров. ΠŸΡ€ΠΈΠΌΠ΅Π½ΡΠ΅Ρ‚ΡΡ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ Π² ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΎΠ±Ρ‰Π΅ΠΉ памяти, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, с ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ интСрфСйса OpenMP.

БистСмы с Π½Π΅ΠΎΠ΄Π½ΠΎΡ€ΠΎΠ΄Π½Ρ‹ΠΌ доступом (NUMA) — Π½Π°Π±ΠΎΡ€ Π±Π»ΠΎΠΊΠΎΠ², содСрТащих нСсколько процСссоров ΠΈ ΠΎΠ±Ρ‰ΡƒΡŽ для Π½ΠΈΡ… ΠΏΠ°ΠΌΡΡ‚ΡŒ. ΠŸΡ€ΠΈ этом допускаСтся ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ любого процСссора ΠΊ ΡƒΠ΄Π°Π»Π΅Π½Π½ΠΎΠΉ памяти, Ρ‚. Π΅. памяти Π΄Ρ€ΡƒΠ³ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ°, Π½ΠΎ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ происходит ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅, Ρ‡Π΅ΠΌ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠ΅ ΠΊ Π»ΠΎΠΊΠ°Π»ΡŒΠ½ΠΎΠΉ памяти. ΠŸΡ€ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ примСняСтся, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, систСма Shmem.

БистСмы с Ρ€Π°ΡΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ (MPP) — Π½Π°Π±ΠΎΡ€ ΡƒΠ·Π»ΠΎΠ², состоящих ΠΈΠ· ΠΏΡ€ΠΎΡ†Π΅ΡΡΠΎΡ€Π° ΠΈ ΠΏΠ°ΠΌΡΡ‚ΠΈ, ΠΈ ΠΊΠΎΠΌΠΌΡƒΡ‚Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ срСды для связи ΠΌΠ΅ΠΆΠ΄Ρƒ ΡƒΠ·Π»Π°ΠΌΠΈ. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ процСссор ΠΈΠΌΠ΅Π΅Ρ‚ нСпосрСдствСнный доступ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΊ ΡΠ²ΠΎΠ΅ΠΉ локальной памяти. ΠŸΡ€ΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ примСняСтся модСль ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ сообщСний, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ MPI, PVM ΠΈ Π΄Ρ€.

Π‘ΠΌΠ΅ΡˆΠ°Π½Π½Ρ‹Π΅ систСмы — Π½Π°Π±ΠΎΡ€ SMP-ΡƒΠ·Π»ΠΎΠ², соСдинСнных ΠΊΠΎΠΌΠΌΡƒΡ‚Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ срСдой. ΠŸΡ€ΠΈΠΌΠ΅Π½ΡΠ΅Ρ‚ΡΡ комбинация ΠΌΠΎΠ΄Π΅Π»Π΅ΠΉ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ сообщСний ΠΈ ΠΎΠ±Ρ‰Π΅ΠΉ памяти. Часто Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ чистая модСль ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ сообщСний, Ρ‚ΠΎΠ³Π΄Π° ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ процСссор Π² SMP-ΡƒΠ·Π»Π΅ трактуСтся ΠΊΠ°ΠΊ нСзависимый ΡƒΠ·Π΅Π» со ΡΠ²ΠΎΠ΅ΠΉ локальной ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ.

К ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡŽ, спСциалист Π² ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π½ΠΎΠΉ области, способный Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΠΈ Π·Π°ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π½Π° ΠΊΠ°ΠΊΠΎΠΌ-Π»ΠΈΠ±ΠΎ языкС программирования (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π‘ΠΈ ΠΈΠ»ΠΈ Π€ΠΎΡ€Ρ‚Ρ€Π°Π½Π΅), Π΄Π°Π»Π΅ΠΊΠΎ Π½Π΅ Π²ΡΠ΅Π³Π΄Π° Π·Π½Π°ΠΊΠΎΠΌ с ΠΏΡ€ΠΈΠ΅ΠΌΠ°ΠΌΠΈ написания ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ ΠΈ Π·Π°Ρ‡Π°ΡΡ‚ΡƒΡŽ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ привСсти свою ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ ΠΊ Π²ΠΈΠ΄Ρƒ, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠΌΠΎΠΌΡƒ Π½Π° ΠΌΠ½ΠΎΠ³ΠΎΠΏΡ€ΠΎΡ†Π΅ΡΡΠΎΡ€Π½ΠΎΠΉ машинС. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ распараллСливаниСм Ρ‚Π°ΠΊΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π·Π°Π½ΠΈΠΌΠ°ΡŽΡ‚ΡΡ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Π΅ люди — спСциалисты ΠΏΠΎ Π½Π°ΠΏΠΈΡΠ°Π½ΠΈΡŽ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ. Π­Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΡŽ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠ³ΠΎ числа программистов, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΡ… Π½Π°Π΄ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ ΠΈ ΠΏΠΎΡ‚Π΅Ρ€Π΅ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Π½Π° Ρ…отя Π±Ρ‹ минимальноС знакомство спСциалиста с ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π½ΠΎΠΉ ΠΎΠ±Π»Π°ΡΡ‚ΡŒΡŽ.

ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° ослоТняСтся Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ Π·Π° Π΄Π΅ΡΡΡ‚илСтия сущСствования ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ΠΎΠ² Π±Ρ‹Π»ΠΎ Π½Π°ΠΊΠΎΠΏΠ»Π΅Π½ΠΎ большоС число Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ для Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ΠΏΡ€Π΅Π΄ΠΌΠ΅Ρ‚Π½Ρ‹Ρ… областСй. Π­Ρ‚ΠΈ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ ΡˆΠΈΡ€ΠΎΠΊΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡŽΡ‚ΡΡ ΠΏΡ€ΠΈ написании ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Ρ… ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ. Однако для использования возмоТностСй многопроцСссорных Π­Π’Πœ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ написаниС ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ. Π’ ΡΠΈΠ»Ρƒ трудоСмкости процСсса распараллСливания ΠΈ Π±ΠΎΠ»ΡŒΡˆΠΎΠ³ΠΎ количСства Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ массовоС созданиС ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹Ρ… Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ² Π½Π΅ ΠΏΡ€Π΅Π΄ΡΡ‚авляСтся Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌ.

1.2 Автоматизация распараллСливания Π’ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ описанной ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡ‹ — созданиС систСмы Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ распараллСливания ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ. ΠŸΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎΠΉ систСмы сущСствСнно облСгчаСтся Ρ€Π°Π±ΠΎΡ‚Π° спСциалистов ΠΏΠΎ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠΌΡƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ, ΠΏΠΎΠ²Ρ‹ΡˆΠ°Π΅Ρ‚ΡΡ ΡΡ„Ρ„Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΡΡ‚ΡŒ ΠΈΡ… Ρ€Π°Π±ΠΎΡ‚Ρ‹, Ρ‡Ρ‚ΠΎ сильно сокращаСт врСмя, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠ΅ Π½Π° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΡƒ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

ΠŸΡ€ΠΎΡ†Π΅ΡΡ распараллСливания ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ Π½Π° Π΄Π²Π΅ части:

Анализ исходной ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

Π‘ΠΈΠ½Ρ‚Π΅Π· ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

Анализ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ для выявлСния скрытого ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠ·ΠΌΠ° Π² ΠΈΡΡ…ΠΎΠ΄Π½ΠΎΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅. ΠŸΡ€Π΅ΠΆΠ΄Π΅ всСго, сюда Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ выявлСниС зависимостСй ΠΏΠΎ Π΄Π°Π½Π½Ρ‹ΠΌ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°ΠΌΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Вакая Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π² ΡΠ»ΡƒΡ‡Π°Π΅, Ссли ΠΎΠ΄ΠΈΠ½ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, вычислСнноС Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ Π΄Ρ€ΡƒΠ³ΠΈΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ. НСзависимыС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Ρ‹ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎ Π½Π° Ρ€Π°Π·Π½Ρ‹Ρ… процСссорах. ΠžΠ±Ρ‹Ρ‡Π½ΠΎ этот ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏ примСняСтся ΠΊ Ρ†ΠΈΠΊΠ»Π°ΠΌ: Ссли Π½Π΅Ρ‚ зависимостСй ΠΏΠΎ Π΄Π°Π½Π½Ρ‹ΠΌ ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ Π²ΠΈΡ‚ΠΊΠ°ΠΌΠΈ Ρ†ΠΈΠΊΠ»Π°, Ρ‚ΠΎ Π²ΠΈΡ‚ΠΊΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Ρ‹ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎ Ρ€Π°Π·Π½Ρ‹ΠΌΠΈ процСссорами. Π’Π°ΠΊΠΆΠ΅ Π½Π° ΡΡ‚Π°ΠΏΠ΅ Π°Π½Π°Π»ΠΈΠ·Π° ΠΌΠΎΠ³ΡƒΡ‚ ΡΠΎΠ±ΠΈΡ€Π°Ρ‚ΡŒΡΡ свСдСния ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠΌ Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠΈ Π΄Π°Π½Π½Ρ‹Ρ… Π² ΡΠ»ΡƒΡ‡Π°Π΅, Ссли ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ систСма с Ρ€Π°ΡΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½ сбор свСдСний ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… участков ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ с Ρ†Π΅Π»ΡŒΡŽ Π²Ρ‹Π±ΠΎΡ€Π° Π½Π°ΠΈΠ»ΡƒΡ‡ΡˆΠ΅Π³ΠΎ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π° распараллСливания ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

Π‘ΠΈΠ½Ρ‚Π΅Π· ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π²Ρ‹Π±ΠΎΡ€ схСмы распрСдСлСния Π΄Π°Π½Π½Ρ‹Ρ… (Ссли Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ) ΠΈ Π²Ρ‹Ρ‡ΠΈΡΠ»Π΅Π½ΠΈΠΉ, Π° Ρ‚Π°ΠΊΠΆΠ΅ нСпосрСдствСнно Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΡŽ тСкста ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ с ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ подходящих инструмСнтов ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ программирования. ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠ΅ рассмотрСниС Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‰ΠΈΡ… ΠΏΡ€ΠΈ этом вопросов Π²Ρ‹Ρ…ΠΎΠ΄ΠΈΡ‚ Π·Π° Ρ€Π°ΠΌΠΊΠΈ Π΄Π°Π½Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹.

ВыявлСниС зависимостСй ΠΏΠΎ Π΄Π°Π½Π½Ρ‹ΠΌ Π² ΠΈΡΡ…ΠΎΠ΄Π½ΠΎΠΌ тСкстС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ являСтся ваТнСйшим этапом Π°Π½Π°Π»ΠΈΠ·Π°. Π‘ΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ выявлСния зависимостСй: статичСскиС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ тСкст ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, динамичСскиС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΠΈΡΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Ρ…ΠΎΠ΄ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… тСстовых Π΄Π°Π½Π½Ρ‹Ρ…, Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ тСсты, ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΠΌΡ‹Π΅ Π² Ρ…ΠΎΠ΄Π΅ выполнСния Π³ΠΎΡ‚ΠΎΠ²ΠΎΠΉ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

Помимо Π°Π½Π°Π»ΠΈΠ·Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ систСма Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ распараллСливания ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎΡ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Сля. Π’Π°ΠΊ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, систСма ParaWise ΠΏΡ€Π΅Π΄Π»Π°Π³Π°Π΅Ρ‚ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΉ процСсс Π°Π½Π°Π»ΠΈΠ·Π°: статичСский Π°Π½Π°Π»ΠΈΠ· исходной ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠ΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎΡ‚ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Сля Ρ‡Π΅Ρ€Π΅Π΄ΡƒΡŽΡ‚ΡΡ Π΄ΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΡ ΠΏΡ€ΠΈΠ΅ΠΌΠ»Π΅ΠΌΠΎΠ³ΠΎ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°.

Π”Ρ€ΡƒΠ³ΠΈΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€ΠΎΠΌ систСмы Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ распараллСливания ΠΌΠΎΠΆΠ΅Ρ‚ ΡΠ»ΡƒΠΆΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ V-Ray. Π­Ρ‚Π° систСма Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ статичСский Π°Π½Π°Π»ΠΈΠ· структуры ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… зависимостСй, ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅, Π° Ρ‚Π°ΠΊΠΆΠ΅ динамичСский Π°Π½Π°Π»ΠΈΠ· ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ. БистСма позволяСт ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ эффСктивныС Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ для Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹Ρ… ΠΏΠ»Π°Ρ‚Ρ„ΠΎΡ€ΠΌ ΠΏΡƒΡ‚Π΅ΠΌ Π°Π½Π°Π»ΠΈΠ·Π° Π»Π΅ΠΆΠ°Ρ‰Π΅Π³ΠΎ Π² ΠΎΡΠ½ΠΎΠ²Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ алгоритмичСского ΠΏΠΎΠ΄Ρ…ΠΎΠ΄Π°.

1.3 БтатичСский Π°Π½Π°Π»ΠΈΠ· БтатичСскиС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π°Π½Π°Π»ΠΈΠ·Π° основаны Π½Π° ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Π½ΠΈΠΈ исходного тСкста ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ. Основная идСя Ρ‚Π°ΠΊΠΈΡ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² ΠΏΠΎΡΡ‚Ρ€ΠΎΠ΅Π½ΠΈΠΈ ΠΏΠΎ ΠΈΠ½Π΄Π΅ΠΊΡΠ½Ρ‹ΠΌ выраТСниям Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°Ρ…, ΠΎΠ±Ρ€Π°Ρ‰Π°ΡŽΡ‰ΠΈΡ…ΡΡ ΠΊ ΠΌΠ°ΡΡΠΈΠ²Π°ΠΌ, систСм ΡƒΡ€Π°Π²Π½Π΅Π½ΠΈΠΉ ΠΈ Π½Π΅Ρ€Π°Π²Π΅Π½ΡΡ‚Π² с Π½Π΅ΠΈΠ·Π²Π΅ΡΡ‚Π½Ρ‹ΠΌΠΈ, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌΠΈ индСксным ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ Ρ†ΠΈΠΊΠ»ΠΎΠ². НапримСр, для ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π³ΠΎ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹:

for (i=1; i

a[i] = a[i-1] + 1;

Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ использованиС ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΈ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ массива «Π°» ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΎ ΡƒΡ€Π°Π²Π½Π΅Π½ΠΈΠ΅

<οΏ½ΠΈΠ½Π΄. Π²Ρ‹Ρ€-Π΅ Π² Π»Π΅Π²ΠΎΠΉ части> = <οΏ½ΠΈΠ½Π΄. Π²Ρ‹Ρ€-Π΅ Π² ΠΏΡ€Π°Π²ΠΎΠΉ части Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ>, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ i1 = i2−1 .

РСшСниС Π΄Π°Π½Π½ΠΎΠ³ΠΎ уравнСния ΠΏΠΎΠΊΠ°ΠΆΠ΅Ρ‚ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ зависимости ΠΌΠ΅ΠΆΠ΄Ρƒ сосСдними итСрациями Ρ†ΠΈΠΊΠ»Π°: каТдая ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ итСрация ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, вычислСнноС Π½Π° ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ.

Π‘ΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ статичСского Π°Π½Π°Π»ΠΈΠ·Π° зависимостСй, Ρ€Π°Π·Π»ΠΈΡ‡Π°ΡŽΡ‰ΠΈΠ΅ΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ построСния систСмы (Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, нСявно) ΠΏΠΎ Ρ‚Сксту ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈ Π΅Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ. Π’ ΡΠΏΠΎΡ€Π½Ρ‹Ρ… ситуациях, ΠΊΠΎΠ³Π΄Π° ΠΌΠ΅Ρ‚ΠΎΠ΄ Π½Π΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π΄ΠΎΠΊΠ°Π·Π°Ρ‚ΡŒ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ ΠΈΠ»ΠΈ отсутствиС зависимости, прСдполагаСтся Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ зависимости. Π­Ρ‚ΠΎ консСрвативноС ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ Π³Π°Ρ€Π°Π½Ρ‚ΠΈΡ€ΡƒΠ΅Ρ‚ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΡŽ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠΉ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π½ΠΎ ΡΠ²ΡΠ·Π°Π½ΠΎ с ΠΏΠΎΡ‚Π΅Ρ€Π΅ΠΉ эффСктивности ΠΈΠ·-Π·Π° нСдостаточного использования ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠ·ΠΌΠ°, Π² ΡΠ»ΡƒΡ‡Π°Π΅, Ссли Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠΉ зависимости Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Π½Π΅Ρ‚.

По ΡΠ²ΠΎΠ΅ΠΉ ΠΏΡ€ΠΈΡ€ΠΎΠ΄Π΅ статичСскиС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π°Π½Π°Π»ΠΈΠ·Π° ΠΎΠ±Π»Π°Π΄Π°ΡŽΡ‚ рядом ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ. Одно ΠΈΠ· ΠΎΡΠ½ΠΎΠ²Π½Ρ‹Ρ… связано с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ Π°Π½Π°Π»ΠΈΠ·Π΅ тСкста ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΠΈΠ·Π²Π΅ΡΡ‚Π½Ρ‹ значСния ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅. Π’ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΠΈ это относится ΠΊ Π²Ρ…ΠΎΠ΄Π½Ρ‹ΠΌ Π΄Π°Π½Π½Ρ‹ΠΌ, ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌΡ‹ΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΎΠΉ ΠΈΠ· Π²Π½Π΅ΡˆΠ½ΠΈΡ… источников. Π’ ΡΠ»ΡƒΡ‡Π°Π΅, Ссли Ρ‚Π°ΠΊΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² ΠΈΠ½Π΄Π΅ΠΊΡΠ½Ρ‹Ρ… выраТСниях ΠΏΡ€ΠΈ обращСниях ΠΊ ΠΌΠ°ΡΡΠΈΠ²Π°ΠΌ ΠΈΠ»ΠΈ Π² Π³Ρ€Π°Π½ΠΈΡ‡Π½Ρ‹Ρ… значСниях Ρ†ΠΈΠΊΠ»ΠΎΠ², статичСскиС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π°Π½Π°Π»ΠΈΠ·Π° Π½Π΅ ΡΠΌΠΎΠ³ΡƒΡ‚ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΠΊΠ°ΠΊΠΈΠ΅-Π»ΠΈΠ±ΠΎ Π²Ρ‹Π²ΠΎΠ΄Ρ‹ ΠΈ Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹Π½ΡƒΠΆΠ΄Π΅Π½Ρ‹ ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚ΡŒ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ зависимости. Π’ Ρ€ΡΠ΄Π΅ случаСв эта ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π΅ΡˆΠ΅Π½Π° с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ подсказок со ΡΡ‚ΠΎΡ€ΠΎΠ½Ρ‹ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ° исходной ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΡƒΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΡ… Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ значСния Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ….

Помимо этого, Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²ΠΎ статичСских ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² способны Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π»ΠΈΠ½Π΅ΠΉΠ½Ρ‹Π΅ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Ρ†ΠΈΠΊΠ»ΠΎΠ² индСксныС выраТСния. Π­Ρ‚ΠΎ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ Π½Π΅ ΡΠ²Π»ΡΠ΅Ρ‚ся слишком ΡΠΈΠ»ΡŒΠ½Ρ‹ΠΌ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ΠΌ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π·Π°Ρ‡Π°ΡΡ‚ΡƒΡŽ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ ΠΈΠΌΠ΅Π½Π½ΠΎ Π»ΠΈΠ½Π΅ΠΉΠ½Ρ‹Π΅ индСксныС выраТСния. Однако это прСпятствуСт ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½ΠΈΡŽ Π°Π½Π°Π»ΠΈΠ·Π° Π² Ρ‚Π°ΠΊΠΈΡ… Π²Π°ΠΆΠ½Ρ‹Ρ… случаях, ΠΊΠ°ΠΊ косвСнная индСксация, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π²Ρ‹Π·ΠΎΠ²Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π² ΠΈΠ½Π΄Π΅ΠΊΡΠ½Ρ‹Ρ… выраТСниях.

Π’ ΡΠ·Ρ‹ΠΊΠ°Ρ…, ΠΏΠΎΠ΄ΠΎΠ±Π½Ρ‹Ρ… Π‘ΠΈ, Ρƒ ΡΡ‚атичСских ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² появляСтся Π΅Ρ‰Π΅ ΠΎΠ΄Π½Π° ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ°: интСнсивноС использованиС ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ. Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, статичСскиС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π°Π½Π°Π»ΠΈΠ·Π° Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с ΡƒΠΊΠ°Π·Π°Ρ‚Слями, Ρ€Π°Π²Π½ΠΎ ΠΊΠ°ΠΊ ΠΈ Ρ Π²Π΅ΡΡŒΠΌΠ° слоТными выраТСниями, ΡΠ²Π»ΡΡŽΡ‰ΠΈΠΌΠΈΡΡ Π² ΡΠ·Ρ‹ΠΊΠ΅ Π½ΠΎΡ€ΠΌΠΎΠΉ. МоТно ΠΎΠ±ΡΠ·Π°Ρ‚ΡŒ программиста ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π±Π΅Π· использования ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… конструкций языка, Π½ΠΎ Ρ‚Π°ΠΊΠΈΠ΅ ограничСния Π½Π΅ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌΡ‹ ΠΏΡ€ΠΈ распараллСливании Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊ, ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Ρ… для выполнСния Π½Π° ΠΎΠ΄Π½ΠΎΠΏΡ€ΠΎΡ†Π΅ΡΡΠΎΡ€Π½ΠΎΠΉ машинС.

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, статичСскиС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Π°Π½Π°Π»ΠΈΠ·Π° Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ с Ρ‚Скстом ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈ ΠΈΠ·-Π·Π° этого ΠΈΠΌΠ΅ΡŽΡ‚ ряд ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠΉ, способных Π²ΠΎΡΠΏΡ€Π΅ΠΏΡΡ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½ΠΈΡŽ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠ·ΠΌΠ° Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅. Π’Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, этот Ρ‚ΠΈΠΏ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² Π°Π½Π°Π»ΠΈΠ·Π° ΡˆΠΈΡ€ΠΎΠΊΠΎ примСняСтся Π² ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… систСмах Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ распараллСливания.

1.4 ДинамичСский Π°Π½Π°Π»ΠΈΠ· ДинамичСский Π°Π½Π°Π»ΠΈΠ· ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ основан Π½Π° Π²ΡΡ‚Π°Π²ΠΊΠ΅ Π² ΠΈΡΡ…ΠΎΠ΄Π½ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ², проводящих Π°Π½Π°Π»ΠΈΠ·. ΠŸΠΎΠ»ΡƒΡ‡Π΅Π½Π½Π°Ρ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° выполняСтся Π½Π° Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ тСстовом Π½Π°Π±ΠΎΡ€Π΅ Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… (ΠΈΠ»ΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… Π½Π°Π±ΠΎΡ€Π°Ρ…), ΠΈ Π²ΠΎ Π²Ρ€Π΅ΠΌΡ выполнСния собираСтся информация ΠΎ Ρ„актичСских зависимостях, ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Π½Π° Π΄Π°Π½Π½ΠΎΠΌ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΌ Π½Π°Π±ΠΎΡ€Π΅ Π΄Π°Π½Π½Ρ‹Ρ….

Π’Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ позволяСт ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ΡŒ выявлСниС зависимостСй Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΈΡ… ситуациях, ΠΊΠΎΠ³Π΄Π° статичСский Π°Π½Π°Π»ΠΈΠ· Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π°Π½Π°Π»ΠΈΠ· происходит Π²ΠΎ Π²Ρ€Π΅ΠΌΡ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Ρƒ доступны значСния всСх ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ появляСтся Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π»ΡŽΠ±Ρ‹Π΅ ссылки Π½Π° ΡΠ»Π΅ΠΌΠ΅Π½Ρ‚Ρ‹ массивов: Ρ‡Π΅Ρ€Π΅Π· индСксныС выраТСния любой слоТности, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Π²Ρ‹Π·ΠΎΠ²Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, Ρ‡Π΅Ρ€Π΅Π· ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ. ДинамичСский Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ всСгда ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ΄Π½ΠΎΠ·Π½Π°Ρ‡Π½ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ ячСйку памяти, которая ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Π² Π»ΡŽΠ±ΠΎΠΌ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

НСдостатки динамичСского Π°Π½Π°Π»ΠΈΠ·Π° Ρ‚Π°ΠΊΠΆΠ΅ ΡΠ»Π΅Π΄ΡƒΡŽΡ‚ ΠΈΠ· Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ся Π²ΠΎ Π²Ρ€Π΅ΠΌΡ выполнСния. ДинамичСский Π°Π½Π°Π»ΠΈΠ· ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π΅ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚ Π½Π° Π΄Π°Π½Π½ΠΎΠΌ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΌ запускС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ динамичСский Π°Π½Π°Π»ΠΈΠ·, Π½ΠΈΠΊΠΎΠ³Π΄Π° нСльзя Π±Ρ‹Ρ‚ΡŒ ΡƒΠ²Π΅Ρ€Π΅Π½Π½Ρ‹ΠΌ, Ρ‡Ρ‚ΠΎ Π½Π°ΠΉΠ΄Π΅Π½Ρ‹ всС зависимости Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅. НСкоторыС зависимости ΠΌΠΎΠ³ΡƒΡ‚ Π½Π΅ ΠΏΡ€ΠΎΡΠ²ΠΈΡ‚ΡŒΡΡ Π½Π° Ρ‚Сстовых Π΄Π°Π½Π½Ρ‹Ρ…. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠΉ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π²Π°ΠΆΠ½ΠΎΠΉ Π·Π°Π΄Π°Ρ‡Π΅ΠΉ становится составлСниС Ρ…ΠΎΡ€ΠΎΡˆΠ΅Π³ΠΎ Π½Π°Π±ΠΎΡ€Π° тСстов, достаточно ΠΏΠΎΠ»Π½ΠΎ ΠΏΠΎΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰Π΅Π³ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ повСдСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

1.5 РаспараллСливаниС Π²ΠΎ Π²Ρ€Π΅ΠΌΡ выполнСния Π’ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… случаях Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π·Π°Ρ€Π°Π½Π΅Π΅ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ, Π±ΡƒΠ΄Π΅Ρ‚ Π»ΠΈ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ†ΠΈΠΊΠ» Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹ΠΌ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, это зависит ΠΎΡ‚ Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…). Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, Π² Ρ‚Π°ΠΊΠΎΠΉ ситуации распараллСливаниС считаСтся Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌ. Но ΠΈΠ½ΠΎΠ³Π΄Π° удаСтся ΡΡ„ΠΎΡ€ΠΌΡƒΠ»ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ достаточно простоС условиС, ΠΏΡ€ΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ вСроятныС зависимости ΠΏΠΎ Π΄Π°Π½Π½Ρ‹ΠΌ ΠΈΡΡ‡Π΅Π·Π°ΡŽΡ‚. Π’ΠΎΠ³Π΄Π° примСняСтся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅Π΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅: Π² ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π΄Π²Π° Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π° Π΄Π°Π½Π½ΠΎΠ³ΠΎ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹: ΠΎΠ΄ΠΈΠ½ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹ΠΉ, Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ. Π’ΠΎ Π²Ρ€Π΅ΠΌΡ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ провСряСтся Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ условия, ΠΈ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΠΈ ΠΎΡ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° выполняСтся Π»ΠΈΠ±ΠΎ ΠΎΠ΄ΠΈΠ½ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚, Π»ΠΈΠ±ΠΎ Π΄Ρ€ΡƒΠ³ΠΎΠΉ.

Аналогично Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ схСма inspector-executor. Π‘ΠΏΠΎΡ€Π½Ρ‹ΠΉ Ρ†ΠΈΠΊΠ» выполняСтся 2 Ρ€Π°Π·Π°. ΠŸΠ΅Ρ€Π²Ρ‹ΠΉ Ρ€Π°Π· — для выяснСния, являСтся Π»ΠΈ Ρ†ΠΈΠΊΠ» ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹ΠΌ. ΠŸΡ€ΠΈ этом Π½ΠΈΠΊΠ°ΠΊΠΈΡ… вычислСний Π½Π΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ся. Π’Ρ‚ΠΎΡ€ΠΎΠΉ Ρ€Π°Π· — ΡƒΠΆΠ΅ Ρ€Π΅Π°Π»ΡŒΠ½ΠΎΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ вычислСний с ΡƒΡ‡Π΅Ρ‚ΠΎΠΌ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° ΠΏΠ΅Ρ€Π²ΠΎΠ³ΠΎ ΠΏΡ€ΠΎΡ…ΠΎΠ΄Π°. Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ плюс Ρ‚Π°ΠΊΠΎΠΉ схСмы состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ, ΠΊΠΎΠ³Π΄Π° ΠΎΠ΄ΠΈΠ½ ΠΈ Ρ‚ΠΎΡ‚ ΠΆΠ΅ Ρ†ΠΈΠΊΠ» выполняСтся ΠΌΠ½ΠΎΠ³ΠΎ Ρ€Π°Π·, Π° Π΅Π³ΠΎ основныС ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΠΎΡΡ‚Π°ΡŽΡ‚ΡΡ ΠΎΠ΄Π½ΠΈΠΌΠΈ ΠΈ Ρ‚Π΅ΠΌΠΈ ΠΆΠ΅, инспСкционный ΠΏΡ€ΠΎΡ…ΠΎΠ΄ ΠΌΠΎΠΆΠ½ΠΎ Π΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π·, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΏΡ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ Π½ΠΎΠ²ΠΎΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ Ρ†ΠΈΠΊΠ»Π°.

Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, вынСсСниС Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΎΠΊ с ΡΡ‚Π°ΠΏΠ° Π°Π½Π°Π»ΠΈΠ·Π° Π½Π° ΡΡ‚Π°ΠΏ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ позволяСт ΡΠΌΡΠ³Ρ‡ΠΈΡ‚ΡŒ ограничСния ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ², рассмотрСнных Π²Ρ‹ΡˆΠ΅.

1.6 ЦСль Ρ€Π°Π±ΠΎΡ‚Ρ‹ Данная Ρ€Π°Π±ΠΎΡ‚Π° посвящСна ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌ динамичСского Π°Π½Π°Π»ΠΈΠ·Π°. Бтавится Ρ†Π΅Π»ΡŒ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ Ρ€Π°Π±ΠΎΡ‡ΡƒΡŽ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡŽ динамичСского Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π° — Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ, ΡΠΎΠ±ΠΈΡ€Π°ΡŽΡ‰Π΅ΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ях ΠΏΠΎ Π΄Π°Π½Π½Ρ‹ΠΌ Π² ΠΈΡΡ…ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅. Π’ Π±ΡƒΠ΄ΡƒΡ‰Π΅ΠΌ этот Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ ΠΌΠΎΠΆΠ΅Ρ‚ ΡΡ‚Π°Ρ‚ΡŒ Ρ‡Π°ΡΡ‚ΡŒΡŽ систСмы Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ распараллСливания ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ для систСм с ΠΎΠ±Ρ‰Π΅ΠΉ ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ.

2. ΠŸΠΎΡΡ‚Π°Π½ΠΎΠ²ΠΊΠ° Π·Π°Π΄Π°Ρ‡ΠΈ

2.1 Зависимости ΠΏΠΎ Π΄Π°Π½Π½Ρ‹ΠΌ Π—Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ ΠΏΠΎ Π΄Π°Π½Π½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‚ Π»ΡŽΠ±Ρ‹Π΅ Π΄Π²Π° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΎΠ±Ρ€Π°Ρ‰Π°ΡŽΡ‰ΠΈΠ΅ΡΡ ΠΊ ΠΎΠ΄Π½ΠΎΠΉ ячСйкС памяти, Ссли хотя Π±Ρ‹ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· Π½ΠΈΡ… ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ запись Π² ΡΡ‚Ρƒ ячСйку. БущСствуСт 3 Π²ΠΈΠ΄Π° зависимостСй ΠΏΠΎ Π΄Π°Π½Π½Ρ‹ΠΌ. ΠŸΡƒΡΡ‚ΡŒ s1 ΠΈ s2 — ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅, ΠΎΠ±Ρ€Π°Ρ‰Π°ΡŽΡ‰ΠΈΠ΅ΡΡ ΠΊ ΠΎΠ΄Π½ΠΎΠΉ ячСйкС памяти, ΠΈ s2 выполняСтся послС s1. ΠžΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ s1 ΠΈ s2 ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ ΠΎΠ΄Π½ΠΈΠΌ ΠΈ Ρ‚Π΅ΠΌ ΠΆΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π’ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΠΈ ΠΎΡ‚ ΠΏΠΎΡ€ΡΠ΄ΠΊΠ° чтСния ΠΈ Π·Π°ΠΏΠΈΡΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠΉ ячСйки зависимости ΠΏΠΎΠ΄Ρ€Π°Π·Π΄Π΅Π»ΡΡŽΡ‚ΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

прямая Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ (true dependence) — s1 записываСт Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Π² ΡΡ‡Π΅ΠΉΠΊΡƒ памяти, Π° s2 считываСт, обратная Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ (anti dependence) — s1 считываСт Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Π° s2 записываСт, Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ ΠΏΠΎ Π²Ρ‹Ρ…ΠΎΠ΄Ρƒ (output dependence) — ΠΎΠ±Π° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° s1 ΠΈ s2 производят запись Π² ΡΡ‡Π΅ΠΉΠΊΡƒ.

Π’ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΠΈΠ· ΡΡ‚ΠΈΡ… случаСв ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ s2 обязан Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ послС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° s1, поэтому Π΄Π°Π½Π½Ρ‹ΠΉ порядок Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΡ…Ρ€Π°Π½ΠΈΡ‚ΡŒ ΠΏΡ€ΠΈ распараллСливании ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Если ΠΎΠ±Π° ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° s1 ΠΈ s2 ΡΡ‡ΠΈΡ‚Ρ‹Π²Π°ΡŽΡ‚ Π΄Π°Π½Π½Ρ‹Π΅ ΠΈΠ· ΡΡ‡Π΅ΠΉΠΊΠΈ памяти, Ρ‚ΠΎ ΠΎΠ½ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Π² Π»ΡŽΠ±ΠΎΠΌ порядкС Π΄Ρ€ΡƒΠ³ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π΄Ρ€ΡƒΠ³Π°, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ Π½Π΅ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚.

ΠŸΡƒΡΡ‚ΡŒ имССтся нСсколько Π²Π»ΠΎΠΆΠ΅Π½Π½Ρ‹Ρ… Ρ†ΠΈΠΊΠ»ΠΎΠ². ΠŸΡƒΡΡ‚ΡŒ выполняСтся Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€, содСрТащийся Π² Ρ‚Π΅Π»Π΅ этих Ρ†ΠΈΠΊΠ»ΠΎΠ². НомСра ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ ΠΎΠ±ΡŠΠ΅ΠΌΠ»ΡŽΡ‰ΠΈΡ… Ρ†ΠΈΠΊΠ»ΠΎΠ² ΠΎΠ±Ρ€Π°Π·ΡƒΡŽΡ‚ Π²Π΅ΠΊΡ‚ΠΎΡ€ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ.

ΠŸΡƒΡΡ‚ΡŒ Π΅ΡΡ‚ΡŒ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ ΠΏΠΎ Π΄Π°Π½Π½Ρ‹ΠΌ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°ΠΌΠΈ s1 ΠΈ s2 с ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌΠΈ Π²Π΅ΠΊΡ‚ΠΎΡ€Π°ΠΌΠΈ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ i1 ΠΈ i2. ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎ Π²Π΅ΠΊΡ‚ΠΎΡ€Ρ‹ i1 ΠΈ i2 ΠΈΠΌΠ΅ΡŽΡ‚ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²ΡƒΡŽ Ρ€Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΡΡ‚ΡŒ, ΠΈ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΈΡ… ΡΠ»Π΅ΠΌΠ΅Π½Ρ‚Ρ‹ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΎΠ΄Π½ΠΈΠΌ ΠΈ Ρ‚Π΅ΠΌ ΠΆΠ΅ Ρ†ΠΈΠΊΠ»Π°ΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. РасстояниСм ΠΈΠ»ΠΈ шагом зависимости Π½Π°Π·ΠΎΠ²Π΅ΠΌ Π²Π΅ΠΊΡ‚ΠΎΡ€ d = i2 — i1.

Π’ Π΄Π°Π»ΡŒΠ½Π΅ΠΉΡˆΠ΅ΠΌ ΠΌΡ‹ Π±ΡƒΠ΄Π΅ΠΌ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ΡŒ ΠΎ Ρ€Π°ΡΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠ²Π°Π½ΠΈΠΈ Ρ†ΠΈΠΊΠ»ΠΎΠ² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΈΠΎΠ±Ρ€Π΅Ρ‚Π°ΡŽΡ‚ зависимости ΠΌΠ΅ΠΆΠ΄Ρƒ Π²ΠΈΡ‚ΠΊΠ°ΠΌΠΈ Ρ†ΠΈΠΊΠ»ΠΎΠ². Π’Π°ΠΊΠΈΠ΅ зависимости Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‚, Ссли ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ s1 ΠΈ s2 Π²Ρ‹ΠΏΠΎΠ»Π½ΡΠ»ΠΈΡΡŒ Π½Π° Ρ€Π°Π·Π½Ρ‹Ρ… итСрациях Ρ†ΠΈΠΊΠ»Π°, Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ d? 0. Вакая Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ сохранСния порядка выполнСния ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ. Π¦ΠΈΠΊΠ», Π½Π΅ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‰ΠΈΠΉ зависимостСй ΠΌΠ΅ΠΆΠ΄Ρƒ Π²ΠΈΡ‚ΠΊΠ°ΠΌΠΈ, ΠΌΠΎΠΆΠ½ΠΎ Π»Π΅Π³ΠΊΠΎ Ρ€Π°ΡΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΡ‚ΡŒ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π²ΠΈΡ‚ΠΊΠΈ ΠΌΠΎΠ³ΡƒΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ нСзависимо Π² Π»ΡŽΠ±ΠΎΠΌ порядкС.

2.2 БистСма Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ распараллСливания ΠŸΠ»Π°Π½ΠΈΡ€ΡƒΠ΅ΠΌΠ°Ρ систСма Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ распараллСливания состоит ΠΈΠ· ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… составных частСй:

инструмСнтатор / ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€, экспСртныС ΠΌΠΎΠ΄ΡƒΠ»ΠΈ ΠΏΠΎ Ρ€Π°ΡΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠ²Π°Π½ΠΈΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΌΠΎΠ΄ΡƒΠ»ΡŒ-ассистСнт, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠΉ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с ΡΠΈΡΡ‚Π΅ΠΌΠΎΠΉ.

Π˜ΡΡ…ΠΎΠ΄Π½Π°Ρ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° поступаСт Π½Π° Π²Ρ…ΠΎΠ΄ инструмСнтатору, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π΅ прСдставлСниС ΠΈ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΡƒΠ΅Ρ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ для динамичСского Π°Π½Π°Π»ΠΈΠ·Π°. Π—Π°Π΄Π°Ρ‡Π° Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π° — ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡƒΡŽ экспСртным модулям для распараллСливания ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. ΠŸΠΎΠ»ΡŒΠ·ΡƒΡΡΡŒ этой ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ, экспСртныС ΠΌΠΎΠ΄ΡƒΠ»ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ ΠΏΡ€ΠΈΠ½ΡΡ‚ΡŒ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΎ Ρ€Π°ΡΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠ²Π°Π½ΠΈΠΈ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… Ρ†ΠΈΠΊΠ»ΠΎΠ², ΠΎ Ρ€Π°ΡΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠΈ Π΄Π°Π½Π½Ρ‹Ρ… (Ссли Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ для ΠΌΠ°ΡˆΠΈΠ½Ρ‹ с Ρ€Π°ΡΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π½ΠΎΠΉ ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ). АссистСнт Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒ ΠΌΠΎΠ³ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π° ΠΈ ΡΠΊΡΠΏΠ΅Ρ€Ρ‚Π½Ρ‹Ρ… ΠΌΠΎΠ΄ΡƒΠ»Π΅ΠΉ, ΠΌΠΎΠ³ ΠΏΡ€Π΅Π΄ΠΎΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠ³ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°Ρ‚ΡŒ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΎ Ρ€Π°ΡΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠ²Π°Π½ΠΈΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. ПослС принятия всСх Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ вся информация направляСтся ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ ΠΌΠΎΠ΄ΡƒΠ»ΡŽ, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰Π΅ΠΌΡƒ с Ρ‚Скстом ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΈ ΠΎΠ½ Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ тСкст ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

Данная Ρ€Π°Π±ΠΎΡ‚Π° посвящСна ΠΎΠ΄Π½ΠΎΠΌΡƒ ΠΈΠ· ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚ΠΎΠ² Ρ‚Π°ΠΊΠΎΠΉ систСмы — динамичСскому Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Ρƒ. ΠŸΡ€ΠΈ этом рассматриваСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ распараллСливания Ρ†ΠΈΠΊΠ»ΠΎΠ², Ρ‡Ρ‚ΠΎ являСтся основным источником ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠ·ΠΌΠ° Π² Π±ΠΎΠ»ΡŒΡˆΠΈΠ½ΡΡ‚Π²Π΅ Π·Π°Π΄Π°Ρ‡. Под Ρ†ΠΈΠΊΠ»Π°ΠΌΠΈ здСсь ΠΈ Π΄Π°Π»Π΅Π΅ ΠΏΠΎΠ½ΠΈΠΌΠ°ΡŽΡ‚ΡΡ Ρ†ΠΈΠΊΠ»Ρ‹ Ρ‚ΠΈΠΏΠ° DO. НСсмотря Π½Π° Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡ‚ΡŒ ΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅Ρ‚ зависимости ΠΌΠ΅ΠΆΠ΄Ρƒ Π²ΠΈΡ‚ΠΊΠ°ΠΌΠΈ Ρ†ΠΈΠΊΠ»ΠΎΠ² Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ‚ΠΈΠΏΠΎΠ², Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ†ΠΈΠΊΠ»Ρ‹ Ρ‚ΠΈΠΏΠ° DO ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Π»Π΅Π³ΠΊΠΎ распараллСлСны. Π’ ΡΠ·Ρ‹ΠΊΠ΅ Π‘ΠΈ Ρ†ΠΈΠΊΠ»ΠΎΠΌ Ρ‚ΠΈΠΏΠ° DO считаСтся Ρ†ΠΈΠΊΠ» for с ΠΎΠ΄Π½ΠΎΠΉ цСлочислСнной индСксной ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΈ ΠΏΠΎΡΡ‚оянным шагом Π΅Π΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ.

2.3 Π—Π°Π΄Π°Ρ‡Π° Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π° Π—Π°Π΄Π°Ρ‡Π° Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π° Π² Ρ€Π°ΠΌΠΊΠ°Ρ… систСмы Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ распараллСливания состоит Π² ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΠΈ ΠΈΠ· ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΠΉ для распараллСливания ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ. Π’ Π΄Π°Π½Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Π΅ Π½Π΅ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‚ΡΡ вопросы, связанныС с Ρ€Π°ΡΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ для распрСдСлСнной памяти.

ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ самая главная Π·Π°Π΄Π°Ρ‡Π° Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π° — ΡΠΎΠ±Ρ€Π°Ρ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ях ΠΏΠΎ Π΄Π°Π½Π½Ρ‹ΠΌ, ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΌ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅. Π­Ρ‚Π° информация Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠ° для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ†ΠΈΠΊΠ»Ρ‹, Π° Ρ‚Π°ΠΊΠΆΠ΅ Ρ†ΠΈΠΊΠ»Ρ‹ с Ρ€Π΅Π³ΡƒΠ»ΡΡ€Π½Ρ‹ΠΌΠΈ зависимостями, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Ρ‚ΠΎΠΆΠ΅, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ, удастся Ρ€Π°ΡΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΡ‚ΡŒ. Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ ΠΎ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ях ΠΏΠΎ Π΄Π°Π½Π½Ρ‹ΠΌ Π½ΡƒΠΆΠ½Π° ΠΊΠ°ΠΊ ΠΏΡ€ΠΈ распараллСливании Π² ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΎΠ±Ρ‰Π΅ΠΉ памяти, Ρ‚Π°ΠΊ ΠΈ Π² ΠΌΠΎΠ΄Π΅Π»ΠΈ распрСдСлСнной памяти.

3. ДинамичСский Π°Π½Π°Π»ΠΈΠ·

3.1 Π‘Ρ…Π΅ΠΌΠ° Ρ€Π°Π±ΠΎΡ‚Ρ‹ динамичСского Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π° ΠžΠ±Ρ‰Π°Ρ схСма Ρ€Π°Π±ΠΎΡ‚Ρ‹ динамичСского Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π° ΠΏΠΎΠΊΠ°Π·Π°Π½Π° Π½Π° Π ΠΈΡΡƒΠ½ΠΊΠ΅ 1. На ΠΏΠ΅Ρ€Π²ΠΎΠΌ этапС Π² ΠΈΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ тСкст ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π²ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ΡΡ Π²Ρ‹Π·ΠΎΠ²Ρ‹ трассировочных Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΡ… Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Ρƒ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Ρ…ΠΎΠ΄Π΅ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Набор трассировочных Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΠΈ ΠΎΡ‚ Ρ†Π΅Π»Π΅ΠΉ ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ³ΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° Π°Π½Π°Π»ΠΈΠ·Π°. Но ΠΊΠ°ΠΊ ΠΌΠΈΠ½ΠΈΠΌΡƒΠΌ трассировочныС Π²Ρ‹Π·ΠΎΠ²Ρ‹ Π²ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ΡΡ Π½Π° Π²ΡΠ΅ доступы ΠΊ ΠΏΠ°ΠΌΡΡ‚ΠΈ, Π²Ρ…ΠΎΠ΄Ρ‹ ΠΈ Π²Ρ‹Ρ…ΠΎΠ΄Ρ‹ Ρ†ΠΈΠΊΠ»ΠΎΠ², измСнСния индСксных ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π² Ρ†ΠΈΠΊΠ»Π°Ρ….

Π”Π°Π»Π΅Π΅ получСнная ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° поступаСт Π½Π° Π²Ρ…ΠΎΠ΄ стандартного компилятора ΠΈ Π·Π°Ρ‚Π΅ΠΌ запускаСтся Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Π½Π°Π±ΠΎΡ€Π°Ρ… Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…. По ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠΉ трассировочной ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ опрСдСляСт зависимости ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°ΠΌΠΈ Π² ΠΈΡΡ…ΠΎΠ΄Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅.

Π’ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚, ΠΊΠΎΠ³Π΄Π° инструмСнтируСтся Π½Π΅ Π²ΡΡ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°, Π° Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚. Π’ ΡΡ‚ΠΎΠΌ случаС Π² ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Ρ‹ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ зависимости ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°ΠΌΠΈ, попавшими Π² ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, Ссли динамичСский Π°Π½Π°Π»ΠΈΠ· ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для уточнСния Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ², ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Ρ…, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ статичСского Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π°.

Π”Π°Π»Π΅Π΅ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°ΡŽΡ‚ΡΡ Π΄Π²Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Ρ… Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° динамичСского Π°Π½Π°Π»ΠΈΠ·Π°.

3.2 ДинамичСский Π°Π½Π°Π»ΠΈΠ· с ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π΄Π΅Ρ€Π΅Π²Π° контСкстов Π­Ρ‚Π° схСма Π°Π½Π°Π»ΠΈΠ·Π° описана Π² Ρ€Π°Π±ΠΎΡ‚Π΅ ΠΈ Π² Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΎ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½ΠΎΠΌ Π²ΠΈΠ΄Π΅ приводится здСсь.

Π’Π²Π΅Π΄Π΅ΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΡƒΡŽ Ρ‚Π΅Ρ€ΠΌΠΈΠ½ΠΎΠ»ΠΎΠ³ΠΈΡŽ.

Π”Π΅Ρ€Π΅Π²ΠΎ контСкстов (context tree) CV (p) ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ p — Π΄Π΅Ρ€Π΅Π²ΠΎ, состоящСС ΠΈΠ· Π²Π΅Ρ€ΡˆΠΈΠ½ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΡ… Ρ‚ΠΈΠΏΠΎΠ²: функция, Ρ†ΠΈΠΊΠ», ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ Π²Ρ‹Π·ΠΎΠ²Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΈΠ»ΠΈ доступа ΠΊ ΠΏΠ°ΠΌΡΡ‚ΠΈ, условный ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€, ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Ρ‚ΠΈΠΏΡ‹ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ², ΠΏΡ€ΠΈΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Π² ΡΠ·Ρ‹ΠΊΠ΅. ΠœΠ΅ΠΆΠ΄Ρƒ двумя Π²Π΅Ρ€ΡˆΠΈΠ½Π°ΠΌΠΈ Π΅ΡΡ‚ΡŒ Ρ€Π΅Π±Ρ€ΠΎ, Ссли ΠΎΠ΄Π½Π° ΠΈΠ· Π½ΠΈΡ… нСпосрСдствСнно Π²Ρ‹Π·Ρ‹Π²Π°Π΅Ρ‚ Π΄Ρ€ΡƒΠ³ΡƒΡŽ. ΠšΠΎΡ€Π΅Π½ΡŒ Π΄Π΅Ρ€Π΅Π²Π° — функция main (), основноС Ρ‚Π΅Π»ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈΠ»ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠ΅ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΠΎΠ΅ понятиС ΠΈΠ· ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ³ΠΎ языка программирования.

ΠšΠΎΠ½Ρ‚Π΅ΠΊΡΡ‚ — это ΠΏΡƒΡ‚ΡŒ ΠΎΡ‚ ΠΊΠΎΡ€Π½Ρ Π΄ΠΎ Π»ΡŽΠ±ΠΎΠΉ Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹ Π΄Π΅Ρ€Π΅Π²Π° контСкстов.

ΠŸΡƒΡΡ‚ΡŒ Π²Π΅Ρ€ΡˆΠΈΠ½Π° S (a) соотвСтствуСт ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρƒ доступа ΠΊ ΠΏΠ°ΠΌΡΡ‚ΠΈ a. ΠšΠΎΠ½Ρ‚Π΅ΠΊΡΡ‚ CV (a) ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° a — ΠΏΡƒΡ‚ΡŒ ΠΎΡ‚ ΠΊΠΎΡ€Π½Ρ Π΄Π΅Ρ€Π΅Π²Π° контСкстов ΠΊ Π²Π΅Ρ€ΡˆΠΈΠ½Π΅ S (a).

ΠšΠΎΠ½Ρ‚Π΅ΠΊΡΡ‚ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ (Ρ†ΠΈΠΊΠ»Π°) — ΠΏΡƒΡ‚ΡŒ ΠΎΡ‚ ΠΊΠΎΡ€Π½Ρ Π΄Π΅Ρ€Π΅Π²Π° контСкстов ΠΊ Π²Π΅Ρ€ΡˆΠΈΠ½Π΅, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ этой Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ (Ρ†ΠΈΠΊΠ»Ρƒ).

Рассмотрим ΠΏΡ€ΠΈΠΌΠ΅Ρ€.

int A[10], B[10];

void main () {

for (int i=0; i<10; i++)/* f1 */

proc (i);/* st1 */

}

void proc (int i) {

for (int m=0; m<10; m++) {/* f2 */

if (i%2 == 0)/* if1 */

A[m] = …;/* st2 */

else

… = A[m]; /* st3 */

B[m] = …;/* st4 */

}

}

Π’ ΡΡ‚ΠΎΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ st2 ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ контСкст C (a) = (main f1 st1 proc f2 if1 st2). Π’ ΡΠ»ΡƒΡ‡Π°Π΅ наличия рСкурсивной Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ rfunc контСкст ΠΌΠΎΠ³ Π±Ρ‹ Π±Ρ‹Ρ‚ΡŒ Ρ‚Π°ΠΊΠΈΠΌ: C (a) = (… rfunc st1 rfunc st1 rfunc …).

Π¦Π΅ΠΏΠΎΡ‡ΠΊΠ° Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠ² ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ (iteration vector chain) IVC (a) — это список Π½ΠΎΠΌΠ΅Ρ€ΠΎΠ² ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΡƒΠ·Π»Π°-Ρ†ΠΈΠΊΠ»Π° контСкста C (a). Если контСкст Π½Π΅ ΡΠΎΠ΄Π΅Ρ€ΠΆΠΈΡ‚ Ρ†ΠΈΠΊΠ»ΠΎΠ², Ρ‚ΠΎ ΡΠΏΠΈΡΠΎΠΊ Π½Π΅ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚ΡŒ Π½ΠΈ ΠΎΠ΄Π½ΠΎΠ³ΠΎ элСмСнта.

Π¦Π΅ΠΏΠΎΡ‡ΠΊΠ° Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠ² ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ относится ΠΊ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΌΡƒ ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρƒ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, поэтому ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ нСсколько Ρ€Π°Π·Π½Ρ‹Ρ… IVC. Π’Π°ΠΊ, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, для ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° st2 ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ IVC (a) = (1, 4) ΠΈΠ»ΠΈ IVC (a) = (4, 1).

Π’ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ Ρ‚ΠΎΡ‡ΠΊΠ° доступа a (virtual point) — это ΠΏΠ°Ρ€Π° VP (a) = (C (a), IVC (a)).

Для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ячСйки памяти Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ Ρ…Ρ€Π°Π½ΠΈΡ‚ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Ρ‹Π΅ Ρ‚ΠΎΡ‡ΠΊΠΈ послСднСй записи ΠΈ Π²ΡΠ΅Ρ… Ρ‡Ρ‚Π΅Π½ΠΈΠΉ с ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° послСднСй записи. Π­Ρ‚ΠΎ позволяСт ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠΈΡ‚ΡŒ всС зависимости ΠΏΠΎ Π΄Π°Π½Π½Ρ‹ΠΌ, Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‰ΠΈΠ΅ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅.

Алгоритм нахоТдСния прямых зависимостСй.

Для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ чтСния ar:

ΠžΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ ячСйку памяти, Ρ‡ΠΈΡ‚Π°Π΅ΠΌΡƒΡŽ ar.

ΠžΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ Π²ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½ΡƒΡŽ Ρ‚ΠΎΡ‡ΠΊΡƒ VP (aw) послСднСй записи aw Π² ΡΡ‚Ρƒ ячСйку.

Найти контСкст CL — длиннСйший ΠΎΠ±Ρ‰ΠΈΠΉ ΠΏΠΎΠ΄ΠΏΡƒΡ‚ΡŒ контСкстов C (ar) ΠΈ C (aw).

Найти контСкст Cm — длиннСйший контСкст, ΡΠ²Π»ΡΡŽΡ‰ΠΈΠΉΡΡ подконтСкстом контСкста CL Ρ‚Π°ΠΊΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠΈ IVC (ar) ΠΈ IVC (aw) содСрТат ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Π΅ значСния Π½Π° ΠΎΡ‚Ρ€Π΅Π·ΠΊΠ΅, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΌ контСксту Cm.

ΠŸΡƒΡΡ‚ΡŒ r ΠΈ w — Π²Π΅ΠΊΡ‚ΠΎΡ€Ρ‹, ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΠΎΡ‚Ρ€Π΅Π·ΠΊΠ°ΠΌΠΈ Ρ†Π΅ΠΏΠΎΡ‡Π΅ΠΊ IVC (ar) ΠΈ IVC (aw), Π½Π΅ Π²ΠΎΡˆΠ΅Π΄ΡˆΠΈΠΌΠΈ Π² ΠΊΠΎΠ½Ρ‚Скст Cm. Π’Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ расстояниС d = r — w, Ссли dim®>0 ΠΈ ΠΏΠΎΠ»ΠΎΠΆΠΈΡ‚ΡŒ d=[] ΠΈΠ½Π°Ρ‡Π΅.

ΠŸΡƒΡΡ‚ΡŒ f1 — самый «Π³Π»ΡƒΠ±ΠΎΠΊΠΈΠΉ» Ρ†ΠΈΠΊΠ» Π² ΠΊΠΎΠ½Ρ‚СкстС Π‘L. Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ ΠΌΠ΅ΠΆΠ΄Ρƒ итСрациями Ρ†ΠΈΠΊΠ»Π° f1 (ΠΈ ΠΎΠ±Ρ€Π°ΠΌΠ»ΡΡŽΡ‰ΠΈΡ… Ρ†ΠΈΠΊΠ»ΠΎΠ²) с Ρ€Π°ΡΡΡ‚ояниСм d.

ВмСсто ΠΏ. 6 ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΌΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π°ΠΌΠΈ Π² Ρ‚Π΅Π»Π΅ Ρ†ΠΈΠΊΠ»Π°. ΠŸΡƒΡΡ‚ΡŒ st1 ΠΈ st2 — Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹ C (ar) ΠΈ C (aw), нСпосрСдствСнно ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π·Π° CL. Π”ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ st1 ΠΎΡ‚ st2 с Ρ€Π°ΡΡΡ‚ояниСм d. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π² Π΄Π°Π½Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Π΅ рассматриваСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ распараллСливаниС Ρ†ΠΈΠΊΠ»ΠΎΠ², Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π΅ этого Π½Π΅ Π΄Π΅Π»Π°Π΅Ρ‚ся.

ΠŸΠΎΡ…ΠΎΠΆΠΈΠ΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ Π½ΡƒΠΆΠ½ΠΎ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ для нахоТдСния ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹Ρ… ΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚Π΅ΠΉ ΠΏΠΎ Π²Ρ‹Ρ…ΠΎΠ΄Ρƒ. ΠŸΡ€ΠΈ Π½Π°Ρ…ΠΎΠΆΠ΄Π΅Π½ΠΈΠΈ зависимостСй ΠΏΠΎ Π²Ρ‹Ρ…ΠΎΠ΄Ρƒ Π½Π°Π΄ΠΎ для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ записи ΠΈΡΠΊΠ°Ρ‚ΡŒ ΠΏΡ€Π΅Π΄ΡˆΠ΅ΡΡ‚Π²ΡƒΡŽΡ‰ΡƒΡŽ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΡŽ записи. Для нахоТдСния ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹Ρ… зависимостСй Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ для всСх ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ записи ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Ρ‚ΡŒ всС ΠΏΡ€Π΅Π΄ΡˆΠ΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΈΠΌ Ρ‡Ρ‚Сния ячСйки памяти с ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° послСднСй записи Π² Ρ‚Ρƒ ΠΆΠ΅ ячСйку.

3.3 ДинамичСский Π°Π½Π°Π»ΠΈΠ· с ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Ρ… Π½ΠΎΠΌΠ΅Ρ€ΠΎΠ² ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ Π”Ρ€ΡƒΠ³ΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΊ Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π΅ΡΠΊΠΎΠΌΡƒ Π°Π½Π°Π»ΠΈΠ·Ρƒ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ понятиС Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Ρ… Π½ΠΎΠΌΠ΅Ρ€ΠΎΠ² ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ (GIN — Global Iteration Number). Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ всС ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ всСх Ρ†ΠΈΠΊΠ»ΠΎΠ² Π½ΡƒΠΌΠ΅Ρ€ΡƒΡŽΡ‚ΡΡ ΠΏΠΎ ΠΏΠΎΡ€ΡΠ΄ΠΊΡƒ. НапримСр, Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅

for (i=1; i<=3; i++)

for (j=1; j<=3; j++)

A[f1(i, j)]= … A[f2(i, j)] …;

Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Π΅ Π½ΠΎΠΌΠ΅Ρ€Π° ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ Π±ΡƒΠ΄ΡƒΡ‚ распрСдСлСны ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

(1,-)

(1,1)

(1,2)

(1,3)

(2,-)

(2,1)

(2,2)

(2,3)

(3,-)

(3,1)

(3,2)

(3,3)

Π—Π΄Π΅ΡΡŒ Π² ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΊΠ»Π΅Ρ‚ΠΊΠ΅ Π² ΠΏΠ΅Ρ€Π²ΠΎΠΉ строчкС ΠΏΠΎΠΊΠ°Π·Π°Π½Ρ‹ значСния индСксов Ρ†ΠΈΠΊΠ»ΠΎΠ² (i, j), Π° Π²ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΉ — ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠΉ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹ΠΉ Π½ΠΎΠΌΠ΅Ρ€ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ. Π—Π°ΠΏΠΈΡΡŒ (i,-) ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π½Π°Ρ‡Π°Π»Π° ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ внСшнСго Ρ†ΠΈΠΊΠ»Π° Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ Ρ†ΠΈΠΊΠ» Π΅Ρ‰Π΅ Π½Π΅ Π°ΠΊΡ‚ΠΈΠ²Π΅Π½.

Π”Π°Π½Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для нахоТдСния зависимостСй ΠΌΠ΅ΠΆΠ΄Ρƒ итСрациями Ρ†ΠΈΠΊΠ»ΠΎΠ². ΠŸΡ€ΠΈ Π²Ρ…ΠΎΠ΄Π΅ Π² Ρ†ΠΈΠΊΠ» запоминаСтся GIN ΠΏΠ΅Ρ€Π²ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, ΠΏΡ€ΠΈ Π²Ρ…ΠΎΠ΄Π΅ Π² ΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΡƒΡŽ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΡŽ Ρ†ΠΈΠΊΠ»Π° запоминаСтся GIN Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ, Π° GIN ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅ΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ добавляСтся Π² ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹ΠΉ Π±ΡƒΡ„Π΅Ρ€, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ записаны k ΠΏΠΎΡΠ»Π΅Π΄Π½ΠΈΡ… ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ этого Ρ†ΠΈΠΊΠ»Π° (k — это Π΅ΠΌΠΊΠΎΡΡ‚ΡŒ Π±ΡƒΡ„Π΅Ρ€Π°). ΠŸΡ€ΠΈ вычислСнии расстояний для зависимостСй этот Π±ΡƒΡ„Π΅Ρ€ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΎΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒΡΡ Π² ΠΏΠΎΠΈΡΠΊΠ°Ρ… подходящСй ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ, поэтому ΠΌΠ΅Ρ‚ΠΎΠ΄ позволяСт ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΠΈΡ‚ΡŒ расстояниС, Ссли ΠΎΠ½ΠΎ Π½Π΅ ΠΏΡ€Π΅Π²ΠΎΡΡ…ΠΎΠ΄ΠΈΡ‚ k, Π»ΠΈΠ±ΠΎ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ΠΎ ΠΏΡ€Π΅Π²Ρ‹ΡˆΠ°Π΅Ρ‚ k. Для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ячСйки памяти запоминаСтся GIN послСднСй записи для отслСТивания прямых зависимостСй ΠΈ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚Π΅ΠΉ ΠΏΠΎ Π²Ρ‹Ρ…ΠΎΠ΄Ρƒ, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΡ€Π΅Π΄ΡˆΠ΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Ρ‡Ρ‚Π΅Π½ΠΈΠΉ, для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΡ‚ΡΠ»Π΅ΠΆΠΈΠ²Π°Ρ‚ΡŒ Ρ‚Π°ΠΊΠΆΠ΅ ΠΈ ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹Π΅ зависимости.

Рассмотрим случай, ΠΊΠΎΠ³Π΄Π° нСкоторая ячСйка массива A Π·Π°ΠΏΠΈΡΡ‹Π²Π°Π΅Ρ‚ся Π½Π° ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ (2, 2), Π° Π·Π°Ρ‚Π΅ΠΌ читаСтся Π½Π° ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ (2, 3). К ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρƒ чтСния состояниС выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π±ΡƒΠ΄Π΅Ρ‚ Ρ‚Π°ΠΊΠΈΠΌ:

Π¦ΠΈΠΊΠ»

Начало Ρ†ΠΈΠΊΠ»Π°

ВСкущая итСрация

Π‘ΡƒΡ„Π΅Ρ€

i

j

7,6

Π—Π°ΠΏΠΈΡΡŒ Π² ΡΡ‡Π΅ΠΉΠΊΡƒ массива ΠΈΠΌΠ΅Π»Π° GIN = 7. Π­Ρ‚ΠΎ Π±Ρ‹Π»ΠΎ Π½Π° Ρ‚ΠΎΠΉ ΠΆΠ΅ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ внСшнСго Ρ†ΠΈΠΊΠ»Π°. ΠŸΡ€ΠΎΡΠΌΠΎΡ‚Ρ€Π΅Π² Π±ΡƒΡ„Π΅Ρ€ Ρ†ΠΈΠΊΠ»Π° ΠΏΠΎ j, ΠΌΠΎΠΆΠ½ΠΎ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚ΡŒ расстояниС ΠΌΠ΅ΠΆΠ΄Ρƒ записью ΠΈ Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ΠΌ, Ρ€Π°Π²Π½ΠΎΠ΅ 1.

Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΡƒΡΡ‚ΡŒ запись ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠ»Π°ΡΡŒ Π½Π° ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ (1,1), Π° Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ Π½Π° ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ (3,3). БостояниС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π² ΠΌΠΎΠΌΠ΅Π½Ρ‚ чтСния:

Π¦ΠΈΠΊΠ»

Начало Ρ†ΠΈΠΊΠ»Π°

ВСкущая итСрация

Π‘ΡƒΡ„Π΅Ρ€

i

5,1

j

11,10

Π—Π°ΠΏΠΈΡΡŒ Π² ΠΌΠ°ΡΡΠΈΠ² (GIN = 2) ΠΏΡ€ΠΎΠΈΠ·ΠΎΡˆΠ»Π° Π½Π΅ Π² Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ Ρ†ΠΈΠΊΠ»Π΅ (2 < 10), Π° Π² ΠΎΠ±ΡŠΠ΅ΠΌΠ»ΡŽΡ‰Π΅ΠΌ Ρ†ΠΈΠΊΠ»Π΅ (1 <= 2 <= 9). ΠŸΡ€ΠΎΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ Π±ΡƒΡ„Π΅Ρ€ Ρ†ΠΈΠΊΠ»Π° ΠΏΠΎ i Π² ΠΏΠΎΠΈΡΠΊΠ°Ρ… ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ с GIN <= 2, ΠΌΡ‹ ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅ΠΌ расстояниС, Ρ€Π°Π²Π½ΠΎΠ΅ 2.

Π’ ΡΡƒΡ‰Π½ΠΎΡΡ‚ΠΈ, Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ позволяСт Π΄Π΅Π»Π°Ρ‚ΡŒ Ρ‚ΠΎ ΠΆΠ΅ ΡΠ°ΠΌΠΎΠ΅, Ρ‡Ρ‚ΠΎ ΠΈ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΉ, Π½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π½Π° ΡƒΡ€ΠΎΠ²Π½Π΅ Ρ†Π΅Π»Ρ‹Ρ… ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ Ρ†ΠΈΠΊΠ»ΠΎΠ², Π° Π½Π΅ ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² ΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΏΡ€ΠΈ этом Π΄Ρ€ΡƒΠ³ΠΈΠ΅ тСхничСскиС Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ. Помимо этого, ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰ΠΈΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ Π²Π²ΠΎΠ΄ΠΈΡ‚ ΡƒΠ΄ΠΎΠ±Π½ΠΎΠ΅ понятиС Π΄Π΅Ρ€Π΅Π²Π° контСкстов, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ использовано Ρ‚Π°ΠΊΠΆΠ΅ ΠΈ Π΄Π»Ρ ΠΈΠ½Ρ‹Ρ… Ρ†Π΅Π»Π΅ΠΉ ΠΊΡ€ΠΎΠΌΠ΅ динамичСского Π°Π½Π°Π»ΠΈΠ·Π°. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π² Ρ€Π°ΠΌΠΊΠ°Ρ… Π΄Π°Π½Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ рСализовывался ΠΌΠ΅Ρ‚ΠΎΠ΄ Π΄Π΅Ρ€Π΅Π²Π° контСкстов.

3.4 ΠŸΡ€Π΅ΠΈΠΌΡƒΡ‰Π΅ΡΡ‚Π²Π° ΠΈ Π½Π΅Π΄ΠΎΡΡ‚Π°Ρ‚ΠΊΠΈ динамичСского Π°Π½Π°Π»ΠΈΠ·Π° По ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ со ΡΡ‚атичСским Π°Π½Π°Π»ΠΈΠ·ΠΎΠΌ динамичСский Π°Π½Π°Π»ΠΈΠ· ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ рядом прСимущСств:

динамичСский Π°Π½Π°Π»ΠΈΠ· Π½ΠΈΠΊΠ°ΠΊ Π½Π΅ Π·Π°Π²ΠΈΡΠΈΡ‚ ΠΎΡ‚ Π²ΠΈΠ΄Π° индСксных Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ, Π²ΡΡ‚Ρ€Π΅Ρ‡Π°ΡŽΡ‰ΠΈΡ…ΡΡ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅. Для любого выраТСния вычисляСтся Π΅Π³ΠΎ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΈ статичСском Π°Π½Π°Π»ΠΈΠ·Π΅. Как слСдствиС, динамичСский Π°Π½Π°Π»ΠΈΠ· ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с ΠΊΠΎΡΠ²Π΅Π½Π½ΠΎΠΉ индСксациСй, Π²Ρ‹Π·ΠΎΠ²Π°ΠΌΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π² ΠΈΠ½Π΄Π΅ΠΊΡΠ½Ρ‹Ρ… выраТСниях.

динамичСский Π°Π½Π°Π»ΠΈΠ· Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ Π² Ρ‚Π΅Ρ€ΠΌΠΈΠ½Π°Ρ… ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… ячССк памяти, Ρ‡Ρ‚ΠΎ позволяСт ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ Π°Π½Π°Π»ΠΈΠ· Π΄Π°ΠΆΠ΅ ΠΏΡ€ΠΈ интСнсивном использовании ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ. БтатичСскиС ΠΆΠ΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹, ΠΊΠ°ΠΊ ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, Π½Π΅ ΠΌΠΎΠ³ΡƒΡ‚ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΠ΅ с ΡƒΠΊΠ°Π·Π°Ρ‚Слями.

динамичСский Π°Π½Π°Π»ΠΈΠ· всСгда Π΄Π°Π΅Ρ‚ ΠΏΠΎΠ»Π½ΡƒΡŽ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½Ρƒ зависимостСй для Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ³ΠΎ запуска ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ с Π΄Π°Π½Π½Ρ‹ΠΌ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹ΠΌ Π½Π°Π±ΠΎΡ€ΠΎΠΌ Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…. Если Ρ…ΠΎΠ΄ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ зависит Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΡ‚ Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… (Π½Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ся, Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€ случайных чисСл), Ρ‚ΠΎ Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π΅ΡΠΊΠΈΠΉ Π°Π½Π°Π»ΠΈΠ· Π΄Π°Π΅Ρ‚ ΠΏΠΎΠ»Π½ΡƒΡŽ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½Ρƒ зависимостСй для любого запуска ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ с ΡΡ‚ΠΈΠΌ Π½Π°Π±ΠΎΡ€ΠΎΠΌ Π΄Π°Π½Π½Ρ‹Ρ….

динамичСский Π°Π½Π°Π»ΠΈΠ· Π½ΠΈΠΊΠΎΠ³Π΄Π° Π½Π΅ ΡƒΠΊΠ°ΠΆΠ΅Ρ‚ Π½Π° Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² Ρ‚Π°ΠΌ, Π³Π΄Π΅ Π΅Π΅ Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ Π½Π΅Ρ‚.

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ нСдостатки динамичСского Π°Π½Π°Π»ΠΈΠ·Π° Ρ‚Π°ΠΊΠΆΠ΅ обусловлСны Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒΡŽ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹:

ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ всСгда Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡ‚ΡŒΡΡ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Π΅ значСния Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ, Ρ‚ΠΎ Π΄Π°ΠΆΠ΅ Ссли нас ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΡƒΡŽΡ‚ зависимости Π² Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ нСбольшом Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΌΡ‹ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ всС ΠΏΡ€Π΅Π΄ΡˆΠ΅ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΏΡƒΡΡ‚ΡŒ ΠΈ Π±Π΅Π· Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π°Π½Π°Π»ΠΈΠ·ΠΈΡ€ΡƒΡŽΡ‰Π΅ΠΉ систСмы. Для Ρ„Ρ€Π°Π³ΠΌΠ΅Π½Ρ‚ΠΎΠ², Π±Π»ΠΈΠ·ΠΊΠΈΡ… ΠΊ ΠΊΠΎΠ½Ρ†Ρƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Ρ‚Π°ΠΊΠΈΠ΅ ΠΏΠΎΡ‚Π΅Ρ€ΠΈ ΠΌΠΎΠ³ΡƒΡ‚ сущСствСнно ΠΏΠΎΠ²Π»ΠΈΡΡ‚ΡŒ Π½Π° Π²Ρ€Π΅ΠΌΡ Π°Π½Π°Π»ΠΈΠ·Π°.

Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ для ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ячСйки памяти Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄Π°Π½Π½Ρ‹Π΅, Ρ‚ΠΎ ΠΌΡ‹ Π²Ρ‹Π½ΡƒΠΆΠ΄Π΅Π½Ρ‹ Π»ΠΈΠ±ΠΎ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°Ρ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ ΠΈΠ½Ρ‚Π΅Ρ€Π΅ΡΡƒΡŽΡ‰Π΅ΠΉ нас ячСйки, сниТая Ρ‚ΠΎΡ‡Π½ΠΎΡΡ‚ΡŒ Π°Π½Π°Π»ΠΈΠ·Π°, Π»ΠΈΠ±ΠΎ сущСствСнно ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Ρ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ исходных Π΄Π°Π½Π½Ρ‹Ρ… ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ Π·Π°Π΄Π°Ρ‡ΠΈ, Ρ‡Ρ‚ΠΎ, Π±Ρ‹Ρ‚ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚, Π½Π΅ Π²ΠΏΠΎΠ»Π½Π΅ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ ΠΎΡ‚Ρ€Π°ΠΆΠ°Π΅Ρ‚ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΏΡ€ΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΈ Ρ€Π΅Π°Π»ΡŒΠ½Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡.

динамичСский Π°Π½Π°Π»ΠΈΠ· ΠΌΠΎΠΆΠ΅Ρ‚ Π΄Π°Ρ‚ΡŒ ΠΊΠ°Ρ€Ρ‚ΠΈΠ½Ρƒ зависимостСй Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π½Π°Π±ΠΎΡ€Π° Π²Ρ…ΠΎΠ΄Π½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ…. ΠŸΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° Π΄Ρ€ΡƒΠ³ΠΎΠΌ Π½Π°Π±ΠΎΡ€Π΅ Π΄Π°Π½Π½Ρ‹Ρ… зависимости ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒΡΡ. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ динамичСский Π°Π½Π°Π»ΠΈΠ· ΠΌΠΎΠΆΠ΅Ρ‚ ΡƒΠΊΠ°Π·Π°Ρ‚ΡŒ Π½Π° Π½Π΅Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ², Ρ‚ΠΎΠ³Π΄Π° ΠΊΠ°ΠΊ Π½Π° ΡΠ°ΠΌΠΎΠΌ Π΄Π΅Π»Π΅ ΠΎΠ½ΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ зависимыми. Π­Ρ‚ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ привСсти ΠΊ Π³Π΅Π½Π΅Ρ€Π°Ρ†ΠΈΠΈ Π½Π΅ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎΠΉ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Ρ‡Ρ‚ΠΎ, бСзусловно, являСтся самой Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠΎΠΉ ΠΏΡ€ΠΈ использовании динамичСского Π°Π½Π°Π»ΠΈΠ·Π°.

ПослСдняя ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Π½Π΅ΠΎΠ±Ρ…одимости составлСния систСмы тСстов, достаточно ΠΏΠΎΠ»Π½ΠΎ ΠΎΡ‚Ρ€Π°ΠΆΠ°ΡŽΡ‰Π΅ΠΉ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… ситуациях. ПослС провСдСния Π°Π½Π°Π»ΠΈΠ·Π° Π½Π° Ρ‚Π°ΠΊΠΎΠΉ систСмС тСстов Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Π΅ зависимости ΠΈ ΡƒΠΆΠ΅ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½Π΅Π½Π½Ρ‹Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ принятии Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ ΠΎ Ρ€Π°ΡΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠ²Π°Π½ΠΈΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

4. ΠŸΡ€Π°ΠΊΡ‚ΠΈΡ‡Π΅ΡΠΊΠ°Ρ рСализация Для Ρ€Π°Π±ΠΎΡ‚Ρ‹ динамичСского Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π° ΠΏΠΎ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½ΠΎΠΉ схСмС Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π΄Π²Π° ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π° систСмы:

ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ-инструмСнтатор (Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Π² Ρ€Π°ΠΌΠΊΠ°Ρ… ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹);

Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ, ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‰ΡƒΡŽ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π°.

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°-Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ Π±Ρ‹Π»Π° Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Π½Π° ΡΠ·Ρ‹ΠΊΠ΅ C++. Π­Ρ‚ΠΎΡ‚ язык Π»Π΅Π³ΠΊΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ использован совмСстно с ΡΠ·Ρ‹ΠΊΠ°ΠΌΠΈ Π‘ΠΈ ΠΈ Π€ΠΎΡ€Ρ‚Ρ€Π°Π½, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡˆΠΈΡ€ΠΎΠΊΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ для программирования Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡.

Для совмСстной Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π° с Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ ΠΊΠΎΠΌΠΏΠΎΠ½Π΅Π½Ρ‚Π°ΠΌΠΈ систСмы Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ распараллСливания Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΡ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ интСрфСйс Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π°, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ инструмСнтатор, Π° Ρ‚Π°ΠΊΠΆΠ΅ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ Π²Ρ‹Π΄Π°Ρ‡ΠΈ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΎΠΌ.

Помимо этого Π΄ΠΎΠ»ΠΆΠ½ΠΎ Π±Ρ‹Ρ‚ΡŒ прСдусмотрСно срСдство, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π΅Π΅ ΡΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Π΅ ΠΏΡ€ΠΈ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… запусках ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

4.1 Π˜Π½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡ Π—Π°Π΄Π°Ρ‡Π° инструмСнтации состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ Π²ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π² ΠΈΡΡ…ΠΎΠ΄Π½ΡƒΡŽ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π²Ρ‹Π·ΠΎΠ²Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π°, ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‰ΠΈΠ΅ Ρ…ΠΎΠ΄ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. ΠŸΡ€ΠΈ этом Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΡΠΎΠ±Π»ΡŽΠ΄Π°Ρ‚ΡŒΡΡ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ трСбования:

Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΡΠΎΠΎΠ±Ρ‰Π°Ρ‚ΡŒ Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Ρƒ врСмя ΠΆΠΈΠ·Π½ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ рСгистрации ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π² Π½Π°Ρ‡Π°Π»Π΅ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΆΠΈΠ·Π½ΠΈ ΠΎΡ‚ΠΌΠ΅Π½Ρ‹ рСгистрации ΠΏΠΎ Π΅Π³ΠΎ ΠΎΠΊΠΎΠ½Ρ‡Π°Π½ΠΈΠΈ, Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ всС доступы ΠΊ Π΄Π°Π½Π½Ρ‹ΠΌ с ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ ячСйки ΠΈ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ (Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ ΠΈΠ»ΠΈ запись),

Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒΡΡ Π²Ρ…ΠΎΠ΄Ρ‹ ΠΈ Π²Ρ‹Ρ…ΠΎΠ΄Ρ‹ ΠΏΠΎΠ΄ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ, Π½Π°Ρ‡Π°Π»ΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ Ρ†ΠΈΠΊΠ»Π°, Π΅Π³ΠΎ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅, Π° Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ ΠΊ Π½ΠΎΠ²ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ввСсти систСму ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΡƒΡŽ ΡΠΎΠΎΡ‚Π½ΠΎΡΠΈΡ‚ΡŒ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ с ΠΈΡΡ…ΠΎΠ΄Π½Ρ‹ΠΌ тСкстом ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹.

Для Π±ΡƒΠ΄ΡƒΡ‰Π΅Π³ΠΎ развития Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ ΠΈΠ½ΡΡ‚Ρ€ΡƒΠΌΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ всС ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠ΅ΡΡ конструкции ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠΎΠ³ΠΎ языка программирования, Π² Ρ‚ΠΎΠΌ числС условныС ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Ρ‹. Π­Ρ‚ΠΎ ΠΏΠΎΠ·Π²ΠΎΠ»ΠΈΡ‚ Π²Ρ‹ΡΠ²Π»ΡΡ‚ΡŒ различия Π² ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠΈ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… вСтвях выполнСния.

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° инструмСнтатора вСдСтся с ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Sage++, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰Π΅ΠΉ синтаксичСский Ρ€Π°Π·Π±ΠΎΡ€ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π½Π° ΡΠ·Ρ‹ΠΊΠ΅ Π‘ΠΈ. Π­Ρ‚Π° Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° Π²Π²ΠΎΠ΄ΠΈΡ‚ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Sage создаСт Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π΅ прСдставлСниС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€ΠΈ Ρ„ΠΎΡ€ΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Π΅Π΅ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½Π½Ρ‹Ρ… Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠ². ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π±Ρ‹Π»ΠΎ принято Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ Sage Ρ‚Π°ΠΊΠΆΠ΅ ΠΈ Π² Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π΅. Π’Π°ΠΊΠΆΠ΅ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΠΎΠ»ΡƒΡ‡Π°Ρ‚ΡŒ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Π½ΠΎΠΌΠ΅Ρ€Π°Ρ… строк исходной ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ для обСспСчСния возмоТности ΡƒΠ΄ΠΎΠ±Π½ΠΎΠ³ΠΎ отобраТСния Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŽ.

РСгистрация ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠ° ΠΈΠ·-Π·Π° сущСствования Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Ρ… ΠΈ Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π΅ΡΠΊΠΈΡ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ Π² Ρ€Π°Π·Π½Ρ‹Π΅ ΠΌΠΎΠΌΠ΅Π½Ρ‚Ρ‹ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ ΠΎΠ΄Π½Π° ΠΈ Ρ‚Π° ΠΆΠ΅ ячСйка памяти ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΡ‚Π½ΠΎΡΠΈΡ‚ΡŒΡΡ ΠΊ Ρ€Π°Π·Π½Ρ‹ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ, ΠΏΡ€ΠΈΡ‡Π΅ΠΌ обращСния ΠΊ Π²Π½ΠΎΠ²ΡŒ созданной ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π½Π΅ ΡΠΎΠ·Π΄Π°ΡŽΡ‚ зависимости ΠΎΡ‚ ΠΎΠ±Ρ€Π°Ρ‰Π΅Π½ΠΈΠΉ ΠΊ Π΄Ρ€ΡƒΠ³ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, Ρ€Π°ΡΠΏΠΎΠ»Π°Π³Π°Π²ΡˆΠ΅ΠΉΡΡ Ρ€Π°Π½Π΅Π΅ Π² Ρ‚ΠΎΠΉ ΠΆΠ΅ ячСйкС памяти. ΠŸΡ€ΠΈ рСгистрации Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Ρƒ ΡΠΎΠΎΠ±Ρ‰Π°ΡŽΡ‚ΡΡ адрСс Π½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎΠΉ ячСйки памяти, ΠΎΡ‚Π²Π΅Π΄Π΅Π½Π½ΠΎΠΉ ΠΏΠΎΠ΄ массив, ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ массива ΠΏΠΎ Π²ΡΠ΅ΠΌ измСрСниям. БкалярныС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΡΡ‡ΠΈΡ‚Π°ΡŽΡ‚ΡΡ массивами с Π½ΡƒΠ»Π΅Π²Ρ‹ΠΌ числом ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠΉ. НСдинамичСскиС (Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Ρ‹Π΅ ΠΈ Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅) ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π°ΡŽΡ‚ Π½ΠΎΠΌΠ΅Ρ€-ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€, Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹ΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ Sage. Для динамичСских ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€Ρ‹ Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ Π½Π°Π·Π½Π°Ρ‡Π°Π΅Ρ‚ ΡΠ°ΠΌΠΎΡΡ‚ΠΎΡΡ‚Π΅Π»ΡŒΠ½ΠΎ, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ информация ΠΎ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ ΠΈ Ρ‡ΠΈΡΠ»Π΅ Ρ‚Π°ΠΊΠΈΡ… ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… появляСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π²ΠΎ Π²Ρ€Π΅ΠΌΡ выполнСния.

Учитывая Π²Ρ‹ΡˆΠ΅ΡΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅, Π±Ρ‹Π» ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ интСрфСйс Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π°.

DA_init () — инициализация Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π°Π½Π°Π»ΠΈΠ·Π°, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹Π·Ρ‹Π²Π°Ρ‚ΡŒ Π΄ΠΎ Π²Ρ‹Π·ΠΎΠ²Π° любой Π΄Ρ€ΡƒΠ³ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

DA_exit () — Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ Π°Π½Π°Π»ΠΈΠ·Π° ΠΈ ΡΠΎΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ²

DA_SagePos (long sageNumber) — сообщаСт Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Ρƒ ΠΎ Π½Π°Ρ‡Π°Π»Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° с ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ΠΎΠΌ sageNumber

DA_LinePos (long lineNumber, char * filename) — сообщаСт Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Ρƒ ΠΎ Ρ‚Π΅ΠΊΡƒΡ‰Π΅ΠΌ Π½ΠΎΠΌΠ΅Ρ€Π΅ строки ΠΈ Ρ„Π°ΠΉΠ»Π΅.

DA_WriteBegin (void * addr, long size), DA_WriteEnd () — ΠΏΠ°Ρ€Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ, ΠΎΡ‚ΠΌΠ΅Ρ‡Π°ΡŽΡ‰ΠΈΠ΅ Π½Π°Ρ‡Π°Π»ΠΎ ΠΈ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π° присваивания — запись Π² ΡΡ‡Π΅ΠΉΠΊΡƒ памяти

DA_Read (void * addr, long size) — Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ ячСйки памяти

DA_LoopDo (), DA_LoopFor (), DA_LoopWhile (), DA_LoopDowhile () — Π½Π°Ρ‡Π°Π»ΠΎ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅Π³ΠΎ Ρ†ΠΈΠΊΠ»Π°.

DA_LoopIter () — Π½Π°Ρ‡Π°Π»ΠΎ ΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎΠΉ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΈ Ρ†ΠΈΠΊΠ»Π°

DA_LoopEnd () — Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ Ρ†ΠΈΠΊΠ»Π°

RegArrId (long id, void * addr, long rank, long size[], long elemsize, const char * name) — рСгистрация нСдинамичСского массива Π² Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π΅.

RegArr (void * addr, long rank, long size[], long elemsize, const char * name) — рСгистрация динамичСского массива.

DA_UnregArrId (long id), DA_UnregArr (void * addr) — ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ΠΎΡ‚ΠΌΠ΅Π½Ρ‹ рСгистрации массивов.

4.2 Π€ΠΎΡ€ΠΌΠ°Ρ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² Π’ ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π° Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ прСдоставляСт Π΄Π΅Ρ€Π΅Π²ΠΎ контСкстов с Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ, Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½Π½ΠΎΠΉ Π² Π²Π΅Ρ€ΡˆΠΈΠ½Π°Ρ…:

список зависимостСй ΠΌΠ΅ΠΆΠ΄Ρƒ Π²ΠΈΡ‚ΠΊΠ°ΠΌΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ с Π²Π΅ΠΊΡ‚ΠΎΡ€Π°ΠΌΠΈ расстояний, Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹Π΅ ΠΏΠΎ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹ΠΌ, обращСния ΠΊ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ создали эти зависимости, список массивов, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠΌ, Π° Ρ‚Π°ΠΊΠΆΠ΅, Ссли элСмСнты массива использовались Π»ΠΈΠ½Π΅ΠΉΠ½Ρ‹ΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Ρ‚ΠΎ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Ρ‹ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰Π΅ΠΉ арифмСтичСской прогрСссии Π’Π°ΠΊΠΆΠ΅ Π² ΡƒΠ·Π»Π°Ρ… накапливаСтся профилировочная информация, которая ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ ΠΏΡ€ΠΈ принятии Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ ΠΎ Ρ€Π°ΡΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΠ²Π°Π½ΠΈΠΈ:

количСство Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΉ ΠΏΠΎΠ΄Π΄Π΅Ρ€Π΅Π²Π° с ΠΊΠΎΡ€Π½Π΅ΠΌ Π² Π΄Π°Π½Π½ΠΎΠΌ ΡƒΠ·Π»Π΅, ΠΎΠ±Ρ‰Π΅Π΅ врСмя выполнСния ΠΏΠΎΠ΄Π΄Π΅Ρ€Π΅Π²Π° с ΠΊΠΎΡ€Π½Π΅ΠΌ Π² Π΄Π°Π½Π½ΠΎΠΌ ΡƒΠ·Π»Π΅, срСднСС, минимальноС ΠΈ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½ΠΎ врСмя ΠΎΠ΄Π½ΠΎΠΊΡ€Π°Ρ‚Π½ΠΎΠ³ΠΎ выполнСния ΠΏΠΎΠ΄Π΄Π΅Ρ€Π΅Π²Π° с ΠΊΠΎΡ€Π½Π΅ΠΌ Π² Π΄Π°Π½Π½ΠΎΠΌ ΡƒΠ·Π»Π΅.

ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ сохраняСт ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎΠ±ΠΎ всСх зарСгистрированных ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…. Бписок массивов, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… Π² ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€Π΅ — это лишь ссылки Π½Π° ΡΠ»Π΅ΠΌΠ΅Π½Ρ‚Ρ‹ списка всСх массивов, ΠΏΠΎ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΌ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ.

Для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΡΡ‚ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ Π±Ρ‹Π»Π° Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Π°Ρ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°. Анализатор ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ эту Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ для создания Π΄Π΅Ρ€Π΅Π²Π° контСкстов ΠΈ Π½Π°ΠΏΠΎΠ»Π½Π΅Π½ΠΈΡ Π΅Π³ΠΎ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠ΅ΠΉ. Π”Ρ€ΡƒΠ³ΠΈΠ΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ систСмы Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ распараллСливания ΠΌΠΎΠ³ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ для чтСния сохранСнных Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² Π°Π½Π°Π»ΠΈΠ·Π°.

ΠžΡΠ½ΠΎΠ²Ρƒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°ΠΌΠΈ составляСт класс ContextNode, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ Π²Π΅Ρ€ΡˆΠΈΠ½Ρƒ Π΄Π΅Ρ€Π΅Π²Π° контСкстов. Π’ ΡΡ‚ΠΎΠΌ классС прСдусмотрСны ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ для:

добавлСния нСпосрСдствСнных ΠΏΠΎΡ‚ΠΎΠΌΠΊΠΎΠ², Π½Π°Π²ΠΈΠ³Π°Ρ†ΠΈΠΈ ΠΏΠΎ Π΄Π΅Ρ€Π΅Π²Ρƒ контСкстов: ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄ ΠΊ Ρ€ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΡΠΊΠΎΠΉ Π²Π΅Ρ€ΡˆΠΈΠ½Π΅, ΠΊ ΠΏΠΎΡ‚ΠΎΠΌΠΊΠ°ΠΌ, ΠΊ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Π²Π΅Ρ€ΡˆΠΈΠ½Π΅ Π½Π° Ρ‚ΠΎΠΌ ΠΆΠ΅ ΡƒΡ€ΠΎΠ²Π½Π΅, получСния ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ Π²Π΅Ρ€ΡˆΠΈΠ½Π΅: Sage-Π½ΠΎΠΌΠ΅Ρ€, Ρ‚ΠΈΠΏ Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹, Π½ΠΎΠΌΠ΅Ρ€ строки исходного Ρ„Π°ΠΉΠ»Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, получСния ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ях ΠΏΠΎ Π΄Π°Π½Π½Ρ‹ΠΌ, сохранСнных Π² Π΄Π°Π½Π½ΠΎΠΉ Π²Π΅Ρ€ΡˆΠΈΠ½Π΅, получСния ΠΈ ΠΈΠ·ΠΌΠ΅Π½Π΅Π½ΠΈΡ ΠΏΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€ΠΎΠ²ΠΎΡ‡Π½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ, сохранСния ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π² Ρ„Π°ΠΉΠ» ΠΈ Π·Π°Π³Ρ€ΡƒΠ·ΠΊΠΈ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΈΠ· Ρ„Π°ΠΉΠ»Π°.

Для хранСния зависимостСй Π² Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ΅ прСдусмотрСны классы:

Dependence — класс, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ ΠΎΠ΄Π½Ρƒ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ, содСрТащий Π²Π΅ΠΊΡ‚ΠΎΡ€ расстояния,

DependenceStore — класс, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹ΠΉ для хранСния всСх зависимостСй ΠΎΠ΄Π½ΠΎΠ³ΠΎ Ρ‚ΠΈΠΏΠ°.

Π˜Π½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡ ΠΎ ΠΌΠ°ΡΡΠΈΠ²Π°Ρ…, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΡ‹Ρ… Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅, прСдставляСтся классами CArrays ΠΈ CArrayData. Класс CArrayData содСрТит ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎΠ± ΠΎΠ΄Π½ΠΎΠΌ массивС:

имя массива, Π½ΠΎΠΌΠ΅Ρ€ строки, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΎΠ½ Π±Ρ‹Π» ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½,

Sage-Π½ΠΎΠΌΠ΅Ρ€ ΠΈΠ»ΠΈ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ ΠΈΠ΄Π΅Π½Ρ‚ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ массива для динамичСских массивов, число ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠΉ массива ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ измСрСния, Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΎΠ΄Π½ΠΎΠ³ΠΎ элСмСнта массива.

ΠŸΡ€ΠΈ сохранСнии Π² Ρ„Π°ΠΉΠ» Π΄Π°Π½Π½Ρ‹Π΅ Π·Π°ΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ Π² Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π΅ XML. Удобство Π΄Π°Π½Π½ΠΎΠ³ΠΎ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° состоит Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ ΠΎΠ½ ΠΈΠΌΠ΅Π΅Ρ‚ Π΄Ρ€Π΅Π²ΠΎΠ²ΠΈΠ΄Π½ΡƒΡŽ структуру ΠΈ, ΠΊΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, являСтся тСкстовым Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΎΠΌ, Π° ΠΏΠΎΡ‚ΠΎΠΌΡƒ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ нСпосрСдствСнно ΠΏΡ€ΠΎΡ‡ΠΈΡ‚Π°Π½ Ρ‡Π΅Π»ΠΎΠ²Π΅ΠΊΠΎΠΌ. Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ Ρ‚Π°ΠΊΠΆΠ΅ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΡΡƒΡ‰Π΅ΡΡ‚Π²ΡƒΡŽΡ‚ простыС ΠΈ ΡƒΠ΄ΠΎΠ±Π½Ρ‹Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с XML.

ΠšΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠ΅ прСдставлСниС Π΄Π΅Ρ€Π΅Π²Π° контСкстов Π² Π²ΠΈΠ΄Π΅ XML нСсущСствСнно. ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚ΡΡ, Ρ‡Ρ‚ΠΎ всС ΠΌΠΎΠ΄ΡƒΠ»ΠΈ, Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰ΠΈΠ΅ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ Π°Π½Π°Π»ΠΈΠ·Π°, Π±ΡƒΠ΄ΡƒΡ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½ΡƒΡŽ для этого Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ.

4.3 Π’Π½ΡƒΡ‚Ρ€Π΅Π½Π½Π΅Π΅ устройство Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π° ВнутрСнняя структура Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π° ΠΏΠΎΠΊΠ°Π·Π°Π½Π° Π½Π° Π ΠΈΡΡƒΠ½ΠΊΠ΅ 2.

Π―Π΄Ρ€ΠΎ являСтся основной Ρ‡Π°ΡΡ‚ΡŒΡŽ динамичСского Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π°. ЀактичСски, ядро — это рСализация Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ², описанных Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ 3.2, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‰Π°Ρ Π±Π»ΠΎΠΊ внСшнСго интСрфСйса для получСния ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ Ρ…ΠΎΠ΄Π΅ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, Π° ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ Π±Π»ΠΎΠΊΠΈ ΠΊΠ°ΠΊ структуры Π΄Π°Π½Π½Ρ‹Ρ… для хранСния ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ.

Рисунок 2 ВнутрСнняя структура Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π° Π―Π΄Ρ€ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ Π²Π½ΡƒΡ‚Ρ€Π΅Π½Π½ΠΈΠΉ интСрфСйс, основныС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ³ΠΎ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ опСрациям интСрфСйса Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π°, описанным Π² Ρ€Π°Π·Π΄Π΅Π»Π΅ 4.1. Π˜ΠΌΠ΅ΡŽΡ‚ΡΡ, Ρ‚Π΅ΠΌ Π½Π΅ ΠΌΠ΅Π½Π΅Π΅, Π½Π΅Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ отличия, обусловлСнныС сообраТСниями удобства ΠΈ ΠΏΡ€ΠΎΡΡ‚ΠΎΡ‚Ρ‹. Π‘Π»ΠΎΠΊ внСшнСго интСрфСйса Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌ для прСобразования Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ Π°Π½Π°Π»ΠΈΠ·Π° Π² Π²Ρ‹Π·ΠΎΠ²Ρ‹ интСрфСйса ядра. Π˜ΡΡ‚ΠΎΡ€ΠΈΡ‡Π΅ΡΠΊΠΈ Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠ΅ Π±Ρ‹Π»ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π² ΡΠ²ΡΠ·ΠΈ с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ пСрвая вСрсия Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π° Π±Ρ‹Π»Π° Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Π½Π° ΠΎΡΠ½ΠΎΠ²Π΅ интСрфСйса ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠ° систСмы DVM. Π­Ρ‚ΠΎΡ‚ ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊ ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½ для ΠΏΡ€ΠΎΠ²Π΅Ρ€ΠΊΠΈ коррСктности DVM-ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ посрСдством модСлирования Π΅Π΅ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ выполнСния, Π° Ρ‚Π°ΠΊΠΆΠ΅ посрСдством накоплСния ΠΈ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡ трасс ΠΏΡ€ΠΈ Π΅Π΅ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΌ ΠΈ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠΌ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ. Π’ Π΅Π³ΠΎ интСрфСйс входят Π±Π°Π·ΠΎΠ²Ρ‹Π΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ динамичСскому Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Ρƒ: Ρ‡Ρ‚Π΅Π½ΠΈΠ΅ ΠΈ Π·Π°ΠΏΠΈΡΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ…, Π½Π°Ρ‡Π°Π»ΠΎ ΠΈ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠ΅ Ρ†ΠΈΠΊΠ»ΠΎΠ², Π½Π°Ρ‡Π°Π»ΠΎ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ Ρ†ΠΈΠΊΠ»ΠΎΠ². ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ Π΄ΠΎ ΠΏΠΎΡΠ²Π»Π΅Π½ΠΈΡ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ инструмСнтатора Π±Ρ‹Π»ΠΎ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ инструмСнтатор, ΠΏΡ€Π΅Π΄Π½Π°Π·Π½Π°Ρ‡Π΅Π½Π½Ρ‹ΠΉ для ΠΎΡ‚Π»Π°Π΄Ρ‡ΠΈΠΊΠ° DVM. Π’ Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ Π±Π»ΠΎΠΊΠ° внСшнСго интСрфСйса позволяСт ΠΏΡ€ΠΈ нСобходимости ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ интСрфСйс Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π°, Π½Π΅ Π·Π°Ρ‚рагивая ΠΎΡΠ½ΠΎΠ²Π½ΡƒΡŽ Ρ‡Π°ΡΡ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ.

Π”Π΅Ρ€Π΅Π²ΠΎ контСкстов ΠΈ ΡΠΏΠΈΡΠΎΠΊ массивов — это части Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°ΠΌΠΈ Π°Π½Π°Π»ΠΈΠ·Π°. Анализатор ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ ΠΈΡ… Π΄Π»Ρ хранСния ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ Π²ΠΎ Π²Ρ€Π΅ΠΌΡ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ ΠΈ ΡΠΎΡ…ранСния Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² ΠΏΠΎ ΠΎΠΊΠΎΠ½Ρ‡Π°Π½ΠΈΠΈ Π°Π½Π°Π»ΠΈΠ·Π°. Π”Ρ€ΡƒΠ³ΠΈΠ΅ ΠΌΠΎΠ΄ΡƒΠ»ΠΈ систСмы Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ распараллСливания смогут Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ Ρ‚ΠΎΠΉ ΠΆΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ для чтСния сохранСнных Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ². Π”ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ создаСт Π΄Π΅Ρ€Π΅Π²ΠΎ Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠ² ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ — структуру Π΄Π°Π½Π½Ρ‹Ρ…, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΡƒΡŽ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠΈ Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠ² ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ для ΠΎΠΏΠ΅Ρ€Π°Ρ‚ΠΎΡ€ΠΎΠ² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. ВсС Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠΈ, Π²ΠΎΠ·Π½ΠΈΠΊΠ°ΡŽΡ‰ΠΈΠ΅ ΠΏΡ€ΠΈ Π°Π½Π°Π»ΠΈΠ·Π΅, ΠΎΡ€Π³Π°Π½ΠΈΠ·ΡƒΡŽΡ‚ΡΡ Π² Π΄Π΅Ρ€Π΅Π²ΠΎ ΠΏΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌΡƒ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡƒ: ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠΈ соотвСтствуСт ΠΏΠ΅Ρ€Π΅Ρ…ΠΎΠ΄Ρƒ Π½Π° ΠΎΠ΄ΠΈΠ½ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ Π²Π½ΠΈΠ· ΠΏΠΎ Π΄Π΅Ρ€Π΅Π²Ρƒ, ΠΏΡ€ΠΈ этом ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹ΠΌ Π½Π°Ρ‡Π°Π»Π°ΠΌ Ρ†Π΅ΠΏΠΎΡ‡Π΅ΠΊ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‚ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Π΅ ΠΏΡƒΡ‚ΠΈ ΠΎΡ‚ ΠΊΠΎΡ€Π½Ρ ΠΏΠΎ Π΄Π΅Ρ€Π΅Π²Ρƒ. Π’ΠΎΠ³Π΄Π° ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Π΅ Ρ†Π΅ΠΏΠΎΡ‡ΠΊΠΈ Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠ² ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ΡΡ ΠΎΠ΄Π½ΠΈΠΌ ΡƒΠ·Π»ΠΎΠΌ Π² Π΄Π΅Ρ€Π΅Π²Π΅. Π’ΠΈΡ€Ρ‚ΡƒΠ°Π»ΡŒΠ½Π°Ρ Ρ‚ΠΎΡ‡ΠΊΠ° доступа ΠΏΡ€ΠΈ этом прСдставляСтся просто ΠΊΠ°ΠΊ ΠΏΠ°Ρ€Π° ссылок Π½Π° ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ ΡƒΠ·Π»Ρ‹ Π² Π΄Π΅Ρ€Π΅Π²Π΅ контСкстов ΠΈ Π΄Π΅Ρ€Π΅Π²Π΅ Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠ² ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ. Π”Π΅Ρ€Π΅Π²ΠΎ Π²Π΅ΠΊΡ‚ΠΎΡ€ΠΎΠ² ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ Π½Π΅ ΡΠΎΡ…раняСтся, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ послС вычислСния расстояний зависимостСй Π²Π΅ΠΊΡ‚ΠΎΡ€Ρ‹ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ ΡƒΠΆΠ΅ Π½Π΅ Π½ΡƒΠΆΠ½Ρ‹.

Π’ Π½Π°Ρ‡Π°Π»Π΅ ΠΈ ΠΏΡ€ΠΈ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ дСйствия. ΠŸΡ€ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠΈ ΠΊΠΎΠΌΠ°Π½Π΄Ρ‹ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ ядро ΠΈΡ‰Π΅Ρ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ запуска Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π° ΠΈ Π² ΡΠ»ΡƒΡ‡Π°Π΅ успСха Π·Π°Π³Ρ€ΡƒΠΆΠ°Π΅Ρ‚ Ρ€Π°Π½Π΅Π΅ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Π΅ Π΄Π΅Ρ€Π΅Π²ΠΎ контСкстов ΠΈ ΡΠΏΠΈΡΠΎΠΊ массивов. Π’ ΡΡ‚ΠΎΠΌ случаС Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ Π½ΠΎΠ²ΠΎΠ³ΠΎ запуска Π΄ΠΎΠ±Π°Π²Π»ΡΡŽΡ‚ΡΡ ΠΊ ΡƒΠΆΠ΅ ΠΈΠΌΠ΅ΡŽΡ‰ΠΈΠΌΡΡ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π°ΠΌ, Ρ‡Ρ‚ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ ΠΏΡ€ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠΈ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… тСстов. Когда Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅Ρ‚ ΠΊΠΎΠΌΠ°Π½Π΄Ρƒ Π·Π°Π²Π΅Ρ€ΡˆΠ΅Π½ΠΈΡ, содСрТимоС Π΄Π΅Ρ€Π΅Π²Π° контСкстов ΠΈ ΡΠΏΠΈΡΠΊΠ° массивов сохраняСтся Π² Ρ„Π°ΠΉΠ».

4.4 Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ тСстирования ВСстированиС Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π° ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΠ»ΠΎΡΡŒ Π½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ…, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰ΠΈΡ… Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ уравнСния ΠŸΡƒΠ°ΡΡΠΎΠ½Π° Π² Ρ‚Ρ€Π΅Ρ…ΠΌΠ΅Ρ€Π½ΠΎΠΌ пространствС классичСскими ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹ΠΌΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ: ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ Π―ΠΊΠΎΠ±ΠΈ, ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΉ Π²Π΅Ρ€Ρ…Π½Π΅ΠΉ рСлаксации (SOR), ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ красно-Ρ‡Π΅Ρ€Π½ΠΎΠ³ΠΎ упорядочСния (RedBlack), Π° Ρ‚Π°ΠΊΠΆΠ΅ Π½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅, Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‰Π΅ΠΉ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ систСмы Π»ΠΈΠ½Π΅ΠΉΠ½Ρ‹ΠΉ алгСбраичСских ΡƒΡ€Π°Π²Π½Π΅Π½ΠΈΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ Гаусса.

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ ΠΏΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠΏΠΎΠΊΠ°Π·Π°Π½Ρ‹ Π½Π° Π’Π°Π±Π»ΠΈΡ†Π΅ 1. Π’ ΠΌΠ΅Ρ‚ΠΎΠ΄Π°Ρ… Π―ΠΊΠΎΠ±ΠΈ, SOR ΠΈ RedBlack использовалась ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° Ρ€Π°Π·ΠΌΠ΅Ρ€Π° 16×16×8. Π’ ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ Гаусса Ρ€Π΅ΡˆΠ°Π»Π°ΡΡŒ систСма Ρ€Π°Π·ΠΌΠ΅Ρ€Π° 100×100.

Π’Π°Π±Π»ΠΈΡ†Π° 1 — ΠŸΠΎΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ

ΠœΠ΅Ρ‚ΠΎΠ΄

ВрСмя выполнСния, сСк

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌΠ°Ρ ΠΏΠ°ΠΌΡΡ‚ΡŒ, Kb

Π±Π΅Π· Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π°

с Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΎΠΌ

Π±Π΅Π· Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π°

с Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΎΠΌ

Π―ΠΊΠΎΠ±ΠΈ

0,05

4,73

SOR

0,05

2,23

RedBlack

0,05

5,52

Гаусс

0,04

6,45

Из ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹Ρ… Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² слСдуСт, Ρ‡Ρ‚ΠΎ тСкущая рСализация динамичСского Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π° замСдляСт Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π² 100 ΠΈ Π±ΠΎΠ»Π΅Π΅ Ρ€Π°Π·, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΏΡ€ΠΈ этом Π² Π΄Π΅ΡΡΡ‚ΠΊΠΈ Ρ€Π°Π· больший объСм памяти. Π­Ρ‚ΠΎ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡ΠΈΠ²Π°Π΅Ρ‚ возмоТности примСнСния Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π°, ΠΏΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ для Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ врСмя Π°Π½Π°Π»ΠΈΠ·Π° ΠΎΡΡ‚Π°Π²Π°Π»ΠΎΡΡŒ Π² Ρ€Π°Π·ΡƒΠΌΠ½Ρ‹Ρ… ΠΏΡ€Π΅Π΄Π΅Π»Π°Ρ…, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ сильно ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Ρ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΡΡ‚ΡŒ Ρ€Π΅ΡˆΠ°Π΅ΠΌΠΎΠΉ Π·Π°Π΄Π°Ρ‡ΠΈ.

Π‘Π»Π΅Π΄ΡƒΠ΅Ρ‚ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π½Π° Π΄Π°Π½Π½Ρ‹ΠΉ ΠΌΠΎΠΌΠ΅Π½Ρ‚ Π½Π΅ Π±Ρ‹Π»ΠΎ сдСлано ΠΏΠΎΠΏΡ‹Ρ‚ΠΎΠΊ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π°. ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ нСльзя ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌΠΈ, ΠΈ ΡΠ»Π΅Π΄ΡƒΠ΅Ρ‚ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΡƒΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ Π½Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎΡΡ‚ΡŒ дальнСйшСй Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΠΎ ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° динамичСского Π°Π½Π°Π»ΠΈΠ·Π°.

5.

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

ПодвСдСм Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΡ‚ΠΎΠ³ΠΈ Π΄Π°Π½Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹. ДинамичСский Π°Π½Π°Π»ΠΈΠ· зависимостСй ΠΏΠΎ Π΄Π°Π½Π½Ρ‹ΠΌ ΠΎΠ±Π»Π°Π΄Π°Π΅Ρ‚ рядом прСимущСств ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с Ρ‚Ρ€Π°Π΄ΠΈΡ†ΠΈΠΎΠ½Π½Ρ‹ΠΌΠΈ статичСскими ΠΌΠ΅Ρ‚ΠΎΠ΄Π°ΠΌΠΈ Π°Π½Π°Π»ΠΈΠ·Π°. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ Π°Π½Π°Π»ΠΈΠ· производится Π²ΠΎ Π²Ρ€Π΅ΠΌΡ выполнСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹, доступна вся информация ΠΎ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΠΌΡ‹Ρ… доступах Π² ΠΏΠ°ΠΌΡΡ‚ΡŒ. Π­Ρ‚ΠΎ позволяСт ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π°Π±ΡΠΎΠ»ΡŽΡ‚Π½ΠΎ Ρ‚ΠΎΡ‡Π½ΡƒΡŽ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΡŽ ΠΎ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ях ΠΏΠΎ Π΄Π°Π½Π½Ρ‹ΠΌ нСзависимо ΠΎΡ‚ ΡΠ»ΠΎΠΆΠ½ΠΎΡΡ‚ΠΈ индСксных Π²Ρ‹Ρ€Π°ΠΆΠ΅Π½ΠΈΠΉ массивов, наличия косвСнной индСксации ΠΈΠ»ΠΈ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»Π΅ΠΉ.

ΠžΡΠ½ΠΎΠ²Π½Ρ‹ΠΌ нСдостатком Π΄Π°Π½Π½ΠΎΠ³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° являСтся отсутствиС Π³Π°Ρ€Π°Π½Ρ‚ΠΈΠΈ Ρ‚ΠΎΠ³ΠΎ, Ρ‡Ρ‚ΠΎ всС Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹Π΅ зависимости ΠΏΠΎ Π΄Π°Π½Π½Ρ‹ΠΌ ΠΎΠ±Π½Π°Ρ€ΡƒΠΆΠ΅Π½Ρ‹. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ для провСдСния Π°Π½Π°Π»ΠΈΠ·Π° Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ Π½Π°Π±ΠΎΡ€Π° тСстов, достаточно ΠΏΠΎΠ»Π½ΠΎ ΠΏΠΎΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰Π΅Π³ΠΎ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Ρ‹ повСдСния ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, сущСствСнныС Π·Π°Ρ‚Ρ€Π°Ρ‚Ρ‹ рСсурсов Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€ΠΎΠΌ ΠΏΡ€ΠΈ ΠΊΠ°ΠΆΠ΄ΠΎΠΌ запускС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Π½Π° Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π·Π°ΡΡ‚Π°Π²Π»ΡΡŽΡ‚ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ°Ρ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΡΡ‚ΡŒ Π·Π°Π΄Π°Ρ‡ для Π°Π½Π°Π»ΠΈΠ·Π°, Ρ‡Ρ‚ΠΎ, Π±Ρ‹Ρ‚ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚, Π½Π΅ Π²ΡΠ΅Π³Π΄Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ.

Π’ Ρ€Π°ΠΌΠΊΠ°Ρ… Π΄Π°Π½Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΎΠ΄ΠΈΠ½ ΠΈΠ· ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² динамичСского Π°Π½Π°Π»ΠΈΠ·Π° Π±Ρ‹Π» Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½ Π² Π²ΠΈΠ΄Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ Π½Π° ΡΠ·Ρ‹ΠΊΠ΅ Π‘++ (ΠΎΠΊΠΎΠ»ΠΎ 2500 строк исходного ΠΊΠΎΠ΄Π°). ΠŸΡ€ΠΎΠ²Π΅Π΄Π΅Π½ΠΎ тСстированиС Π°Π½Π°Π»ΠΈΠ·Π°Ρ‚ΠΎΡ€Π° Π½Π° Π½Π°Π±ΠΎΡ€Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ Π½Π° ΡΠ·Ρ‹ΠΊΠ΅ Π‘ΠΈ, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰ΠΈΡ… собой Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ классичСских ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½Ρ‹Ρ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² (Π―ΠΊΠΎΠ±ΠΈ, SOR, RedBlack) ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° Гаусса. Π’Π΅ΠΌ самым ΠΏΠΎΠΊΠ°Π·Π°Π½Π° Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ примСнСния динамичСского Π°Π½Π°Π»ΠΈΠ·Π° для поиска зависимостСй Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°Ρ…, Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‰ΠΈΡ… распараллСливания.

6. Π›ΠΈΡ‚Π΅Ρ€Π°Ρ‚ΡƒΡ€Π°

1. ParaWise. The Computer Aided Parallelization Toolkit [HTML, PDF] (http://www.parallelsp.com).

2. ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ V-Ray [HTML] (http://parallel.ru/v-ray).

3. Jacobson T., Stubbendieck G. Dependency Analysis of FOR-Loop Structures for Automatic Parallelization of C Code [PDF] (http://www.css.edu/depts/cis/mics_2003/MICS2003_Papers/Jacobson.PDF).

4. Karkowski I., Corporaal H. Overcoming the Limitations of the Traditional Loop Parallelization // Journal of Future Generation Computer Systems. 1998. № 13. P. 407−416.

5. Petersen P.M. Evaluation of Programs and Parallelizing Compilers Using Dynamic Analysis Techniques. Champaign, IL, USA: University of Illinois at Urbana-Champaign, 1993. 164 p.

6. DVM-систСма [HTML] (http://www.keldysh.ru/dvm).

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