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

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΈ рСализация Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ систСм Π»ΠΈΠ½Π΅ΠΉΠ½Ρ‹Ρ… алгСбраичСских ΡƒΡ€Π°Π²Π½Π΅Π½ΠΈΠΉ Ρ‚Ρ€Π΅Ρ…Π΄ΠΈΠ°Π³ΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π²ΠΈΠ΄Π° Π½Π° графичСском Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΌ устройствС

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

На Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΆΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ€Π°Ρ… систСмы Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ эффСктивСн, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ускорСниС большС Π΅Π΄ΠΈΠ½ΠΈΡ†Ρ‹. Из Π³Ρ€Π°Ρ„ΠΈΠΊΠ° Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ ускорСниС увСличиваСтся с Ρ€ΠΎΡΡ‚ΠΎΠΌ числа ΡƒΡ€Π°Π²Π½Π΅Π½ΠΈΠΉ. Но ΠΏΡ€ΠΈ размСрности 210 ΠΈ 213 ускорСниС Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ ΠΊΠΎΠ»Π΅Π±Π°Ρ‚ΡŒΡΡ ΠΎΠΊΠΎΠ»ΠΎ дСвяти. Π­Ρ‚ΠΎ ΠΎΠ±ΡŠΡΡΠ½ΡΠ΅Ρ‚ΡΡ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ΠΌ роста ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ систСмы с ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ΠΌ количСства вычислитСлСй. Богласно этому ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΡŽ, ускорСниС выполнСния… Π§ΠΈΡ‚Π°Ρ‚ΡŒ Π΅Ρ‰Ρ‘ >

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΈ рСализация Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ систСм Π»ΠΈΠ½Π΅ΠΉΠ½Ρ‹Ρ… алгСбраичСских ΡƒΡ€Π°Π²Π½Π΅Π½ΠΈΠΉ Ρ‚Ρ€Π΅Ρ…Π΄ΠΈΠ°Π³ΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π²ΠΈΠ΄Π° Π½Π° графичСском Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΌ устройствС (Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚, курсовая, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ)

ΠœΠΈΠ½ΠΈΡΡ‚Π΅Ρ€ΡΡ‚Π²ΠΎ образования ΠΈ Π½Π°ΡƒΠΊΠΈ Российской Π€Π΅Π΄Π΅Ρ€Π°Ρ†ΠΈΠΈ Π€Π΅Π΄Π΅Ρ€Π°Π»ΡŒΠ½ΠΎΠ΅ государствСнноС Π±ΡŽΠ΄ΠΆΠ΅Ρ‚Π½ΠΎΠ΅ ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ΅ ΡƒΡ‡Ρ€Π΅ΠΆΠ΄Π΅Π½ΠΈΠ΅ Π²Ρ‹ΡΡˆΠ΅Π³ΠΎ ΠΏΡ€ΠΎΡ„Π΅ΡΡΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ образования «Π‘амарский государствСнный аэрокосмичСский унивСрситСт ΠΈΠΌΠ΅Π½ΠΈ Π°ΠΊΠ°Π΄Π΅ΠΌΠΈΠΊΠ° Π‘. П. ΠšΠΎΡ€ΠΎΠ»Π΅Π²Π° (Π½Π°Ρ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΈΡΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΡΠΊΠΈΠΉ унивСрситСт)»

Π€Π°ΠΊΡƒΠ»ΡŒΡ‚Π΅Ρ‚ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΠΊΠΈ ΠšΠ°Ρ„Π΅Π΄Ρ€Π° тСхничСской ΠΊΠΈΠ±Π΅Ρ€Π½Π΅Ρ‚ΠΈΠΊΠΈ

Выпускная квалификационная Ρ€Π°Π±ΠΎΡ‚Π° спСциалиста Π½Π° Ρ‚Π΅ΠΌΡƒ: Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΈ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΡ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ систСм Π»ΠΈΠ½Π΅ΠΉΠ½Ρ‹Ρ… алгСбраичСских ΡƒΡ€Π°Π²Π½Π΅Π½ΠΈΠΉ Ρ‚Ρ€Ρ‘Ρ…Π΄ΠΈΠ°Π³ΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π²ΠΈΠ΄Π° Π½Π° Π³Ρ€Π°Ρ„ичСском Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΌ устройствС

Π‘Π°ΠΌΠ°Ρ€Π°, 2013

Π Π΅Ρ„Π΅Ρ€Π°Ρ‚

ΠžΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠΌ исслСдования являСтся ΠΌΠ΅Ρ‚ΠΎΠ΄ цикличСской Ρ€Π΅Π΄ΡƒΠΊΡ†ΠΈΠΈ ΠΈ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Вомаса для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ БЛАУ с ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π΅ΠΉ Ρ‚Ρ€Π΅Ρ…Π΄ΠΈΠ°Π³ΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π²ΠΈΠ΄Π°.

ЦСлью являСтся Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π° Π³Ρ€Π°Ρ„ичСском Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΌ устройствС.

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹Π΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Ρ‹ Π½Π° GPU с ΠΏΡ€ΠΈΠΌΠ΅Π½Π΅Π½ΠΈΠ΅ΠΌ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ CUDA. ΠŸΡ€ΠΎΠ²Π΅Π΄Π΅Π½ΠΎ сравнСниС Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ (GPU) ΠΈ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ (CPU) Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ². Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ прСдставлСны Π² Π²ΠΈΠ΄Π΅ Ρ‚Π°Π±Π»ΠΈΡ† ΠΈ Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠ², ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°ΡŽΡ‰ΠΈΡ… Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΡŒ ускорСния вычислСний, ΠΏΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅Π½Π½Ρ‹Ρ… Π½Π° GPU ΠΎΡ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ² сСточной области.

Π Π°Π·Π²ΠΈΡ‚ΠΈΠ΅ ΠΌΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠΈ (тСория разностных схСм, ΠΏΡ€ΠΎΠ΅ΠΊΡ†ΠΈΠΎΠ½Π½Ρ‹Π΅ ΠΈ Π²Π°Ρ€ΠΈΠ°Ρ†ΠΈΠΎΠ½Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠ΅), Ρ„ΠΈΠ·ΠΈΠΊΠΈ (ΠΎΠΏΡ‚ΠΈΠΊΠ°, тСория тСплопроводности, газовая Π΄ΠΈΠ½Π°ΠΌΠΈΠΊΠ° ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠ΅) ΠΈ ΠΌΠΎΠ΄Π΅Π»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ Π½Π΅ΠΎΠ±Ρ…одимости Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠΈ Π½ΠΎΠ²Ρ‹Ρ… способов Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ Ρ„ΠΈΠ·ΠΈΠΊΠΈ. ΠŸΡ€ΠΈ исслСдовании Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΈΠ· ΡƒΠΊΠ°Π·Π°Π½Π½Ρ‹Ρ… Π·Π°Π΄Π°Ρ‡ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ΠΏΠΎΡ‚Ρ€Π΅Π±Π½ΠΎΡΡ‚ΡŒ Π² Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Π½ΠΈΠΈ Ρ‚Ρ€Π΅Ρ…Π΄ΠΈΠ°Π³ΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… систСм Π»ΠΈΠ½Π΅ΠΉΠ½Ρ‹Ρ… алгСбраичСских ΡƒΡ€Π°Π²Π½Π΅Π½ΠΈΠΉ (БЛАУ).

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

Π Π°Π·Π²ΠΈΡ‚ΠΈΠ΅ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Ρ… Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΉ послСдниС дСсятки Π»Π΅Ρ‚ шло быстрыми Ρ‚Π΅ΠΌΠΏΠ°ΠΌΠΈ. ΠΠ°ΡΡ‚ΠΎΠ»ΡŒΠΊΠΎ быстрыми, Ρ‡Ρ‚ΠΎ ΡƒΠΆΠ΅ сСйчас Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΈ процСссоров практичСски подошли ΠΊ Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠΌΡƒ «ΠΊΡ€Π΅ΠΌΠ½ΠΈΠ΅Π²ΠΎΠΌΡƒ Ρ‚ΡƒΠΏΠΈΠΊΡƒ». Π‘Π΅Π·ΡƒΠ΄Π΅Ρ€ΠΆΠ½Ρ‹ΠΉ рост Ρ‚Π°ΠΊΡ‚ΠΎΠ²ΠΎΠΉ частоты стал Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ΅Π½ Π² ΡΠΈΠ»Ρƒ Ρ†Π΅Π»ΠΎΠ³ΠΎ ряда ΡΠ΅Ρ€ΡŒΠ΅Π·Π½Ρ‹Ρ… тСхнологичСских ΠΏΡ€ΠΈΡ‡ΠΈΠ½.

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

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

CUDA (Π°Π½Π³Π». Compute Unified Device Architecture) — тСхнология GPGPU (Π°Π½Π³Π». General-Purposecomputing on Graphics Processing Units), ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰Π°Ρ программистам Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ Π½Π° ΡƒΠΏΡ€ΠΎΡ‰Ρ‘Π½Π½ΠΎΠΌ языкС программирования Π‘ΠΈ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠΌΡ‹Π΅ Π½Π° Π³Ρ€Π°Ρ„ичСских процСссорах ускоритСлСй GeForce восьмого поколСния ΠΈ ΡΡ‚Π°Ρ€ΡˆΠ΅.

Часто ΠΏΡ€ΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΈ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… Ρ‚Ρ€Π΅Ρ…Π΄ΠΈΠ°Π³ΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… систСм Π½Π° GPU, Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΠ° Π½Π΅Ρ…Π²Π°Ρ‚ΠΊΠΈ памяти («Ρ€Π°Π·Π΄Π΅Π»ΡΠ΅ΠΌΠ°Ρ ΠΏΠ°ΠΌΡΡ‚ΡŒ»). ΠŸΠΎΡΡ‚ΠΎΠΌΡƒ, Π² Ρ€Π°ΠΌΠΊΠ°Ρ… Π΄Π°Π½Π½ΠΎΠΉ Π΄ΠΈΠΏΠ»ΠΎΠΌΠ½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π±Ρ‹Π» Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Ρ‚Ρ€Π΅Ρ…Π΄ΠΈΠ°Π³ΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… систСм Π»ΠΈΠ½Π΅ΠΉΠ½Ρ‹Ρ… алгСбраичСских ΡƒΡ€Π°Π²Π½Π΅Π½ΠΈΠΉ (БЛАУ), Ρ€Π΅ΡˆΠ°ΡŽΡ‰ΠΈΠΉ эту ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌΡƒ.

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

1. ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ систСм Π»ΠΈΠ½Π΅ΠΉΠ½Ρ‹Ρ… ΡƒΡ€Π°Π²Π½Π΅Π½ΠΈΠΉ Ρ‚Ρ€Π΅Ρ…Π΄ΠΈΠ³ΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π²ΠΈΠ΄Π°

1.1 ΠœΠ΅Ρ‚ΠΎΠ΄ ΠΏΡ€ΠΎΠ³ΠΎΠ½ΠΊΠΈ

Одним ΠΈΠ· Ρ‡Π°ΡΡ‚ΠΎ Π²ΡΡ‚Ρ€Π΅Ρ‡Π°ΡŽΡ‰ΠΈΡ…ΡΡ Π²ΠΈΠ΄ΠΎΠ² систСм Π»ΠΈΠ½Π΅ΠΉΠ½Ρ‹Ρ… алгСбраичСских ΡƒΡ€Π°Π²Π½Π΅Π½ΠΈΠΉ являСтся систСма

Ax=f (1.1)

с Π»Π΅Π½Ρ‚ΠΎΡ‡Π½ΠΎΠΉ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π΅ΠΉ A. Π’ ΡΡ‚ΠΎΠΌ случаС уравнСния всСгда ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ упорядочСны Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎ ΠΊΠ°ΠΆΠ΄ΠΎΠ΅ нСизвСстноС появляСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π² Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… уравнСниях, «ΡΠΎΡΠ΅Π΄Π½ΠΈΡ…» с i-ΠΌ ΡƒΡ€Π°Π²Π½Π΅Π½ΠΈΠ΅ΠΌ. Π€ΠΎΡ€ΠΌΠ°Π»ΡŒΠ½ΠΎ ΠΌΡ‹ Π³ΠΎΠ²ΠΎΡ€ΠΈΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° ΠΈΠΌΠ΅Π΅Ρ‚ Π²Π΅Ρ€Ρ…Π½ΡŽΡŽ ΡˆΠΈΡ€ΠΈΠ½Ρƒ Π»Π΅Π½Ρ‚Ρ‹ q, Ссли для всСх , ΠΈ Π½ΠΈΠΆΠ½ΡŽΡŽ ΡˆΠΈΡ€ΠΈΠ½Ρƒ Π»Π΅Π½Ρ‚Ρ‹ Ρ€, Ссли для всСх [8]. ΠŸΡ€ΠΈ q=p=1 такая ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° называСтся Ρ‚Ρ€Π΅Ρ…Π΄ΠΈΠ°Π³ΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠΉ:

.

Π’ ΡΠΈΡΡ‚Π΅ΠΌΠ΅ (1.1) — Π²Π΅ΠΊΡ‚ΠΎΡ€ нСизвСстных, — Π²Π΅ΠΊΡ‚ΠΎΡ€ ΠΏΡ€Π°Π²Ρ‹Ρ… частСй.

Π”Π°Π½Π½ΡƒΡŽ систСму ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠ΅Ρ€Π΅ΠΏΠΈΡΠ°Ρ‚ΡŒ Π² Π²ΠΈΠ΄Π΅:

(1.2)

Π³Π΄Π΅

ΠŸΡƒΡΡ‚ΡŒ трСбуСтся Π½Π°ΠΉΡ‚ΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ этой систСмы ΡƒΡ€Π°Π²Π½Π΅Π½ΠΈΠΉ.

Π‘ΠΏΠ΅Ρ†ΠΈΡ„ΠΈΠΊΠ° систСмы, Π² ΡΠΈΠ»Ρƒ Π΅Ρ‘ Ρ‚Ρ€Π΅Ρ…Π΄ΠΈΠ°Π³ΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ, позволяСт ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ простыС расчСтныС Ρ„ΠΎΡ€ΠΌΡƒΠ»Ρ‹ для вычислСния Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ.

Рассмотрим Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ систСмы Π²ΠΈΠ΄Π° (1.2). ΠŸΡ€ΠΎΠ²Π΅Π΄Π΅ΠΌ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅ нСизвСстных Π² (1.2) для этого запишСм систСму Π² ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΌ Π²ΠΈΠ΄Π΅:

(1.3)

Π³Π΄Π΅

ΠŸΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅ΠΌ Π·Π°ΠΌΠ΅Π½Ρƒ Π² ΠΏΠ΅Ρ€Π²ΠΎΠΌ ΡƒΡ€Π°Π²Π½Π΅Π½ΠΈΠΈ систСмы (1.3):

; .

Π’ΠΎΠ·ΡŒΠΌΠ΅ΠΌ ΠΏΠ΅Ρ€Π²Ρ‹Π΅ Π΄Π²Π° уравнСния систСмы (1.3):

Π£ΠΌΠ½ΠΎΠΆΠΈΠΌ ΠΏΠ΅Ρ€Π²ΠΎΠ΅ ΡƒΡ€Π°Π²Π½Π΅Π½ΠΈΠ΅ Π½Π° ΠΈ ΡΠ»ΠΎΠΆΠΈΠΌ со Π²Ρ‚ΠΎΡ€Ρ‹ΠΌ ΡƒΡ€Π°Π²Π½Π΅Π½ΠΈΠ΅ΠΌ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ:

.

Π Π°Π·Π΄Π΅Π»ΠΈΠΌ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠ΅ ΡƒΡ€Π°Π²Π½Π΅Π½ΠΈΠ΅ Π½Π°, Ρ‚ΠΎΠ³Π΄Π° Π±ΡƒΠ΄Π΅ΠΌ ΠΈΠΌΠ΅Ρ‚ΡŒ:

.

ΠŸΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅ΠΌ Π·Π°ΠΌΠ΅Π½Ρƒ Π² ΡƒΡ€Π°Π²Π½Π΅Π½ΠΈΠΈ:

.

Π’ΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ:

.

ΠžΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ уравнСния систСмы Π½Π΅ ΡΠΎΠ΄Π΅Ρ€ΠΆΠ°Ρ‚, поэтому Π½Π° ΡΡ‚ΠΎΠΌ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ шаг процСсса ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ заканчиваСтся. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π½Ρ‹Ρ… ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΠΎΠ²Π°Π½ΠΈΠΉ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ Π½ΠΎΠ²ΡƒΡŽ ΡƒΠΌΠ΅Π½ΡŒΡˆΠ΅Π½Π½ΡƒΡŽ систСму:

(1.4)

Π³Π΄Π΅

БистСма (1.4) ΠΈΠΌΠ΅Π΅Ρ‚ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΡƒΡŽ систСмС (1.2) структуру ΠΈ Π½Π΅ ΡΠΎΠ΄Π΅Ρ€ΠΆΠΈΡ‚ нСизвСстноС. Если Ρ€Π΅ΡˆΠΈΡ‚ΡŒ эту систСму, Ρ‚ΠΎ ΠΏΠΎΡ‚ΠΎΠΌ нСизвСстноС ΠΌΠΎΠΆΠ½ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Π½Π°ΠΉΡ‚ΠΈ ΠΏΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Ρ„ΠΎΡ€ΠΌΡƒΠ»Π΅:

.

К ΡΠΈΡΡ‚Π΅ΠΌΠ΅ (1.4) ΠΌΠΎΠΆΠ½ΠΎ ΠΎΠΏΡΡ‚ΡŒ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚ΡŒ описанный Π²Ρ‹ΡˆΠ΅ способ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ нСизвСстных. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, Π½Π° Π²Ρ‚ΠΎΡ€ΠΎΠΌ шагС Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΎ нСизвСстноС, Π½Π° Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅ΠΌ ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅. Π’ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Π΅ l-Π³ΠΎ шага ΠΏΡ€ΠΈΠ΄Π΅ΠΌ ΠΊ ΡΠΈΡΡ‚Π΅ΠΌΠ΅ для нСизвСстных, , …, :

(1.5)

Π³Π΄Π΅

А Ρ‚Π°ΠΊ ΠΆΠ΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ Ρ„ΠΎΡ€ΠΌΡƒΠ»Ρ‹ для нахоТдСния ():

(1.6)

Π³Π΄Π΅ .

ΠšΠΎΡΡ„Ρ„ΠΈΡ†ΠΈΠ΅Π½Ρ‚Ρ‹ ΠΈ Π½Π°Ρ…одятся ΠΏΠΎ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ Ρ„ΠΎΡ€ΠΌΡƒΠ»Π°ΠΌ:

Π³Π΄Π΅

Полагая Π² ΡΠΈΡΡ‚Π΅ΠΌΠ΅ (1.5), ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ систСму для ΠΈ :

Из ΡΡ‚ΠΎΠΉ систСмы Π½Π°ΠΉΠ΄Π΅ΠΌ ΠΈ :

ОбъСдиняя эти равСнства с Ρ€Π°Π²Π΅Π½ΡΡ‚Π²ΠΎΠΌ (1.6) для случая, ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ ΠΎΠΊΠΎΠ½Ρ‡Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ Ρ„ΠΎΡ€ΠΌΡƒΠ»Ρ‹ для нахоТдСния нСизвСстных:

(1.7)

Π³Π΄Π΅ ;

; (1.8)

. (1.9)

Π€ΠΎΡ€ΠΌΡƒΠ»Ρ‹ (1.7−1.9) ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ ΠΏΡ€ΠΎΠ³ΠΎΠ½ΠΊΠΈ. ΠšΠΎΡΡ„Ρ„ΠΈΡ†ΠΈΠ΅Π½Ρ‚Ρ‹ ΠΈ Π½Π°Π·Ρ‹Π²Π°ΡŽΡ‚ся ΠΏΡ€ΠΎΠ³ΠΎΠ½ΠΎΡ‡Π½Ρ‹ΠΌΠΈ коэффициСнтами, Ρ„ΠΎΡ€ΠΌΡƒΠ»Ρ‹ (1.8, 1.9) ΠΎΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ прямой Ρ…ΠΎΠ΄ ΠΏΡ€ΠΎΠ³ΠΎΠ½ΠΊΠΈ, Π° (1.7) — ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΉ Ρ…ΠΎΠ΄.

Для устойчивости ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΏΡ€ΠΎΠ³ΠΎΠ½ΠΊΠΈ Π·Π½Π°ΠΌΠ΅Π½Π°Ρ‚Π΅Π»ΠΈ Π΄Ρ€ΠΎΠ±Π΅ΠΉ Π½Π΅ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΎΠ±Ρ€Π°Ρ‰Π°Ρ‚ΡŒΡΡ Π² Π½ΡƒΠ»ΡŒ. Достаточным условиСм этого ΡΠ²Π»ΡΡΡŽΡ‚ΡΡ нСравСнства

;

.

ΠŸΠΎΠ΄ΡΡ‡Π΅Ρ‚ арифмСтичСский дСйствий Π² (1.7) — (1.9) ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ рСализация ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΏΡ€ΠΎΠ³ΠΎΠ½ΠΊΠΈ ΠΏΠΎ ΡΡ‚ΠΈΠΌ Ρ„ΠΎΡ€ΠΌΡƒΠ»Π°ΠΌ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ арифмСтичСских дСйствий[1].

Π’ Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€Π΅Π½Π½ΠΎΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ ΠΏΡ€Π°Π²ΠΎΠΉ ΠΏΡ€ΠΎΠ³ΠΎΠ½ΠΊΠΈ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ производится ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ справа Π½Π°Π»Π΅Π²ΠΎ.

ΠžΠ±Ρ‰ΠΈΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΠΏΡ€Π°Π²ΠΎΠΉ ΠΏΡ€ΠΎΠ³ΠΎΠ½ΠΊΠΈ состоит ΠΈΠ· ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ шагов:

Π¨Π°Π³ 1. Π—Π°Π΄Π°Ρ‚ΡŒ Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹Π΅ значСния коэффициСнтов a, b, c ΠΈ ΠΏΡ€Π°Π²Ρ‹Ρ… частСй ΡƒΡ€Π°Π²Π½Π΅Π½ΠΈΠΉ f.

Π¨Π°Π³ 2. Π Π°ΡΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ для прямого Ρ…ΠΎΠ΄Π° ΠΏΡ€ΠΎΠ³ΠΎΠ½ΠΊΠΈ ΠΈ .

Π¨Π°Π³ 3. Π Π°ΡΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ значСния ΠΏΡ€ΠΎΠ³ΠΎΠ½ΠΎΡ‡Π½Ρ‹Ρ… коэффициСнтов ΠΈ

Π¨Π°Π³ 4. Найти Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ .

Π¨Π°Π³ 5. Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Ρ„ΠΎΡ€ΠΌΡƒΠ»Ρƒ Π½Π°ΠΉΡ‚ΠΈ ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ нСизвСстныС.

Аналогично Π²Ρ‹ΠΏΠΈΡΡ‹Π²Π°ΡŽΡ‚ΡΡ Ρ„ΠΎΡ€ΠΌΡƒΠ»Ρ‹ Π»Π΅Π²ΠΎΠΉ ΠΏΡ€ΠΎΠ³ΠΎΠ½ΠΊΠΈ .

Π Π°ΡΡΡ‡ΠΈΡ‚Ρ‹Π²Π°ΡŽΡ‚ΡΡ ΠΏΡ€ΠΎΠ³ΠΎΠ½ΠΎΡ‡Π½Ρ‹Π΅ коэффициСнты:

; (1.10)

. (1.11)

И Π½Π΅ΠΈΠ·Π²Π΅ΡΡ‚Π½Ρ‹Π΅:

(1.12)

ΠžΠ±Ρ‰ΠΈΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Π»Π΅Π²ΠΎΠΉ ΠΏΡ€ΠΎΠ³ΠΎΠ½ΠΊΠΈ состоит ΠΈΠ· ΡˆΠ°Π³ΠΎΠ² Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹Ρ… шагам ΠΏΡ€Π°Π²ΠΎΠΉ ΠΏΡ€ΠΎΠ³ΠΎΠ½ΠΊΠΈ.

1.2 ΠœΠ΅Ρ‚ΠΎΠ΄ встрСчных ΠΏΡ€ΠΎΠ³ΠΎΠ½ΠΎΠΊ

Иногда оказываСтся ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΊΠΎΠΌΠ±ΠΈΠ½ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ ΠΏΡ€Π°Π²ΡƒΡŽ ΠΈ Π»Π΅Π²ΡƒΡŽ ΠΏΡ€ΠΎΠ³ΠΎΠ½ΠΊΠΈ, получая Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΡ‹ΠΉ ΠΌΠ΅Ρ‚ΠΎΠ΄ встрСчных ΠΏΡ€ΠΎΠ³ΠΎΠ½ΠΎΠΊ. Π­Ρ‚ΠΎΡ‚ ΠΌΠ΅Ρ‚ΠΎΠ΄ цСлСсообразно ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒ, Ссли Π½Π°Π΄ΠΎ Π½Π°ΠΉΡ‚ΠΈ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄Π½ΠΎΠ³ΠΎ нСизвСстноС ΠΈΠ»ΠΈ Π³Ρ€ΡƒΠΏΠΏΡƒ ΠΈΠ΄ΡƒΡ‰ΠΈΡ… подряд нСизвСстных. Π’ ΡΡ‚ΠΎΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ Π² ΠΎΠ±Π»Π°ΡΡ‚ΠΈ Π²Ρ‹Ρ‡ΠΈΡΠ»ΡΡŽΡ‚ΡΡ ΠΏΡ€ΠΎΠ³ΠΎΠ½ΠΎΡ‡Π½Ρ‹Π΅ коэффициСнты, ΠΏΠΎ Ρ„ΠΎΡ€ΠΌΡƒΠ»Π°ΠΌ (1.8, 1.9) ΠΈ Π² ΠΎΠ±Π»Π°ΡΡ‚ΠΈ коэффициСнты, ΠΏΠΎ Ρ„ΠΎΡ€ΠΌΡƒΠ»Π°ΠΌ (1.10, 1.11).

Π’Ρ‹ΠΏΠΈΡˆΠ΅ΠΌ Ρ„ΠΎΡ€ΠΌΡƒΠ»Ρ‹ (1.7) ΠΈ (1.12) для ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ Ρ…ΠΎΠ΄Π° ΠΏΡ€Π°Π²ΠΎΠΉ ΠΈ Π»Π΅Π²ΠΎΠΉ ΠΏΡ€ΠΎΠ³ΠΎΠ½ΠΎΠΊ для. ΠŸΠΎΠ»ΡƒΡ‡ΠΈΠΌ систСму:

Из ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ Π½Π°ΠΉΠ΄Π΅ΠΌ :

.

Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ Π½Π°ΠΉΠ΄Π΅Π½Π½ΠΎΠ΅, ΠΏΠΎ Ρ„ΠΎΡ€ΠΌΡƒΠ»Π΅ (1.6) для Π½Π°ΠΉΠ΄Π΅ΠΌ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, Π° ΠΏΠΎ Ρ„ΠΎΡ€ΠΌΡƒΠ»Π΅ (1.12) для вычислим ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅.

Π˜Ρ‚Π°ΠΊ, Ρ„ΠΎΡ€ΠΌΡƒΠ»Ρ‹ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° встрСчных ΠΏΡ€ΠΎΠ³ΠΎΠ½ΠΎΠΊ ΠΈΠΌΠ΅ΡŽΡ‚ Π²ΠΈΠ΄:

; (1.8)

. (1.9)

; (1.10)

. (1.11)

для ΠΏΡ€ΠΎΠ³ΠΎΠ½ΠΎΡ‡Π½Ρ‹Ρ… коэффициСнтов ΠΈ Π΄Π»Ρ опрСдСлСния Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ.

1.3 ΠœΠ΅Ρ‚ΠΎΠ΄ цикличСской Ρ€Π΅Π΄ΡƒΠΊΡ†ΠΈΠΈ

ВСрнСмся ΠΊ Π‘ЛАУ Π²ΠΈΠ΄Π° (1.1) ΠΈ Ρ€Π°ΡΡΠΌΠΎΡ‚Ρ€ΠΈΠΌ ΠΌΠ΅Ρ‚ΠΎΠ΄ цикличСской Ρ€Π΅Π΄ΡƒΠΊΡ†ΠΈΠΈ ΠΏΡ€ΠΈΠΌΠ΅Π½ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ ΠΊ ΡƒΠΊΠ°Π·Π°Π½Π½ΠΎΠΉ систСмС.

ΠŸΠ΅Ρ€Π΅ΠΏΠΈΡˆΠ΅ΠΌ систСму (1.1) Π² Π²ΠΈΠ΄Π΅ (1.12):

.

ИдСя ΠΌΠ΅Ρ‚ΠΎΠ΄Π° цикличСской Ρ€Π΅Π΄ΡƒΠΊΡ†ΠΈΠΈ состоит Π² ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΌ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΈ ΠΈΠ· ΡƒΡ€Π°Π²Π½Π΅Π½ΠΈΠΉ систСмы (1.12) нСизвСстных сначала с Π½Π΅Ρ‡Π΅Ρ‚Π½Ρ‹ΠΌΠΈ Π½ΠΎΠΌΠ΅Ρ€Π°ΠΌΠΈ i, Π·Π°Ρ‚Π΅ΠΌ ΠΈΠ· ΠΎΡΡ‚Π°Π²ΡˆΠΈΡ…ΡΡ ΡƒΡ€Π°Π²Π½Π΅Π½ΠΈΠΉ с Π½ΠΎΠΌΠ΅Ρ€Π°ΠΌΠΈ i, ΠΊΡ€Π°Ρ‚Π½Ρ‹ΠΌΠΈ 2, Π·Π°Ρ‚Π΅ΠΌ 4 ΠΈ Ρ‚Π°ΠΊ Π΄Π°Π»Π΅Π΅.

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

(1.13)

Π‘ΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΊΠΎΠ½Π΅Ρ‡Π½Ρ‹Π΅ уравнСния Π±ΡƒΠ΄ΡƒΡ‚ ΠΊΠΎΡ€Ρ€Π΅ΠΊΡ‚Π½ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Ρ‹, Ссли ΠΌΡ‹ ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΠΌ .Если ΠΏΠ΅Ρ€Π²ΠΎΠ΅ ΠΈΠ· ΡΡ‚ΠΈΡ… ΡƒΡ€Π°Π²Π½Π΅Π½ΠΈΠΉ ΡƒΠΌΠ½ΠΎΠΆΠΈΡ‚ΡŒ Π½Π°, Π° ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π΅ Π½Π° ΠΈ ΡΡ‚ΠΈ Ρ‚Ρ€ΠΈ уравнСния ΡΠ»ΠΎΠΆΠΈΡ‚ΡŒ, всС ссылки Π½Π° ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹. ΠΈ ΡƒΠ½ΠΈΡ‡Ρ‚ΠΎΠΆΠ°ΡŽΡ‚ΡΡ.

Π’ΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ:

.

ΠŸΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅ΠΌ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π·Π°ΠΌΠ΅Π½Ρ‹:

Π’ΠΎΠ³Π΄Π° ΠΏΠΎΠ»ΡƒΡ‡Π°Π΅ΠΌ:

. (1.14)

Π£Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ (1.14) ΠΈΠΌΠ΅Π΅Ρ‚ ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ ΠΊ ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Π²Ρ‚ΠΎΡ€ΠΎΠΉ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ, ΠΈ, Ссли ΠΎΠ½ΠΈ написаны для , ΡΠ²Π»ΡΡŽΡ‚ΡΡ Ρ‚Ρ€Π΅Ρ…Π΄ΠΈΠ°Π³ΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΌ мноТСством ΡƒΡ€Π°Π²Π½Π΅Π½ΠΈΠΉ Ρ‚ΠΎΠ³ΠΎ ΠΆΠ΅ Π²ΠΈΠ΄Π°, Ρ‡Ρ‚ΠΎ ΠΈ ΠΈΡΡ…ΠΎΠ΄Π½Ρ‹Π΅ уравнСния (1.13), Π½ΠΎ Ρ Π΄Ρ€ΡƒΠ³ΠΈΠΌΠΈ коэффициСнтами. Π’ Π³Ρ€ΡƒΠ±ΠΎΠΌ ΠΏΡ€ΠΈΠ±Π»ΠΈΠΆΠ΅Π½ΠΈΠΈ число ΡƒΡ€Π°Π²Π½Π΅Π½ΠΈΠΉ Π±Ρ‹Π»ΠΎ ΠΏΠΎΠ΄Π΅Π»Π΅Π½ΠΎ ΠΏΠΎΠΏΠΎΠ»Π°ΠΌ. Π’ΠΏΠΎΠ»Π½Π΅ понятно, Ρ‡Ρ‚ΠΎ процСсс ΠΌΠΎΠΆΠ½ΠΎ рСкурсивно ΠΏΠΎΠ²Ρ‚ΠΎΡ€ΡΡ‚ΡŒ Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° послС ΡƒΡ€ΠΎΠ²Π½Π΅ΠΉ Ρ€Π΅Π΄ΡƒΠΊΡ†ΠΈΠΈ остаСтся Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½ΠΎΠ΅ ΡƒΡ€Π°Π²Π½Π΅Π½ΠΈΠ΅ для :

.

Π³Π΄Π΅ настроСчный индСкс ΡƒΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ Ρ€Π΅Π΄ΡƒΠΊΡ†ΠΈΠΈ. ΠŸΠΎΡΠΊΠΎΠ»ΡŒΠΊΡƒ, Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ для Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ уравнСния получаСтся посрСдством дСлСния

.

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

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

(1.15)

Π³Π΄Π΅ с ΡˆΠ°Π³ΠΎΠΌ Π΄ΠΎ ΠΈ, ΠΊΠΎΠ³Π΄Π° ΠΎΠ½ΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ мСсто.

Π”ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ° ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ этого Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½Π° Π½Π° Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅ Рисунок 2 для. Для удобства ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡ΠΈΠΌ Π²Π΅ΠΊΡ‚ΠΎΡ€ .

Рисунок 2 — Π”ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ° ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° цикличСской Ρ€Π΅Π΄ΡƒΠΊΡ†ΠΈΠΈ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π»ΠΈΠ½Π΅ΠΉΠ½Ρ‹ΠΉ ΡƒΡ€Π°Π²Π½Π΅Π½ΠΈΠ΅ Ρ‚Ρ€Π΅Ρ…Π΄ΠΈΠ³ΠΎΠ½Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠžΠ±Ρ‰ΠΈΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ цикличСской Ρ€Π΅Π΄ΡƒΠΊΡ†ΠΈΠΈ состоит ΠΈΠ· ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ шагов:

Π¨Π°Π³ 1. Π—Π°Π΄Π°Ρ‚ΡŒ Π½Π°Ρ‡Π°Π»ΡŒΠ½Ρ‹Π΅ значСния коэффициСнтов a, b, c ΠΈ ΠΏΡ€Π°Π²Ρ‹Ρ… частСй ΡƒΡ€Π°Π²Π½Π΅Π½ΠΈΠΉ f.

Π¨Π°Π³ 2. ΠŸΠ΅Ρ€Π΅ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ шага Ρ€Π΅Π΄ΡƒΠΊΡ†ΠΈΠΈ значСния коэффициСнтов a ΠΈ c.

Π¨Π°Π³ 3. ΠŸΠ΅Ρ€Π΅ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ шага Ρ€Π΅Π΄ΡƒΠΊΡ†ΠΈΠΈ значСния ΠΏΡ€Π°Π²Ρ‹Ρ… частСй ΡƒΡ€Π°Π²Π½Π΅Π½ΠΈΠΉ f.

Π¨Π°Π³ 4. Π Π΅ΡˆΠΈΡ‚ΡŒ систСму, ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΡƒΡŽ Π½Π° ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΌ шагС Ρ€Π΅Π΄ΡƒΠΊΡ†ΠΈΠΈ. Найти значСния Π΄Π²ΡƒΡ… нСизвСстных.

Π¨Π°Π³ 5. ΠŸΠ΅Ρ€Π΅ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ шага Ρ€Π΅Π΄ΡƒΠΊΡ†ΠΈΠΈ значСния ΠΎΡΡ‚Π°Π²ΡˆΠΈΡ…ΡΡ нСизвСстных.

2. ΠŸΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹Π΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ систСм Π»ΠΈΠ½Π΅ΠΉΠ½Ρ‹Ρ… алгСбраичСских ΡƒΡ€Π°Π²Π½Π΅Π½ΠΈΠΉ Ρ‚Ρ€Π΅Ρ…Π΄ΠΈΠ°Π³ΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π²ΠΈΠ΄Π°

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

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

Из ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»Π΅Π½Π½Ρ‹Ρ… Π΄Π°Π»Π΅Π΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² ΠΊ ΠΏΠ΅Ρ€Π²ΠΎΠΌΡƒ Π²ΠΈΠ΄Ρƒ (дСкомпозиция Π΄Π°Π½Π½Ρ‹Ρ…) слСдуСт отнСсти ΠΌΠ΅Ρ‚ΠΎΠ΄ Π΄Π΅ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ области ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ цикличСской Ρ€Π΅Π΄ΡƒΠΊΡ†ΠΈΠΈ. Алгоритмы ΠΏΡ€ΠΎΠ³ΠΎΠ½ΠΊΠΈ относятся ΠΊ Π²ΠΈΠ΄Ρƒ, основанному Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠΉ Π΄Π΅ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ.

2.1 ΠŸΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ встрСчных ΠΏΡ€ΠΎΠ³ΠΎΠ½ΠΎΠΊ

Рассмотрим Π΄Π²ΡƒΡ…Π·Π°Π΄Π°Ρ‡Π½Ρ‹ΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ, основанный Π½Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ встрСчных ΠΏΡ€ΠΎΠ³ΠΎΠ½ΠΎΠΊ.

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

ΠŸΡ€ΠΎΠΈΠ·Π²Π΅Π΄Π΅ΠΌ Ρ€Π°Π·Π±ΠΈΠ΅Π½ΠΈΠ΅ ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½ΠΎΠΉ сСточной области 1 Π½Π° ΠΈ, Π³Π΄Π΅ Π½ΠΈΠΆΠ½ΠΈΠΉ индСкс ΠΏΡ€ΠΈ — это Ρ€Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΡΡ‚ΡŒ области, Π° Π²Π΅Ρ€Ρ…Π½ΠΈΠΉ — Π½ΠΎΠΌΠ΅Ρ€ процСссора, ΠΊΠ°ΠΊ это ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅ 3. ВычислСния Ρ€Π°Π·Π΄Π΅Π»ΠΈΠΌ Π½Π° Ρ‚Ρ€ΠΈ шага, ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ прямому (рисунок 3Π°), ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΌΡƒ (рисунок 3Π²) Ρ…ΠΎΠ΄Ρƒ встрСчных ΠΏΡ€ΠΎΠ³ΠΎΠ½ΠΎΠΊ ΠΈ ΠΎΠ±ΠΌΠ΅Π½Ρƒ Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ процСссорами (рисунок 3Π±).

Рисунок 3Π° — ΠŸΡ€ΡΠΌΠΎΠΉ Ρ…ΠΎΠ΄ ΠΏΡ€ΠΎΠ³ΠΎΠ½ΠΎΠΊ Рисунок 3Π± — ОбмСн Π΄Π°Π½Π½Ρ‹ΠΌΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ Π·Π°Π΄Π°Ρ‡Π°ΠΌΠΈ Рисунок 3Π² — ΠžΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΉ Ρ…ΠΎΠ΄ ΠΏΡ€ΠΎΠ³ΠΎΠ½ΠΎΠΊ Π’ Ρ‚Π΅Ρ‡Π΅Π½ΠΈΠ΅ прямого Ρ…ΠΎΠ΄Π° ΠΏΡ€ΠΎΠ³ΠΎΠ½ΠΎΠΊ ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ процСссор Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ ΠΏΡ€ΠΎΠ³ΠΎΠ½ΠΎΡ‡Π½Ρ‹Π΅ коэффициСнты, , Π²Ρ‚ΠΎΡ€ΠΎΠΉ процСссор —,. Π”Π°Π»Π΅Π΅, ΠΏΠ΅Ρ€Π²Ρ‹ΠΉ процСссор ΠΏΠ΅Ρ€Π΅Π΄Π°Π΅Ρ‚ Π²Ρ‚ΠΎΡ€ΠΎΠΌΡƒ ΠΏΠ°Ρ€Ρƒ чисСл, , Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Ρ… для запуска ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠ³ΠΎ Ρ…ΠΎΠ΄Π° ΠΏΡ€ΠΎΠ³ΠΎΠ½ΠΊΠΈ Π½Π° Π²Ρ‚ΠΎΡ€ΠΎΠΌ процСссорС, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π² ΡΡ‚ΠΎ врСмя ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚ Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½ΡƒΡŽ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Ρƒ, Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡƒΡŽ ΠΏΠ΅Ρ€Π²ΠΎΠΌΡƒ процСссору. На Ρ‚Ρ€Π΅Ρ‚ΡŒΠ΅ΠΌ шагС ΠΎΠ±Π° процСссора ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎ Ρ€Π΅Π°Π»ΠΈΠ·ΡƒΡŽΡ‚ ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΉ Ρ…ΠΎΠ΄ ΠΏΡ€ΠΎΠ³ΠΎΠ½ΠΎΠΊ, находя Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ БЛАУ.

УскорСниС Ρ‚Π°ΠΊΠΎΠ³ΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° ΠΌΠΎΠΆΠ½ΠΎ ΠΎΡ†Π΅Π½ΠΈΡ‚ΡŒ Π²Π΅Π»ΠΈΡ‡ΠΈΠ½ΠΎΠΉ [4]:

;

Π³Π΄Π΅ M — Ρ€Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΡΡ‚ΡŒ БЛАУ, Π‘1MΠ° — Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ расчСта ΠΏΠΎ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠΌΡƒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡƒ, Ссли Π° — врСмя производства ΠΎΠ΄Π½ΠΎΠΉ арифмСтичСской ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ, ΠΊ=Ρƒ+ΠΏ — Π΄Π»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ ΠΎΠ΄Π½ΠΎΠΉ ΠΊΠΎΠΌΠΌΡƒΠ½ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ процСссорами (Ρƒ — врСмя установки Π½Π° ΠΎΠ±ΠΌΠ΅Π½, ΠΏ — врСмя ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ ΠΈΠ»ΠΈ ΠΏΡ€ΠΈΠ΅ΠΌΠ° (считаСм ΠΈΡ… Ρ€Π°Π²Π½Ρ‹ΠΌΠΈ) ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚Π° ΠΏΠΎ ΡΠ΅Ρ‚ΠΈ). ΠŸΡ€ΠΈ ΠΏΠ°ΠΊΠ΅Ρ‚Π½ΠΎΠΉ ΠΌΠΎΠ΄Π΅Π»ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Π΄Π°Π½Π½Ρ‹Ρ… врСмя ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡ΠΈ Ρ€Π°Π·Π½ΠΎΠ³ΠΎ объСма ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ остаСтся константой Π΄ΠΎ Ρ‚Π΅Ρ… ΠΏΠΎΡ€, ΠΏΠΎΠΊΠ° объСм ΠΏΠ΅Ρ€Π΅Π΄Π°Π²Π°Π΅ΠΌΠΎΠ³ΠΎ массива Π½Π΅ ΠΏΡ€Π΅Π²Ρ‹ΡΠΈΡ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΏΠ°ΠΊΠ΅Ρ‚Π°. Π—Π΄Π΅ΡΡŒ это условиС ΡΠΎΠ±Π»ΡŽΠ΄Π°Π΅Ρ‚ΡΡ (пСрСдаСтся всСго ΠΏΠ°Ρ€Π° чисСл), Π² Π΄Π°Π»ΡŒΠ½Π΅ΠΉΡˆΠ΅ΠΌ Ρ‚Π°ΠΊΠΆΠ΅ Π±ΡƒΠ΄Π΅ΠΌ ΠΏΠΎΠ»Π°Π³Π°Ρ‚ΡŒ Π΅Π³ΠΎ Π²Π΅Ρ€Π½Ρ‹ΠΌ. К ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡŽ, этот ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ нСльзя Ρ€Π°Π·Π²ΠΈΡ‚ΡŒ для большСго количСства Π·Π°Π΄Π°Ρ‡ (Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Π½Π΅ ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌ [10]), Ссли сСточная ΠΎΠ±Π»Π°ΡΡ‚ΡŒ ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Π°.

2.2 ΠœΠ΅Ρ‚ΠΎΠ΄ Π΄Π΅ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ области

ΠžΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ Π½Π° ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΠΎΡΡ‚ΡŒ ΠΏΡ€Π΅Π΄Ρ‹Π΄ΡƒΡ‰Π΅Π³ΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° суТаСт ΠΎΠ±Π»Π°ΡΡ‚ΡŒ Π΅Π³ΠΎ примСнСния. Рассмотрим ΠΌΠ°ΡΡˆΡ‚Π°Π±ΠΈΡ€ΡƒΠ΅ΠΌΡ‹ΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ, основанный Π½Π° Π΄Π΅ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ области. ΠŸΡƒΡΡ‚ΡŒ имССтся систСма ΡƒΡ€Π°Π²Π½Π΅Π½ΠΈΠΉ Π²ΠΈΠ΄Π°:

Ax=b;

Π³Π΄Π΅ А — Ρ‚Ρ€Π΅Ρ…Π΄ΠΈΠ°Π³ΠΎΠ½Π°Π»ΡŒΠ½Π°Ρ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° Ρ€Π°Π·ΠΌΠ΅Ρ€Π° nΠ§n;

n=pq+p-1 для Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… Ρ†Π΅Π»Ρ‹Ρ… p ΠΈ q (p>q).

Алгоритм основан Π½Π° Ρ€Π°Π·Π±ΠΈΠ΅Π½ΠΈΠΈ мноТСства нСизвСстных Π½Π° Π½Π΅ΠΏΠ΅Ρ€Π΅ΡΠ΅ΠΊΠ°ΡŽΡ‰ΠΈΠ΅ΡΡ подмноТСства Di ΠΈ ΠΌΠ½ΠΎΠΆΠ΅ΡΡ‚Π²ΠΎ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚Π΅Π»Π΅ΠΉ Si, ΠΊΠ°ΠΊ это ΠΏΠΎΠΊΠ°Π·Π°Π½ΠΎ Π½Π° Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅ 4:

Рисунок 4 — Π Π°Π·Π±ΠΈΠ΅Π½ΠΈΠ΅ мноТСства нСизвСстных Π—Π°Ρ‚Π΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΡƒΠΏΠΎΡ€ΡΠ΄ΠΎΡ‡ΠΈΠ²Π°ΡŽΡ‚ΡΡ ΠΏΡƒΡ‚Π΅ΠΌ присвоСния послСдних индСксов элСмСнтам мноТСства S, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈΠ²ΠΎΠ΄ΠΈΡ‚ ΠΊ ΡΠΈΡΡ‚Π΅ΠΌΠ΅ стрСловидного Π²ΠΈΠ΄Π°:

(2.1)

Вводя ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ обозначСния Al=diag (A1Ap), BT=(B1Bp), C=(C1Cp), xl=(x1xp), bl=(b1bp), ΠΎΠΏΠΈΡΠ°Π½Π½ΡƒΡŽ Π²Ρ‹ΡˆΠ΅ систСму ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π² Π²ΠΈΠ΄Π΅:

(2.2)

(2.3)

ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠ², Ρ‡Ρ‚ΠΎ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° Al нСвыроТдСнная, ΡƒΠΌΠ½ΠΎΠΆΠΈΠΌ ΡƒΡ€Π°Π²Π½Π΅Π½ΠΈΠ΅ (2.3) Π½Π° C ΠΈ Π²Ρ‹Ρ‡Ρ‚Π΅ΠΌ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΠΎΠ΅ ΠΈΠ· ΡƒΡ€Π°Π²Π½Π΅Π½ΠΈΠΈΡ (2.2):

(2.4)

Π³Π΄Π΅

Как Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Π±ΡƒΠ΄Π΅Ρ‚ Ρ€Π΅ΡˆΠ΅Π½Π° систСма (2.4) ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ xs, ΠΎΡΡ‚Π°Π»ΡŒΠ½Ρ‹Π΅ нСизвСстныС ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΠΉΡ‚ΠΈ ΠΈΠ· ΡΠΈΡΡ‚Π΅ΠΌ:

Alxi= bl - Bxs;

Π³Π΄Π΅ .

Π”Π°Π½Π½Ρ‹Π΅ систСмы ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π΅ΡˆΠ°Ρ‚ΡŒ нСзависимо Π΄Ρ€ΡƒΠ³ ΠΎΡ‚ Π΄Ρ€ΡƒΠ³Π°. ΠšΡ€ΠΎΠΌΠ΅ Ρ‚ΠΎΠ³ΠΎ, слагаСмыС CB ΠΈ Cb Ρ‚Π°ΠΊΠΆΠ΅ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°Ρ…ΠΎΠ΄ΠΈΡ‚ΡŒ нСзависимо. Π‘Ρ…Π΅ΠΌΠ° Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° Π΄Π΅ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ областСй прСдставлСна Π½Π° Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅ 5:

Рисунок 5 — Π‘Ρ…Π΅ΠΌΠ° Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° Π΄Π΅ΠΊΠΎΠΌΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ области УскорСниС Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° оцСниваСтся Π²Π΅Π»ΠΈΡ‡ΠΈΠ½ΠΎΠΉ:

Π³Π΄Π΅ — врСмя Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ исходной систСмы, — число ΠΌΠ°Ρ‚Ρ€ΠΈΡ† Π½Π° ΠΏΠ΅Ρ€Π²ΠΎΠΌ процСссорС, — врСмя глобальной рассылки массива, состоящСй ΠΈΠ· q элСмСнтов, Ρ„n — врСмя пСрСсылки ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΏΠ°ΠΊΠ΅Ρ‚Π° ΠΏΠΎ ΡΠ΅Ρ‚ΠΈ.

2.3 ΠŸΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΠΏΡ€Π°Π²ΠΎΠΉ ΠΏΡ€ΠΎΠ³ΠΎΠ½ΠΊΠΈ

Рассмотрим схСму распараллСливания ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΏΡ€ΠΎΠ³ΠΎΠ½ΠΊΠΈ ΠΏΡ€ΠΈ использовании p ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ². ΠŸΡƒΡΡ‚ΡŒ Π½ΡƒΠΆΠ½ΠΎ Ρ€Π΅ΡˆΠΈΡ‚ΡŒ Ρ‚Ρ€Π΅Ρ…Π΄ΠΈΠ°Π³ΠΎΠ½Π°Π»ΡŒΠ½ΡƒΡŽ систСму Π»ΠΈΠ½Π΅ΠΉΠ½Ρ‹Ρ… ΡƒΡ€Π°Π²Π½Π΅Π½ΠΈΠΉ с ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ p ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ².

ΠŸΡ€ΠΈΠΌΠ΅Π½ΠΈΠΌ Π±Π»ΠΎΡ‡Π½Ρ‹ΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ ΠΊ Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΡŽ Π΄Π°Π½Π½Ρ‹Ρ…: ΠΏΡƒΡΡ‚ΡŒ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΏΠΎΡ‚ΠΎΠΊ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ m=n/p строк ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ A, Ρ‚. Π΅. k-ΠΉ ΠΏΠΎΡ‚ΠΎΠΊ ΠΎΠ±Ρ€Π°Π±Π°Ρ‚Ρ‹Π²Π°Π΅Ρ‚ строки с Π½ΠΎΠΌΠ΅Ρ€Π°ΠΌΠΈ. ΠΊΡ€Π°Ρ‚Π½ΠΎ числу ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ², Π² ΠΎΠ±Ρ‰Π΅ΠΌ случаС измСнится Ρ‚ΠΎΠ»ΡŒΠΊΠΎ число ΡƒΡ€Π°Π²Π½Π΅Π½ΠΈΠΉ Π² ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΌ ΠΏΠΎΡ‚ΠΎΠΊΠ΅. НиТС, Π½Π° Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅ 6, прСдставлСно Ρ€Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… для Ρ‚Ρ€Π΅Ρ… ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² Π² ΡΠ»ΡƒΡ‡Π°Π΅ систСмы ΠΈΠ· 12 ΡƒΡ€Π°Π²Π½Π΅Π½ΠΈΠΉ.

Рисунок 6 — Π Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Ρ… для Ρ‚Ρ€Π΅Ρ… ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² систСмы ΠΈΠ· 12 ΡƒΡ€Π°Π²Π½Π΅Π½ΠΈΠΉ

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

ΠœΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ Ρ‚Π°ΠΊΠΆΠ΅ подвСргнутся элСмСнты Π²Π΅ΠΊΡ‚ΠΎΡ€Π° ΠΏΡ€Π°Π²ΠΎΠΉ части. Рисунок 7 ΠΈΠ»Π»ΡŽΡΡ‚Ρ€ΠΈΡ€ΡƒΠ΅Ρ‚ Π΄Π°Π½Π½Ρ‹ΠΉ процСсс, Ρ‡Π΅Ρ€Ρ‚ΠΎΠΉ свСрху ΠΎΡ‚ΠΌΠ΅Ρ‡Π΅Π½Ρ‹ элСмСнты, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π±ΡƒΠ΄ΡƒΡ‚ ΠΌΠΎΠ΄ΠΈΡ„ΠΈΡ†ΠΈΡ€ΠΎΠ²Π°Π½Ρ‹.

Рисунок 7 — Π˜Π»Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΡ прямого Ρ…ΠΎΠ΄Π° ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠΉ ΠΏΡ€ΠΎΠ³ΠΎΠ½ΠΊΠΈ.

Π—Π°Ρ‚Π΅ΠΌ выполняСтся ΠΎΠ±Ρ€Π°Ρ‚Π½Ρ‹ΠΉ Ρ…ΠΎΠ΄ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° — ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΏΠΎΡ‚ΠΎΠΊ ΠΈΡΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ Π½Π°Π΄Π΄ΠΈΠ°Π³ΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Π΅ элСмСнты, начиная с ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅Π³ΠΎ.

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

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

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

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

2.4 ΠŸΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ цикличСской Ρ€Π΅Π΄ΡƒΠΊΡ†ΠΈΠΈ

ΠžΠΏΠΈΡΠ°Π½Π½Ρ‹ΠΉ Π²Ρ‹ΡˆΠ΅ способ выполнСния цикличСской Ρ€Π΅Π΄ΡƒΠΊΡ†ΠΈΠΈ ΠΈΠΌΠ΅Π΅Ρ‚ наимСньшСС число скалярных арифмСтичСских ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ ΠΈ, ΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎ, являСтся Π½Π°ΠΈΠ»ΡƒΡ‡ΡˆΠΈΠΌ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚ΠΎΠΌ для ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π°.

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

Π”ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ° ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ для ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π° ΠΏΠΎΠΊΠ°Π·Π°Π½Π° Π½Π° Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅ 12. Для удобства ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡ΠΈΠΌ Π²Π΅ΠΊΡ‚ΠΎΡ€ .

Рисунок 12 — Π”ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΠ° ΠΌΠ°Ρ€ΡˆΡ€ΡƒΡ‚ΠΈΠ·Π°Ρ†ΠΈΠΈ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ цикличСской Ρ€Π΅Π΄ΡƒΠΊΡ†ΠΈΠΈ На ΠΊΠ°ΠΆΠ΄ΠΎΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅ уравнСния Ρ€Π΅Π΄ΡƒΠΊΡ†ΠΈΠΈ для всСх ΠΏ ΡƒΡ€Π°Π²Π½Π΅Π½ΠΈΠΉ Ρ€Π΅ΡˆΠ°ΡŽΡ‚ΡΡ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎ. Π’Ρ€ΡƒΠ΄Π½ΠΎΡΡ‚ΡŒ Π²ΠΎΠ·Π½ΠΈΠΊΠ°Π΅Ρ‚ Ρ‚ΠΎΠ³Π΄Π°, ΠΊΠΎΠ³Π΄Π° Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ΡΡ Π΄Π°Π½Π½Ρ‹Π΅, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π½Π΅ ΠΏΠΎΠΏΠ°Π΄Π°ΡŽΡ‚ Π² ΠΎΠΏΠΈΡΠ°Π½Π½Ρ‹ΠΉ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½ . Однако ΠΌΠΎΠΆΠ½ΠΎ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ, Ρ‡Ρ‚ΠΎ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹ΠΉ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ получаСтся, Ссли ΠΏΡ€ΠΈΠ½ΡΡ‚ΡŒ

(2.5)

для и, или .

Π”ΠΎΠ±Π°Π²ΠΈΠ² эти ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½Ρ‹Π΅ значСния Π² ΠΈΠ·Π½Π°Ρ‡Π°Π»ΡŒΠ½ΡƒΡŽ систСму ΠΏΠΎΠ»ΡƒΡ‡ΠΈΠΌ ΡƒΡ€Π°Π²Π½Π΅Π½ΠΈΠ΅

для и; (2.6)

ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠ΅ Π΄Π°Π΅Ρ‚ ΠΏΡ€Π°Π²ΠΈΠ»ΡŒΠ½Ρ‹Π΅ значСния ΠΏΡ€ΠΈ ΠΏΠΎΠΏΠ°Π΄Π°Π½ΠΈΠΈ Π² ΡΠΈΡΡ‚Π΅ΠΌΡƒ (1.13). Π’Π΅ΠΏΠ΅Ρ€ΡŒ ΠΌΠΎΠΆΠ΅ΠΌ Ρ€Π°ΡΡΠΌΠ°Ρ‚Ρ€ΠΈΠ²Π°Ρ‚ΡŒ Π»ΠΈΠ±ΠΎ Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ исходного ΠΊΠΎΠ½Π΅Ρ‡Π½ΠΎΠ³ΠΎ мноТСства ΡƒΡ€Π°Π²Π½Π΅Π½ΠΈΠΉ, Π»ΠΈΠ±ΠΎ, ΠΊΠ°ΠΊ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚, Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Π½ΠΎΠ³ΠΎ бСсконСчного мноТСства с ΠΊΠΎΡΡ„Ρ„ΠΈΡ†ΠΈΠ΅Π½Ρ‚Π°ΠΌΠΈ (2.5). Π­Ρ‚ΠΎ Ρ€Π°Π²Π½ΠΎΠ·Π½Π°Ρ‡Π½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΡΡƒΠΌΠΌΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΌ уравнСниям, Ρ‚Π°ΠΊΠΈΠΌ ΠΊΠ°ΠΊ (2.6), Π²Π½Π΅ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° исходной Π·Π°Π΄Π°Ρ‡ΠΈ. Π›ΡŽΠ±Π°Ρ Ρ‚ΠΎΡ‡ΠΊΠ° зрСния Ρ€Π°Π²Π½ΠΎ справСдлива, Π½ΠΎ ΠΏΠΎΡΠ»Π΅Π΄Π½ΡΡ большС ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ΠΈΡ‚ для ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚Π° цикличСской Ρ€Π΅Π΄ΡƒΠΊΡ†ΠΈΠΈ, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½Π° описываСт Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹Π΅ значСния ΠΈ . Π²Π½Π΅ ΠΏΠ΅Ρ€Π²ΠΎΠ½Π°Ρ‡Π°Π»ΡŒΠ½ΠΎ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡Π΅Π½Π½ΠΎΠΉ Π·Π°Π΄Π°Ρ‡ΠΈ. ПослС подсчСта (фактичСски Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ значСния ΠΈ ). Π—Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ Ρ… получаСтся ΠΈΠ· ΡƒΡ€Π°Π²Π½Π΅Π½ΠΈΡ (1.15):

.

Π§Π»Π΅Π½Ρ‹ Ρ… Π² ΠΏΡ€Π°Π²ΠΎΠΉ части уравнСния (1.15) ΠΎΡ‚ΡΡƒΡ‚ΡΡ‚Π²ΡƒΡŽΡ‚, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ Π½Π° ΡΡ‚ΠΎΠΌ ΡƒΡ€ΠΎΠ²Π½Π΅ Ρ€Π΅Π΄ΡƒΠΊΡ†ΠΈΠΈ ΠΎΠ½ΠΈ Π»Π΅ΠΆΠ°Ρ‚ Π²Π½Π΅ Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π° ΠΈ ΠΏΠΎ ΡƒΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ (2.2) Ρ€Π°Π²Π½Ρ‹ Π½ΡƒΠ»ΡŽ.

Число ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ Π² Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ΅ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠΉ цикличСской Ρ€Π΅Π΄ΡƒΠΊΡ†ΠΈΠΈ составляСт:

;

Π³Π΄Π΅ ,.

НСдостатком Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° являСтся Ρ‚ΠΎ, Ρ‡Ρ‚ΠΎ Π΅Π³ΠΎ нСльзя ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для любого числа ΡƒΡ€Π°Π²Π½Π΅Π½ΠΈΠΉ Π² ΡΠΈΡΡ‚Π΅ΠΌΠ΅.

3. Π Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π½Π° GPU

Π’ ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½Π½ΠΎΠΌ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ΅ прСдполагаСтся ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅ вычислСний, Π½Π° Ρ†Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½ΠΎΠΌ процСссорном устройствС (CPU) ΠΈ Π½Π° Π³Ρ€Π°Ρ„ичСском процСссорном устройствС (GPU), Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ, Π½Π° Ρ‚Π°ΠΊ Π½Π°Π·Ρ‹Π²Π°Π΅ΠΌΠΎΠΉ Π³Π΅Ρ‚Π΅Ρ€ΠΎΠ³Π΅Π½Π½ΠΎΠΉ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ срСдС. ВычислСния, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ произвСсти нСзависимо, Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Π½Π° GPU. Участки, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ нСльзя Ρ€Π°ΡΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΠΈΡ‚ΡŒ, Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Π½Π° Π‘PU. Π—Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹Π΅ участки ΠΊΠΎΠ΄Π° Π½Π° Π³Ρ€Π°Ρ„ичСском устройствС позволяСт тСхнология CUDA.

3.1 ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ возмоТности ΠΈ ΠΎΡΠΎΠ±Π΅Π½Π½ΠΎΡΡ‚ΠΈ Ρ‚Π΅Ρ…Π½ΠΎΠ»ΠΎΠ³ΠΈΠΈ CUDA

ВСхнология CUDA — это ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎ-аппаратная Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½Π°Ρ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π° NVIDIA, основанная Π½Π° Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΈ языка Π‘ΠΈ, которая Π΄Π°Ρ‘Ρ‚ Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ доступа ΠΊ Π½Π°Π±ΠΎΡ€Ρƒ инструкций графичСского ускоритСля ΠΈ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΡ Π΅Π³ΠΎ ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ ΠΏΡ€ΠΈ ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹Ρ… вычислСний. CUDA ΠΏΠΎΠΌΠΎΠ³Π°Π΅Ρ‚ Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Ρ‹Π²Π°Ρ‚ΡŒ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹, Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΠΌΡ‹Π΅ Π½Π° Π³Ρ€Π°Ρ„ичСских процСссорах видСоускоритСлСй GeForce восьмого поколСния ΠΈ ΡΡ‚Π°Ρ€ΡˆΠ΅ (сСрии GeForce 8, GeForce 9, GeForce 200), Π° Ρ‚Π°ΠΊΠΆΠ΅ Quadro ΠΈ Tesla.

Π₯отя Ρ‚Ρ€ΡƒΠ΄ΠΎΡ‘ΠΌΠΊΠΎΡΡ‚ΡŒ программирования GPU ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ CUDA довольно Π²Π΅Π»ΠΈΠΊΠ°, ΠΎΠ½Π° Π½ΠΈΠΆΠ΅, Ρ‡Π΅ΠΌ с Ρ€Π°Π½Π½ΠΈΠΌΠΈ GPGPU Ρ€Π΅ΡˆΠ΅Π½ΠΈΡΠΌΠΈ. Π’Π°ΠΊΠΈΠ΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ Ρ‚Ρ€Π΅Π±ΡƒΡŽΡ‚ разбиСния прилоТСния ΠΌΠ΅ΠΆΠ΄Ρƒ нСсколькими ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΏΡ€ΠΎΡ†Π΅ΡΡΠΎΡ€Π°ΠΌΠΈ ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ MPI ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ, Π½ΠΎ Π±Π΅Π· раздСлСния Π΄Π°Π½Π½Ρ‹Ρ…, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ хранятся Π² ΠΎΠ±Ρ‰Π΅ΠΉ видСопамяти. И Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ CUDA ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ для ΠΊΠ°ΠΆΠ΄ΠΎΠ³ΠΎ ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΏΡ€ΠΎΡ†Π΅ΡΡΠΎΡ€Π° ΠΏΠΎΠ΄ΠΎΠ±Π½ΠΎ OpenMP ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡŽ, ΠΎΠ½ΠΎ Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ Ρ…ΠΎΡ€ΠΎΡˆΠ΅Π³ΠΎ понимания ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ памяти.

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

МодСль программирования Π² CUDA ΠΏΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅Ρ‚ Π³Ρ€ΡƒΠΏΠΏΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ². ΠŸΠΎΡ‚ΠΎΠΊΠΈ ΠΎΠ±ΡŠΠ΅Π΄ΠΈΠ½ΡΡŽΡ‚ΡΡ Π² Π±Π»ΠΎΠΊΠΈ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² (thread block) — ΠΎΠ΄Π½ΠΎΠΌΠ΅Ρ€Π½Ρ‹Π΅ ΠΈΠ»ΠΈ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½Ρ‹Π΅ сСтки ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ², Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… ΠΌΠ΅ΠΆΠ΄Ρƒ собой ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ раздСляСмой памяти ΠΈ Ρ‚ΠΎΡ‡Π΅ΠΊ синхронизации. ΠŸΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° (ядро, kernel) исполняСтся Π½Π°Π΄ сСткой (grid) Π±Π»ΠΎΠΊΠΎΠ² ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² (thread blocks). Π­Ρ‚Π° модСль прСдставлСна Π½Π° Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅ 13.

Рисунок 13 — МодСль программирования Π² CUDA

МодСль памяти Π² CUDA отличаСтся Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒΡŽ ΠΏΠΎΠ±Π°ΠΉΡ‚Π½ΠΎΠΉ адрСсации, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΊΠΎΠΉ ΠΊΠ°ΠΊ gather, Ρ‚Π°ΠΊ ΠΈ scatter. Доступно довольно большоС количСство рСгистров Π½Π° ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²Ρ‹ΠΉ процСссор, Π΄ΠΎ 1024 ΡˆΡ‚ΡƒΠΊ. Доступ ΠΊ Π½ΠΈΠΌ ΠΎΡ‡Π΅Π½ΡŒ быстрый, Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒ Π² Π½ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ 32-Π±ΠΈΡ‚Π½Ρ‹Π΅ Ρ†Π΅Π»Ρ‹Π΅ ΠΈΠ»ΠΈ числа с ΠΏΠ»Π°Π²Π°ΡŽΡ‰Π΅ΠΉ Ρ‚ΠΎΡ‡ΠΊΠΎΠΉ.

ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΏΠΎΡ‚ΠΎΠΊ ΠΈΠΌΠ΅Π΅Ρ‚ доступ ΠΊ ΡˆΠ΅ΡΡ‚ΠΈ Ρ‚ΠΈΠΏΠ°ΠΌ памяти, Ρ‡Ρ‚ΠΎ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΎ Π½Π° Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅ 14.

Рисунок 14 — Π’ΠΈΠ΄Ρ‹ памяти Π² CUDA

Π“Π»ΠΎΠ±Π°Π»ΡŒΠ½Π°Ρ ΠΏΠ°ΠΌΡΡ‚ΡŒ — самый большой ΠΎΠ±ΡŠΡ‘ΠΌ памяти, доступный для всСх ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΏΡ€ΠΎΡ†Π΅ΡΡΠΎΡ€ΠΎΠ² Π½Π° Π²ΠΈΠ΄Π΅ΠΎΡ‡ΠΈΠΏΠ΅, Ρ€Π°Π·ΠΌΠ΅Ρ€ составляСт ΠΎΡ‚ 256 ΠΌΠ΅Π³Π°Π±Π°ΠΉΡ‚ Π΄ΠΎ 1.5 Π³ΠΈΠ³Π°Π±Π°ΠΉΡ‚ Π½Π° Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΡ… Ρ€Π΅ΡˆΠ΅Π½ΠΈΡΡ…. ΠžΠ±Π»Π°Π΄Π°Π΅Ρ‚ высокой пропускной ΡΠΏΠΎΡΠΎΠ±Π½ΠΎΡΡ‚ΡŒΡŽ, Π±ΠΎΠ»Π΅Π΅ 100 Π³ΠΈΠ³Π°Π±Π°ΠΉΡ‚/с для Ρ‚ΠΎΠΏΠΎΠ²Ρ‹Ρ… Ρ€Π΅ΡˆΠ΅Π½ΠΈΠΉ NVIDIA, Π½ΠΎ ΠΎΡ‡Π΅Π½ΡŒ большими Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠ°ΠΌΠΈ Π² Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΎ сот Ρ‚Π°ΠΊΡ‚ΠΎΠ². НС ΠΊΡΡˆΠΈΡ€ΡƒΠ΅Ρ‚ΡΡ, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΎΠ±ΠΎΠ±Ρ‰Ρ‘Π½Π½Ρ‹Π΅ инструкции, ΠΈ ΠΎΠ±Ρ‹Ρ‡Π½Ρ‹Π΅ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΠΈ Π½Π° ΠΏΠ°ΠΌΡΡ‚ΡŒ.

Π›ΠΎΠΊΠ°Π»ΡŒΠ½Π°Ρ ΠΏΠ°ΠΌΡΡ‚ΡŒ — это нСбольшой ΠΎΠ±ΡŠΡ‘ΠΌ памяти, ΠΊ ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌΡƒ ΠΈΠΌΠ΅Π΅Ρ‚ доступ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΎΠ΄ΠΈΠ½ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²Ρ‹ΠΉ процСссор. Она ΠΎΡ‚Π½ΠΎΡΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ мСдлСнная — такая ΠΆΠ΅, ΠΊΠ°ΠΊ ΠΈ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½Π°Ρ.

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

ΠŸΠ°ΠΌΡΡ‚ΡŒ констант — ΠΎΠ±Π»Π°ΡΡ‚ΡŒ памяти объСмом 64 ΠΊΠΈΠ»ΠΎΠ±Π°ΠΉΡ‚Π°, доступная Ρ‚ΠΎΠ»ΡŒΠΊΠΎ для чтСния всСми ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΏΡ€ΠΎΡ†Π΅ΡΡΠΎΡ€Π°ΠΌΠΈ. Она ΠΊΡΡˆΠΈΡ€ΡƒΠ΅Ρ‚ΡΡ ΠΏΠΎ 8 ΠΊΠΈΠ»ΠΎΠ±Π°ΠΉΡ‚ Π½Π° ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΌΡƒΠ»ΡŒΡ‚ΠΈΠΏΡ€ΠΎΡ†Π΅ΡΡΠΎΡ€. Π”ΠΎΠ²ΠΎΠ»ΡŒΠ½ΠΎ мСдлСнная — Π·Π°Π΄Π΅Ρ€ΠΆΠΊΠ° Π² Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΎ сот Ρ‚Π°ΠΊΡ‚ΠΎΠ² ΠΏΡ€ΠΈ отсутствии Π½ΡƒΠΆΠ½Ρ‹Ρ… Π΄Π°Π½Π½Ρ‹Ρ… Π² ΠΊΡΡˆΠ΅.

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

ЕстСствСнно, Ρ‡Ρ‚ΠΎ глобальная, локальная, тСкстурная ΠΈ ΠΏΠ°ΠΌΡΡ‚ΡŒ констант — это физичСски ΠΎΠ΄Π½Π° ΠΈ Ρ‚Π° ΠΆΠ΅ ΠΏΠ°ΠΌΡΡ‚ΡŒ, извСстная ΠΊΠ°ΠΊ локальная Π²ΠΈΠ΄Π΅ΠΎΠΏΠ°ΠΌΡΡ‚ΡŒ Π²ΠΈΠ΄Π΅ΠΎΠΊΠ°Ρ€Ρ‚Ρ‹. Π˜Ρ… ΠΎΡ‚личия Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°Ρ… ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ ΠΈ ΠΌΠΎΠ΄Π΅Π»ΡΡ… доступа. Π¦Π΅Π½Ρ‚Ρ€Π°Π»ΡŒΠ½Ρ‹ΠΉ процСссор ΠΌΠΎΠΆΠ΅Ρ‚ ΠΎΠ±Π½ΠΎΠ²Π»ΡΡ‚ΡŒ ΠΈ Π·Π°ΠΏΡ€Π°ΡˆΠΈΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ внСшнюю ΠΏΠ°ΠΌΡΡ‚ΡŒ: Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½ΡƒΡŽ, ΠΊΠΎΠ½ΡΡ‚Π°Π½Ρ‚Π½ΡƒΡŽ ΠΈ Ρ‚Π΅ΠΊΡΡ‚ΡƒΡ€Π½ΡƒΡŽ. Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° памяти ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½Π° Π½Π° Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅ 15.

Рисунок 15 — МодСль памяти Π² CUDA

3.2 РСализация Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠ³ΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° Π½Π° GPU

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

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

Π Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹ΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ* продСмонстрирован схСматичСски Π½Π° Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅ 16 для случая, ΠΊΠΎΠ³Π΄Π° Π² ΡΠΈΡΡ‚Π΅ΠΌΠ΅ 8 ΡƒΡ€Π°Π²Π½Π΅Π½ΠΈΠΉ.

Рисунок 16 — Π‘Ρ…Π΅ΠΌΠ° Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠ³ΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° На Π²Ρ…ΠΎΠ΄Π΅ ΠΌΡ‹ ΠΈΠΌΠ΅Π΅ΠΌ ΠΎΠ΄Π½Ρƒ Ρ‚Ρ€Π΅Ρ…Π΄ΠΈΠ°Π³ΠΎΠ½Π°Π»ΡŒΠ½ΡƒΡŽ систСму Π»ΠΈΠ½Π΅ΠΉΠ½Ρ‹Ρ… ΡƒΡ€Π°Π²Π½Π΅Π½ΠΈΠΉ, ΡΠΎΡΡ‚ΠΎΡΡ‰ΡƒΡŽ ΠΈΠ· Π²ΠΎΡΡŒΠΌΠΈ ΡƒΡ€Π°Π²Π½Π΅Π½ΠΈΠΉ. На ΠΏΠ΅Ρ€Π²ΠΎΠΌ этапС данная систСма разбиваСтся Π½Π° Π΄Π²Π΅ подсистСмы, состоящих ΠΈΠ· Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅Ρ… ΡƒΡ€Π°Π²Π½Π΅Π½ΠΈΠΉ, ΠΏΠΎ ΡΡ‚Ρ€ΠΎΠ΅Π½ΠΈΡŽ эти систСмы Π°Π½Π°Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ ΠΏΠ΅Ρ€Π²ΠΎΠΉ. ΠŸΡ€ΠΈ нСобходимости Ρ€Π°Π·Π±ΠΈΠ΅Π½ΠΈΠ΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Ρ‚ΡŒ Π΄ΠΎ Ρ‚ΠΎΠ³ΠΎ ΠΌΠΎΠΌΠ΅Π½Ρ‚Π°, ΠΊΠΎΠ³Π΄Π° подсистСмы Π±ΡƒΠ΄ΡƒΡ‚ ΠΏΠΎΠΌΠ΅Ρ‰Π°Ρ‚ΡŒΡΡ Π² Ρ€Π°Π·Π΄Π΅Π»ΡΠ΅ΠΌΡƒΡŽ ΠΏΠ°ΠΌΡΡ‚ΡŒ GPU. На ΠΏΠΎΡΠ»Π΅Π΄Π½Π΅ΠΌ этапС ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Π΅ систСмы Ρ€Π΅ΡˆΠ°ΡŽΡ‚ΡΡ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° ΠΏΡ€ΠΎΠ³ΠΎΠ½ΠΊΠΈ.

Π’ Ρ…ΠΎΠ΄Π΅ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π½Π°Π΄ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠ΅ΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° Π±Ρ‹Π»ΠΎ принято Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ Π·Π°ΠΏΡƒΡΠΊΠ°Ρ‚ΡŒ Π΄Π²Π° ядра — Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡŽΡ‚ΡΡ Π½Π° Π“ΠŸΠ£.

ΠŸΠ΅Ρ€Π²ΠΎΠ΅ ядро осущСствляСт Ρ€Π΅Π΄ΡƒΠΊΡ†ΠΈΡŽ, разбивая систСму Π΄ΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΡƒΠΌΠ΅Ρ‰Π°ΡŽΡ‚ΡΡ Π² Ρ€Π°Π·Π΄Π΅Π»ΡΠ΅ΠΌΡƒΡŽ ΠΏΠ°ΠΌΡΡ‚ΡŒ GPU. РСдукция осущСствляСтся Π΄ΠΎ ΡƒΡ€ΠΎΠ²Π½Ρ. ΠŸΡ€ΠΈ этом Π΄ΠΎΠ»ΠΆΠ½ΠΎ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ ΡƒΡΠ»ΠΎΠ²ΠΈΡŽ:

;

Π³Π΄Π΅ объСм раздСляСмой памяти Π² ΠΎΠ΄Π½ΠΎΠΌ Π±Π»ΠΎΠΊΠ΅, объСм памяти Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΡ‹ΠΉ для хранСния исходной Π·Π°Π΄Π°Ρ‡ΠΈ.

Для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° Ρ€Π΅Π΄ΡƒΠΊΡ†ΠΈΠΈ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΊΠ°ΠΆΠ΄ΠΎΠΌΡƒ ΡƒΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ соотвСтствовала своя Π½ΠΈΡ‚ΡŒ, ΠΎΠ΄Π½Π°ΠΊΠΎ количСство Π½ΠΈΡ‚Π΅ΠΉ Π² ΠΎΠ΄Π½ΠΎΠΌ Π±Π»ΠΎΠΊΠ΅ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΎ, поэтому для Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π΄Π°Π½Π½ΠΎΠ³ΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° Π½Π° ΠΊΠ°ΠΆΠ΄ΡƒΡŽ систСму Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π²Ρ‹Π΄Π΅Π»ΠΈΡ‚ΡŒ

;

Π³Π΄Π΅ — количСство Π±Π»ΠΎΠΊΠΎΠ², количСство ΡƒΡ€Π°Π²Π½Π΅Π½ΠΈΠΉ Π² ΡΠΈΡΡ‚Π΅ΠΌΠ΅, максимально Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΠ΅ количСство Π½ΠΈΡ‚Π΅ΠΉ Π² ΠΎΠ΄Π½ΠΎΠΌ Π±Π»ΠΎΠΊΠ΅, Π° ΠΎΠ±Ρ‰Π΅Π΅ количСство Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… Π±Π»ΠΎΠΊΠΎΠ² составит:

;

Π³Π΄Π΅ ΠΎΠ±Ρ‰Π΅Π΅ количСство Π²Ρ‹Π΄Π΅Π»Π΅Π½Π½Ρ‹Ρ… Π±Π»ΠΎΠΊΠΎΠ², Π° ΠΊΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ Ρ€Π΅ΡˆΠ°Π΅ΠΌΡ‹Ρ… систСм.

Π’Ρ‚ΠΎΡ€ΠΎΠ΅ ядро Ρ€Π΅ΡˆΠ°Π΅Ρ‚ ΠΊΠ°ΠΆΠ΄ΡƒΡŽ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΡƒΡŽ Ρ€Π΅Π΄ΡƒΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ систСму ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ ΠΏΡ€ΠΎΠ³ΠΎΠ½ΠΊΠΈ. Π’ ΡΡ‚ΠΎΠΌ ядрС ΠΊΠ°ΠΆΠ΄ΠΎΠΉ систСмС соотвСтствуСт свой Π±Π»ΠΎΠΊ. ΠšΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ Π±Π»ΠΎΠΊΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ Ρ€Π°ΡΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΏΠΎ Ρ„ΠΎΡ€ΠΌΡƒΠ»Π΅:

.

На Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅ 17 ΠΈΠ·ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½Π° схСма Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°.

Рисунок 17 — Π‘Ρ…Π΅ΠΌΠ° Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° Π½Π° Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ систСмС

НиТС ΠΈΠ·Π»ΠΎΠΆΠ΅Π½ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠ³ΠΎ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° с ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ ΠΎΠ΄Π½ΠΎΠ³ΠΎ Π“ΠŸΠ£.

1.Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ исходных массивов Π΄Π°Π½Π½Ρ‹Ρ….

2. Π’Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ глобальной памяти Π½Π° GPU ΠΏΠΎΠ΄ массивы коэффициСнтов a, b, c, f ΠΈ ΠΌΠ°ΡΡΠΈΠ² нСизвСстных x.

3. ΠŸΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° массивов коэффициСнтов a, b, c, f Π½Π° GPU.

4. Π’Ρ‹Π·ΠΎΠ² ядра. Π Π°Π·Π΄Π΅Π»Π΅Π½ΠΈΠ΅ систСмы Π½Π° Π±ΠΎΠ»Π΅Π΅ ΠΌΠ΅Π»ΠΊΠΈΠ΅.

5. Π’Ρ‹Π·ΠΎΠ² ядра, Ρ€Π΅ΡˆΠ°ΡŽΡ‰Π΅Π³ΠΎ ΠΊΠ°ΠΆΠ΄ΡƒΡŽ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΡƒΡŽ Ρ€Π΅Π΄ΡƒΡ†ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ систСму ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠΌ ΠΏΡ€ΠΎΠ³ΠΎΠ½ΠΊΠΈ.

6.ΠŸΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰Π΅Π³ΠΎ x Π²Π΅ΠΊΡ‚ΠΎΡ€Π° Π½Π° CPU.

Π§Ρ‚ΠΎΠ±Ρ‹ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΠ»ΠΈΡΡŒ Π½Π΅ ΠΏΡ€ΠΎΡ†Π΅ΡΡΠΎΡ€ΠΎΠΌ, Π° ΡƒΡΡ‚ройством, ΠΎΠ½ΠΈ ΠΈΠΌΠ΅ΡŽΡ‚ ΠΊΠ²Π°Π»ΠΈΡ„ΠΈΠΊΠ°Ρ‚ΠΎΡ€ __global__.

ОбъявлСниС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ядра, ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡŽΡ‰Π΅Π³ΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Ρ€Π΅Π΄ΡƒΠΊΡ†ΠΈΠΈ, ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ Π²ΠΈΠ΄:

__global__ void reduction (float *a, float *b, float *c, float *f) {

int thread = blockIdx. x*N+threadIdx.x+1;

int block = blockIdx. x;

for (int i=0; i

int min = thread-pow (2.0, i);

int max = thread+pow (2.0, i);

if (min

if (max>(block+1)*N) max=0;

float alfa=-a[thread]/b[min];

float betta=-c[thread]/b[max];

float zn0=alfa*a[min];

float zn1=b[thread]+alfa*c[min]+betta*a[max];

float zn2=betta*c[max];

float zn3=f[thread]+alfa*f[min]+betta*f[max];

__threadfence ();

a[thread]=zn0;

b[thread]=zn1;

c[thread]=zn2;

f[thread]=zn3;

}

}

Π’Ρ‹Π·ΠΎΠ² ядра ΠΈΠ· ΠΎΡΠ½ΠΎΠ²Π½ΠΎΠΉ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹ осущСствляСтся ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ:

reduction<<>>(dev_a, dev_b, dev_c, dev_f).

Для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с ΡƒΡΡ‚ройством использовались ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ встроСнныС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ:

— Π²Ρ‹Π΄Π΅Π»Π΅Π½ΠΈΠ΅ памяти Π½Π° ΡƒΡΡ‚ройствС:

cudaMalloc ((void**) &dev_a, (N*M+1)*sizeof (float));

— ΠΎΡΠ²ΠΎΠ±ΠΎΠΆΠ΄Π΅Π½ΠΈΡ памяти Π½Π° ΡƒΡΡ‚ройствС:

cudaFree (dev_a);

— ΠΏΠ΅Ρ€Π΅ΡΡ‹Π»ΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ… с Π¦ΠŸΠ£ Π½Π° Π“ΠŸΠ£:

cudaMemcpy (dev_a, a,(N*M+1)*sizeof (float), cudaMemcpyHostToDevice);

— ΠΏΠ΅Ρ€Π΅ΡΡ‹Π»ΠΊΠ° Π΄Π°Π½Π½Ρ‹Ρ… с Π“ΠŸΠ£ Π½Π° Π¦ΠŸΠ£:

cudaMemcpy (a, dev_a,(N*M+1)*sizeof (float), cudaMemcpyDeviceToHost);

4. ИсслСдования Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ²

ИсслСдования Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² Π±ΡƒΠ΄Π΅ΠΌ ΠΏΡ€ΠΎΠ²ΠΎΠ΄ΠΈΡ‚ΡŒ Π½Π° Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ систСмС с Π³Ρ€Π°Ρ„ичСским Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ устройством GeForce GT 540M, ЦПУ Intel Core i5−2410М 2,3 Π“Π³Ρ†, ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠΉ систСмой Microsoft Windows 7 с ΡƒΡΡ‚Π°Π½ΠΎΠ²Π»Π΅Π½Π½Ρ‹ΠΌ Π΄Ρ€Π°ΠΉΠ²Π΅Ρ€ΠΎΠΌ NVIDIA CUDA Version 4.0.

Π‘ΡƒΠ΄Π΅ΠΌ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΠΊΠ°ΠΊ Ρ€Π°Π·Π΄Π΅Π»ΡΠ΅ΠΌΡƒΡŽ, Ρ‚Π°ΠΊ ΠΈ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½ΡƒΡŽ ΠΏΠ°ΠΌΡΡ‚ΡŒ GPU. Π“Π»ΠΎΠ±Π°Π»ΡŒΠ½ΡƒΡŽ ΠΏΠ°ΠΌΡΡ‚ΡŒ GPU, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ΠΎΠ½Π° ΠΈΠΌΠ΅Π΅Ρ‚ большой объСм, Π±ΡƒΠ΄Π΅Ρ‚ ΡƒΠ΄ΠΎΠ±Π½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для раздСлСния систСмы Π½Π° Ρ‡Π°ΡΡ‚ΠΈ, Π° Ρ€Π°Π·Π΄Π΅Π»ΡΠ΅ΠΌΠ°Ρ Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€ΠΈΠΌΠ΅Π½ΡΡ‚ΡŒΡΡ для Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½Ρ‹Ρ… Π² Ρ…ΠΎΠ΄Π΅ разбиСния Π½ΠΎΠ²Ρ‹Ρ… систСм.

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

Π’Π°ΠΊ ΠΊΠ°ΠΊ Π² Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠΌ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ΅ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Ρ‚Ρ€Π΅Ρ…Π΄ΠΈΠ°Π³ΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… систСм Π»ΠΈΠ½Π΅ΠΉΠ½Ρ‹Ρ… алгСбраичСских ΡƒΡ€Π°Π²Π½Π΅Π½ΠΈΠΉ для разбиСния Π±ΠΎΠ»ΡŒΡˆΠΈΡ… систСм Π½Π° ΠΌΠ°Π»Ρ‹Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ ΠΌΠ΅Ρ‚ΠΎΠ΄ цикличСской Ρ€Π΅Π΄ΡƒΠΊΡ†ΠΈΠΈ, ΠΏΡ€ΠΎΠ²Π΅Π΄Π΅ΠΌ экспСримСнты для Ρ€Π°Π·Π½Ρ‹Ρ… стСпСнСй разбиСния систСмы. ЗафиксируСм значСния M ΠΈ N ΠΈ Π±ΡƒΠ΄Π΅ΠΌ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ ΡΡ‚Π΅ΠΏΠ΅Π½ΡŒ разбиСния систСмы k. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ запишСм Π² Π²ΠΈΠ΄Π΅ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΈ Π³Ρ€Π°Ρ„ΠΈΠΊΠ° (для Π»ΡƒΡ‡ΡˆΠ΅ΠΉ наглядности)

4.1 ИсслСдования ускорСния Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°

ΠŸΡ€ΠΎΠ²Π΅Π΄Π΅ΠΌ исслСдования Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°, зафиксируСм количСство систСм M, Π° ΠΊΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ ΡƒΡ€Π°Π²Π½Π΅Π½ΠΈΠΉ N Π±ΡƒΠ΄Π΅ΠΌ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ. Π’ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ 1 прСдставлСны Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ исслСдования ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния вычислСний ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° Π½Π° CPU (TCPU) ΠΊΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния вычислСний Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠ³ΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° Π½Π° GPU (TGPU) ΠΎΡ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ² сСточной области. Число систСм ΡƒΡ€Π°Π²Π½Π΅Π½ΠΈΠΉ равняСтся 300, 500 ΠΈ 700 для ΠΎΠ΄Π½ΠΈΡ… ΠΈ Ρ‚Π΅Ρ… ΠΆΠ΅ N .

Π’Π°Π±Π»ΠΈΡ†Π° 1

q

M =700

M =500

M =300

0,25

0,1625

0,0825

0,275

0,55

0,195

0,75

0,675

0,475

1,475

1,825

1,225

3,75

3,25

1,55

5,15

2,325

7,0425

6,3

5,25

9,75

6,05

8,125

9,225

8,9

8,95

8,5

9,175

8,5

8,75

9,025

8,975

8,625

9,1

9,2

Для ΠΈΠ»Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹Ρ… Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ 6 Π΄Π°Π½Π½Ρ‹Ρ… Π½Π° Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅ 18 ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ Π³Ρ€Π°Ρ„ΠΈΠΊ зависимости ускорСния S Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° ΠΎΡ‚ .

Рисунок 18

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

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

Π’Π΅ΠΏΠ΅Ρ€ΡŒ зафиксируСм количСство ΡƒΡ€Π°Π²Π½Π΅Π½ΠΈΠΉ N, Π° ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ Π±ΡƒΠ΄Π΅ΠΌ количСство систСм M. Π’ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ 1 прСдставлСны Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ исслСдования ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния вычислСний ΠΏΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡƒ Π½Π° CPU (TCPU)ΠΊΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния вычислСний Π½Π° GPU (TGPU) ΠΎΡ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ² сСточной области. Число ΡƒΡ€Π°Π²Π½Π΅Π½ΠΈΠΉ Π² ΡΠΈΡΡ‚Π΅ΠΌΠ΅ равняСтся 512, 1024 ΠΈ 2048 для ΠΎΠ΄Π½ΠΈΡ… ΠΈ Ρ‚Π΅Ρ… ΠΆΠ΅ M.

Π’Π°Π±Π»ΠΈΡ†Π° 2

M

N =2048

N =1024

N =512

0,475

2,075

1,225

6,75

5,3

4,125

7,725

6,625

5,05

7,875

7,65

5,925

8,775

8,575

6,325

9,575

8,975

6,9

9,45

8,675

7,625

9,2

8,525

7,75

8,425

8,75

8,575

8,8

9,25

8,4

8,625

8,925

8,975

9,6

8,5

8,825

8,775

8,975

9,3

Для ΠΈΠ»Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹Ρ… Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ 2 Π΄Π°Π½Π½Ρ‹Ρ… Π½Π° Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅ 19 ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ Π³Ρ€Π°Ρ„ΠΈΠΊ зависимости ускорСния S Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° ΠΎΡ‚ M.

Рисунок 19

Из Ρ€ΠΈΡΡƒΠ½ΠΊΠ° 19 Π²ΠΈΠ΄Π½Ρ‹ Π³Ρ€Π°Π½ΠΈΡ†Ρ‹ эффСктивного примСнСния Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°. МоТно ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ Π²Ρ‹Π²ΠΎΠ΄Ρ‹, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠΈ количСства систСм ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΠ΅ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния вычислСний ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° Π½Π° CPU (TCPU) ΠΊΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния вычислСний Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠ³ΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° Π½Π° GPU (TGPU) возрастаСт с ΡƒΠ²Π΅Π»ΠΈΡ‡Π΅Π½ΠΈΠ΅ΠΌ числа Ρ€Π΅ΡˆΠ°Π΅ΠΌΡ‹Ρ… систСм. ΠŸΡ€ΠΈ количСствС систСм Π΄ΠΎ 100, ускорСниС мСньшС Π΅Π΄ΠΈΠ½ΠΈΡ†Ρ‹. А Π·Π½Π°Ρ‡ΠΈΡ‚, ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ ΠΌΠ΅Π΄Π»Π΅Π½Π½Π΅Π΅, Ρ‡Π΅ΠΌ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΉ, Ρ‡Ρ‚ΠΎ связано с Π½Π΅ΠΏΠΎΠ»Π½ΠΎΠΉ Π·Π°Π³Ρ€ΡƒΠΆΠ΅Π½Π½ΠΎΡΡ‚ΡŒΡŽ. На Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΆΠ΅ количСствах систСм Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ эффСктивСн, Ρ‚Π°ΠΊ ΠΊΠ°ΠΊ ускорСниС большС Π΅Π΄ΠΈΠ½ΠΈΡ†Ρ‹. Из Π³Ρ€Π°Ρ„ΠΈΠΊΠ° Π²ΠΈΠ΄Π½ΠΎ, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ количСствС систСм большС 350, ускорСниС Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ ΠΊΠΎΠ»Π΅Π±Π°Ρ‚ΡŒΡΡ ΠΎΠΊΠΎΠ»ΠΎ 9. Π­Ρ‚ΠΎ ΠΎΠ±ΡŠΡΡΠ½ΡΠ΅Ρ‚ΡΡ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ΠΌ роста ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π²Ρ‹Ρ‡ΠΈΡΠ»ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠΉ систСмы.

Π’ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠΌ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ΅ для разбиСниСя систСм ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ цикличСская рСдукция. Π’ Ρ‚Π°Π±Π»ΠΈΡ†Π΅ 3 прСдставлСны Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ исслСдования ΠΎΡ‚Π½ΠΎΡˆΠ΅Π½ΠΈΡ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния вычислСний ΠΏΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡƒ Π½Π° CPU (TCPU) ΠΊΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния вычислСний Π½Π° GPU (TGPU) Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΠΈ ΠΎΡ‚ ΡΡ‚Π΅ΠΏΠ΅Π½ΠΈ разбиСния систСм.

Π’Π°Π±Π»ΠΈΡ†Π° 3

N

K=1

K=2

K=3

2,075

1,425

1,425

2,825

2,35

2,175

5,1

4,35

4,325

6,7

6,3

5,75

7,85

7,65

7,8

8,75

7,675

7,85

9,25

9,75

9,2

9,45

8,925

8,15

9,175

9,475

8,8

Для ΠΈΠ»Π»ΡŽΡΡ‚Ρ€Π°Ρ†ΠΈΠΈ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Π½Ρ‹Ρ… Π² Ρ‚Π°Π±Π»ΠΈΡ†Π΅ 3 Π΄Π°Π½Π½Ρ‹Ρ… Π½Π° Ρ€ΠΈΡΡƒΠ½ΠΊΠ΅ 20 ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½ Π³Ρ€Π°Ρ„ΠΈΠΊ зависимости ускорСния S Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° ΠΎΡ‚ .

Рисунок 20

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

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

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

ΠŸΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° Π² Π²ΠΈΠ΄Π΅ Ρ‚Π°Π±Π»ΠΈΡ† ΠΈ Π³Ρ€Π°Ρ„ΠΈΠΊΠΎΠ² зависимости ускорСния вычислСний ΠΎΡ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠ² сСточной области.

Для Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°, Π² Ρ…ΠΎΠ΄Π΅ экспСримСнтов, Π±Ρ‹Π»ΠΎ установлСно, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ размСрности систСм N Π² ΠΏΡ€Π΅Π΄Π΅Π»Π°Ρ… ΠΎΡ‚ 25 Π΄ΠΎ 213 ускорСниС измСняСтся ΠΎΡ‚ 1 Π΄ΠΎ 3,5. Π’Π°ΠΊ ΠΆΠ΅ Π±Ρ‹Π»ΠΎ установлСно, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ количСствС систСм M Π² ΠΏΡ€Π΅Π΄Π΅Π»Π°Ρ… ΠΎΡ‚ 100 Π΄ΠΎ 600 ускорСниС измСняСтся ΠΎΡ‚ 1 Π΄ΠΎ 3,5. Π­Ρ‚ΠΎ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ ΠΎ Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ Π² Π΄Π°Π½Π½Ρ‹Ρ… Π΄ΠΈΠ°ΠΏΠ°Π·ΠΎΠ½Π°Ρ… размСрностСй сСточной области Π»ΡƒΡ‡ΡˆΠ΅ Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹ΠΌ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠΌ Π½Π° GPU, Ρ‡Π΅ΠΌ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½Ρ‹ΠΌ Π½Π° CPU. Π’Π°ΠΊΠΆΠ΅ Π±Ρ‹Π»ΠΎ выяснСно, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ N>210 M>400 ускорСниС Π½Π°Ρ‡ΠΈΠ½Π°Π΅Ρ‚ ΠΊΠΎΠ»Π΅Π±Π°Ρ‚ΡŒΡΡ ΠΎΠΊΠΎΠ»ΠΎ 3,5. Π‘Ρ‹Π»ΠΎ выяснСно, Ρ‡Ρ‚ΠΎ Ρ€Π°Π·Π±ΠΈΠ΅Π½ΠΈΠ΅ систСмы ΠΎΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ Π½Π΅Π³Π°Ρ‚ΠΈΠ²Π½ΠΎΠ΅ влияниС Π½Π° ΡƒΡΠΊΠΎΡ€Π΅Π½ΠΈΠ΅ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½ΠΎΠ³ΠΎ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°, ΠΎΠ΄Π½Π°ΠΊΠΎ ΠΎΠ½ΠΎ Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ для использования раздСляСмой памяти ΠΏΡ€ΠΈ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… размСрностях систСм.

Бписок ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½Π½Ρ‹Ρ… источников

1 Бамарский, А. А. ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ сСточных ΡƒΡ€Π°Π²Π½Π΅Π½ΠΈΠΉ [ВСкст]/А.А. Бамарский, Π•. Π‘. НиколаСв. — Πœ.: Наука, 1978. — 592 с.

2 Π₯ΠΎΠΊΠ½ΠΈ Π ., ДТСссхоуп К. ΠŸΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹Π΅ Π­Π’Πœ. АрхитСктура, ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ ΠΈ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹: ΠŸΠ΅Ρ€. Ρ Π°Π½Π³Π». — Πœ.: Π Π°Π΄ΠΈΠΎ ΠΈ ΡΠ²ΡΠ·ΡŒ, 1986. — 392

3 Π“ΠΎΠ»ΠΎΠ²Π°ΡˆΠΊΠΈΠ½, Π”. Π›. ΠœΠ΅Ρ‚ΠΎΠ΄Ρ‹ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹Ρ… вычислСний. Π§Π°ΡΡ‚ΡŒ 2. [ВСкст]: ΡƒΡ‡Π΅Π±Π½ΠΎΠ΅ пособиС/Π”.Π›. Π“ΠΎΠ»ΠΎΠ²Π²ΠΊΠ°ΡˆΠΊΠΈΠ½, Π‘. П. Π“ΠΎΠ»ΠΎΠ²Π°ΡˆΠΊΠΈΠ½Π°. — Π‘Π°ΠΌΠ°Ρ€. гос. аэрокосм. ΡƒΠ½-Ρ‚. — Π‘Π°ΠΌΠ°Ρ€Π°, 2003. — 103 с.

4 ΠžΡ€Ρ‚Π΅Π³Π°, Π”ΠΆ.

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

Π² ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹Π΅ ΠΈ Π²Π΅ΠΊΡ‚ΠΎΡ€Π½Ρ‹Π΅ ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Π»ΠΈΠ½Π΅ΠΉΠ½Ρ‹Ρ… систСм/ Π”ΠΆ.ΠžΡ€Ρ‚Π΅Π³Π°. — Πœ.: ΠœΠΈΡ€, 1991. — 364 с.

5 Π―Ρ€ΠΌΡƒΡˆΠΊΠΈΠ½, Π‘. Π’. ИсслСдованиС ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹Ρ… Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠ² Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ Ρ‚Ρ€Π΅Ρ…Π΄ΠΈΠ°Π³ΠΎΠ½Π°Π»ΡŒΠ½Ρ‹Ρ… систСм Π»ΠΈΠ½Π΅ΠΉΠ½Ρ‹Ρ… ΡƒΡ€Π°Π²Π½Π΅Π½ΠΈΠΉ [ВСкст]/Π‘.Π’. Π―Ρ€ΠΌΡƒΡˆΠΊΠΈΠ½, Π”.Π›. Π“ΠΎΠ»ΠΎΠ²Π°ΡˆΠΊΠΈΠ½//ВСстн. Π‘Π°ΠΌ. гос. Ρ‚Π΅Ρ…Π½. ΡƒΠ½-Ρ‚Π°. Π‘Π΅Ρ€. Π€ΠΈΠ·.-ΠΌΠ°Ρ‚. Π½Π°ΡƒΠΊΠΈ. — 2004. — Π²Ρ‹ΠΏ. 26. — Π‘. 78−82.

6 Hockney R.W., Jesshope C.R. Parallel Computers 2. Architecture, Programming and Algorithms. — Adam Hilger, Bristol and Philadelphia, 1988. — 625 p.

7 Π“ΠΎΠ»ΠΎΠ²Π°ΡˆΠΊΠΈΠ½, Π”. Π›. ΠŸΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹Π΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ Ρ€Π΅ΡˆΠ΅Π½ΠΈΡ сСточных ΡƒΡ€Π°Π²Π½Π΅Π½ΠΈΠΉ Ρ‚Ρ€Π΅Ρ…Π΄ΠΈΠ°Π³ΠΎΠ½Π°Π»ΡŒΠ½ΠΎΠ³ΠΎ Π²ΠΈΠ΄Π°, основанныС Π½Π° ΠΌΠ΅Ρ‚ΠΎΠ΄Π΅ встрСчных ΠΏΡ€ΠΎΠ³ΠΎΠ½ΠΎΠΊ [ВСкст]/Π”.Π›. Π“ΠΎΠ»ΠΎΠ²Π°ΡˆΠΊΠΈΠ½ // ΠœΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΡ‡Π΅ΡΠΊΠΎΠ΅ ΠΌΠΎΠ΄Π΅Π»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅. — 2005. — Π’ΠΎΠΌ 17, № 11. — Π‘. 118−128.

8 Π“ΠΎΠ»ΡƒΠ±, Π”ΠΆ. ΠœΠ°Ρ‚Ρ€ΠΈΡ‡Π½Ρ‹Π΅ вычислСния [ВСкст]/Π”ΠΆ. Π“ΠΎΠ»ΡƒΠ±, Π§. Π’Π°Π½ Π›ΠΎΡƒΠ½. — Πœ.: ΠœΠΈΡ€, 1999. — 548 с.

9 Π‘Π°Ρ…Π²Π°Π»ΠΎΠ², Н. Π‘. ЧислСнныС ΠΌΠ΅Ρ‚ΠΎΠ΄Ρ‹ [ВСкст]: ΡƒΡ‡Π΅Π±Π½ΠΎΠ΅ пособиС для Ρ„ΠΈΠ·ΠΌΠ°Ρ‚. ΡΠΏΠ΅Ρ†ΠΈΠ°Π»ΡŒΠ½ΠΎΡΡ‚Π΅ΠΉ Π²ΡƒΠ·ΠΎΠ²/Н.Π‘. Π‘Π°Ρ…Π²Π°Π»ΠΎΠ², Н. П. Π–ΠΈΠ΄ΠΊΠΎΠ², Π“. М. КобСльков. — Πœ.: Π€ΠΈΠ·ΠΌΠ°Ρ‚Π»ΠΈΡ‚, 2002. — 630 с.

10 Π“ΠΎΠ»ΠΎΠ²Π°ΡˆΠΊΠΈΠ½, Π”. Π›. ΠŸΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹Π΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ ΠΌΠ΅Ρ‚ΠΎΠ΄Π° цикличСской ΠΏΡ€ΠΎΠ³ΠΎΠ½ΠΊΠΈ [ВСкст]/Π”.Π›. Π“ΠΎΠ»ΠΎΠ²Π°ΡˆΠΊΠΈΠ½, М.Π’. Π€ΠΈΠ»Π°Ρ‚ΠΎΠ²//ΠšΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€Π½Π°Ρ ΠžΠΏΡ‚ΠΈΠΊΠ°. — Π˜Π‘ОИ РАН, Π‘Π°ΠΌΠ°Ρ€Π°ΡŽ — 2005. — Π²Ρ‹ΠΏ. 27. — Π‘. 123−130.

ΠŸΡ€ΠΈΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅

Π˜ΡΡ…ΠΎΠ΄Π½Ρ‹ΠΉ ΠΊΠΎΠ΄ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹

#include

#include

#include

#include

#include «CTimer.h»

#include

#define M (500)

#define N (1024)

#define K (0)

#define D (0)

__global__ void reduction (float *a, float *b, float *c, float *f) {

int thread = (blockIdx.x/int (pow (2.0, D)))*N*int (pow (2.0, D))+threadIdx.x+1;

int block = blockIdx. x/int (pow (2.0, D));

for (int i=0; i

int min = thread-pow (2.0, i);

int max = thread+pow (2.0, i);

if (min

if (max>(block+1)*N*int (pow (2.0, D))) max=0;

float alfa=-a[thread]/b[min];

float betta=-c[thread]/b[max];

float zn0=alfa*a[min];

float zn1=b[thread]+alfa*c[min]+betta*a[max];

float zn2=betta*c[max];

float zn3=f[thread]+alfa*f[min]+betta*f[max];

__threadfence ();

a[thread]=zn0;

b[thread]=zn1;

c[thread]=zn2;

f[thread]=zn3;

}

__syncthreads ();

}

__global__ void sweep (float *a, float *b, float *c, float *f, float *test, int shareDim) {

float temp[N*M];

int block = blockIdx. x;

int first=(block/int (pow (2.0, K)))*N+(block%int (pow (2.0, K))+1);

int xDim = N/int (pow (2.0, K));

int redDim = int (pow (2.0, K));

for (int i=0; i

int next = first+i*redDim;

temp[i]=a[next];

temp[i+xDim ]=b[next];

temp[i+2*xDim ]=c[next];

temp[i+3*xDim ]=f[next];

}

temp[xDim*4]=-temp[2*xDim]/temp[xDim];

temp[xDim*4+xDim-1]=temp[3*xDim]/temp[xDim];

for (int i=1; i

temp[xDim*4+i]=-temp[2*xDim+i]/(temp[i]*temp[xDim*4+i-1]+temp[xDim+i]);

temp[xDim*4+xDim-1+i]=(temp[3*xDim+i]-temp[i]*temp[xDim*4+xDim-1+i-1])/(temp[i]*temp[xDim*4+i-1]+temp[xDim+i]);

}

int i =xDim-1;

temp[i]=(temp[3*xDim+i]-temp[i]*temp[xDim*4+xDim-1+i-1])/(temp[i]*temp[xDim*4+i-1]+temp[xDim+i]);

for (int i=xDim-2; i>-1; i—){

temp[i]=temp[i+1]*temp[xDim*4+i-1+1]+temp[xDim*4+xDim-1+i-1+1];

}

if (block==0){

for (int i=0; i< shareDim; i++) {

test[i]=temp[i];

}

}

syncthreads ();

}

int main (void){

CTimer Time;

CTimer Time1;

int shareDim = N/int (pow (2.0, K))*4+(N/int (pow (2.0, K))-1)*2;

float* a = (float*)malloc ((M*N+1)*sizeof (float));

float* b = (float*)malloc ((M*N+1)*sizeof (float));

float* c = (float*)malloc ((M*N+1)*sizeof (float));

float* f = (float*)malloc ((M*N+1)*sizeof (float));

float* test = (float*)malloc ((M*N)*sizeof (float));

a[0]=0; b[0]=1; c[0]=0; f[0]=0;

for (int i=1; i

a[i]=(rand ()%5 + 1);

}

for (int i=1; i

b[i]=(rand ()%9 + 10);

}

for (int i=1; i

c[i]=(rand ()%5 + 1);

}

for (int i=1; i

f[i]=(rand ()%9 + 1);

}

for (int i=0; i

a[1+i*N]=0; c[N+i*N]=0;

}

float* a1 = (float*)malloc ((M*N)*sizeof (float));

float* b1 = (float*)malloc ((M*N)*sizeof (float));

float* c1 = (float*)malloc ((M*N)*sizeof (float));

float* f1 = (float*)malloc ((M*N)*sizeof (float));

for (int i=1; i

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

c1[i-1]=c[i];

b1[i-1]=b[i];

f1[i-1]=f[i];

}

//cudaEvent_t start3, stop3;

//cudaEventCreate (&start3);

//cudaEventCreate (&stop3);

float *dev_a, *dev_b, *dev_c, *dev_f, *dev_test;

cudaMalloc ((void**) &dev_test, (M*N)*sizeof (float));

cudaMemcpy (dev_test, test,(M*N)*sizeof (float), cudaMemcpyHostToDevice);

cudaMalloc ((void**) &dev_a, (N*M+1)*sizeof (float));

cudaMalloc ((void**) &dev_b, (N*M+1)*sizeof (float));

cudaMalloc ((void**) &dev_c, (N*M+1)*sizeof (float));

cudaMalloc ((void**) &dev_f, (N*M+1)*sizeof (float));

cudaMemcpy (dev_a, a,(N*M+1)*sizeof (float), cudaMemcpyHostToDevice);

cudaMemcpy (dev_b, b,(N*M+1)*sizeof (float), cudaMemcpyHostToDevice);

cudaMemcpy (dev_c, c,(N*M+1)*sizeof (float), cudaMemcpyHostToDevice);

cudaMemcpy (dev_f, f,(N*M+1)*sizeof (float), cudaMemcpyHostToDevice);

reduction<<>>(dev_a, dev_b, dev_c, dev_f);

Time.Start ();

sweep<<>>(dev_a, dev_b, dev_c, dev_f, dev_test, shareDim);

cudaThreadSynchronize ();

Time.End ();

cudaMemcpy (test, dev_test,(shareDim)*sizeof (float), cudaMemcpyDeviceToHost);

cudaMemcpy (a, dev_a,(N*M+1)*sizeof (float), cudaMemcpyDeviceToHost);

cudaMemcpy (b, dev_b,(N*M+1)*sizeof (float), cudaMemcpyDeviceToHost);

cudaMemcpy (c, dev_c,(N*M+1)*sizeof (float), cudaMemcpyDeviceToHost);

cudaMemcpy (f, dev_f,(N*M+1)*sizeof (float), cudaMemcpyDeviceToHost);

printf («%lf «, test[0]);

printf («n»);

printf («———————————n»);

float* x1 = (float*)malloc ((N*M)*sizeof (float));

float* alfa = (float*)malloc ((N-1)*sizeof (float));

float* betta = (float*)malloc ((N-1)*sizeof (float));

Time1.Start ();

for (int flag=0; flag

alfa[0]=-c1[flag*N]/b1[flag*N];

betta[0]=f1[flag*N]/b1[flag*N];

for (int j=1; j

alfa[j]=-c1[flag*N+j]/(alfa[+j-1]*a1[flag*N+j]+b1[flag*N+j]);

betta[j]=(f1[flag*N+j]-a1[flag*N+j]*betta[j-1])/(alfa[j-1]*a1[flag*N+j]+b1[flag*N+j]);

}

int j=N-1;

x1[flag*N+j]=(f1[flag*N+j]-a1[flag*N+j]*betta[j-1])/(alfa[j-1]*a1[flag*N+j]+b1[flag*N+j]);

for (int i=N-2; i>-1; i—)

x1[flag*N+i]=alfa[i]*x1[flag*N+i+1]+betta[i];

}

Time1.End ();

//———————————————————————————————————;

/*

printf («n»);

for (int i=0; i

printf («%lf—-%lf », x1[i*2], test[i]);

printf («n»);

}

*/

printf («————-n»);

printf («n»);

std:cout << Time. GetTimeInSeconds () << «seconds» << std: endl;

printf («n»);

std:cout << Time1. GetTimeInSeconds () << «seconds» << std: endl;

printf («n»);

printf («%lf », Time1. GetTimeInSeconds ()/Time.GetTimeInSeconds ());

//printf («### Total CPU time: t%.6fnn», 1.0*ev_time/CLOCKS_PER_SEC);

free (a);

free (b);

free (c);

free (f);

free (a1);

free (b1);

free (c1);

free (f1);

free (test);

free (x1);

free (alfa);

free (betta);

system («pause»);

}

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