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

ΠŸΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ поиска косяком Ρ€Ρ‹Π±

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

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

ΠŸΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹ΠΉ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ поиска косяком Ρ€Ρ‹Π± (Ρ€Π΅Ρ„Π΅Ρ€Π°Ρ‚, курсовая, Π΄ΠΈΠΏΠ»ΠΎΠΌ, ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΡŒΠ½Π°Ρ)

Алгоритм поиска косяком Ρ€Ρ‹Π±, Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Π°Π½Π½Ρ‹ΠΉ Π² 2002 Π³ΠΎΠ΄Ρƒ, — стохастичСский Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ, основанный Π½Π° ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠΈ косяка Ρ€Ρ‹Π±. Π‘ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½Π΅ΠΌ стало понятно, Ρ‡Ρ‚ΠΎ, с Ρ€ΠΎΡΡ‚ΠΎΠΌ ΠΈΠ·ΠΌΠ΅Ρ€Π΅Π½ΠΈΠΉ ΠΈ ΠΏΠΎΠΏΡƒΠ»ΡΡ†ΠΈΠΉ, врСмя выполнСния Π½Π΅ΡƒΠΊΠ»ΠΎΠ½Π½ΠΎ растёт.

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

Π’ Π΄Π°Π½Π½ΠΎΠΉ Ρ€Π°Π±ΠΎΡ‚Π΅ прСдставлСн Π½Π΅ΠΈΠ·Π²Π΅Π΄Π°Π½Π½Ρ‹ΠΉ Ρ€Π°Π½Π΅Π΅ способ запуска Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° поиска косяком Ρ€Ρ‹Π± Π½Π° ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹Ρ… графичСских процСссорах ΠΈ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π΅Π³ΠΎ Π² CUDA.

ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ° графичСский Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ

1.

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

Π² CUDA

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

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

CUDA позволяСт ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ°ΠΌ Π½Π°ΠΏΡ€ΡΠΌΡƒΡŽ Π²Π·Π°ΠΈΠΌΠΎΠ΄Π΅ΠΉΡΡ‚Π²ΠΎΠ²Π°Ρ‚ΡŒ с ΠΊΠΎΠΌΠ°Π½Π΄Π°ΠΌΠΈ Π“ΠŸΠ£, ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ ΠΏΡ€ΠΈ этом ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ. Π£ CUDA Π΅ΡΡ‚ΡŒ 3 Π³Π»Π°Π²Π½Ρ‹Π΅ абстракции: иСрархия Π³Ρ€ΡƒΠΏΠΏ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ², раздСляСмая ΠΏΠ°ΠΌΡΡ‚ΡŒ ΠΈ Π±Π°Ρ€ΡŒΠ΅Ρ€Ρ‹ для синхронизации NVIDIA. Π­Ρ‚ΠΈ абстракции ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‚ Ρ€Π°Π·Π΄Π΅Π»ΠΈΡ‚ΡŒ Π·Π°Π΄Π°Ρ‡Ρƒ Π½Π° ΠΏΠΎΠ΄Π·Π°Π΄Π°Ρ‡ΠΈ, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅, Π² ΡΠ²ΠΎΡŽ ΠΎΡ‡Π΅Ρ€Π΅Π΄ΡŒ, ΠΌΠΎΠ³ΡƒΡ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π΅ΡˆΠ΅Π½Ρ‹ нСзависимо ΠΈ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎ. КаТдая ΠΏΠΎΠ΄Π·Π°Π΄Π°Ρ‡Π° Π·Π°Ρ‚Π΅ΠΌ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ€Π°Π·Π±ΠΈΡ‚Π° Π½Π° ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, Ρ€Π΅ΡˆΠ°Π΅ΠΌΡ‹Π΅ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎ всСми ΠΏΠΎΡ‚ΠΎΠΊΠ°ΠΌΠΈ ΠΈΠ· Π±Π»ΠΎΠΊΠ°.

Π“Π»Π°Π²Π½Ρ‹ΠΌ ΡƒΠ·ΠΊΠΈΠΌ мСстом Π² Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π΅ CUDA являСтся ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° Π΄Π°Π½Π½Ρ‹Ρ… ΠΌΠ΅ΠΆΠ΄Ρƒ хостом (ЦПУ) ΠΈ Π“ΠŸΠ£. Π›ΡŽΠ±Π°Ρ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° Π΄Π°Π½Π½Ρ‹Ρ… ΠΎΡ‚ Π¦ΠŸΠ£ ΠΊ Π“ΠŸΠ£ сниТаСт ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ, Ρ‚Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ Π½ΡƒΠΆΠ½ΠΎ ΡΡ‚Π°Ρ€Π°Ρ‚ΡŒΡΡ ΠΈΠ·Π±Π΅Π³Π°Ρ‚ΡŒ Π΄Π°Π½Π½ΠΎΠΉ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ. Π’ Ρ‡Π°ΡΡ‚ности, Π² ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ Π½Π°Π·Π²Π°Ρ‚ΡŒ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ ΠΈΠ· Π¦ΠŸΠ£ Π½Π° Π“ΠŸΠ£. Π”Π°ΠΆΠ΅ Ссли Ρ‚Π°ΠΊΠΎΠΉ ΠΏΠΎΠ΄Ρ…ΠΎΠ΄ каТСтся Π½Π΅Π»ΠΎΠ³ΠΈΡ‡Π½Ρ‹ΠΌ ΠΈΠ»ΠΈ Π½Π΅ ΠΎΠ±Π΅ΡΠΏΠ΅Ρ‡ΠΈΠ²Π°ΡŽΡ‰ΠΈΠΌ достаточноС распараллСливаниС Π·Π°Π΄Π°Ρ‡ΠΈ, гСнСрация Π΄Π°Π½Π½Ρ‹Ρ… Π½Π° Π“ΠŸΠ£ Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ быстрСС, Π½Π΅ΠΆΠ΅Π»ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° Π΄Π°Π½Π½Ρ‹Ρ….

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

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

2. Π’Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° с ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ΠΌ CUDA

НашСй Ρ†Π΅Π»ΡŒΡŽ являСтся ускорСниС процСсса выполнСния Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° посрСдством запуска ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΎΠ½Π½ΠΎΠ³ΠΎ процСсса Π½Π° ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹Ρ… графичСских процСссорах.

ОбъявлСниС ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… ΠΈ ΠΊΠΎΠ½ΡΡ‚Π°Π½Ρ‚

ПолоТим, Ρ‡Ρ‚ΠΎ:

1) значСния фитнСсс Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΊΠΎΡ‚ΠΎΡ€ΡƒΡŽ ΠΌΡ‹ ΠΎΠ±ΠΎΠ·Π½Π°Ρ‡ΠΈΠΌ ΠΊΠ°ΠΊ f (X), Π»Π΅ΠΆΠ°Ρ‚ Π² ΠΎΠ±Π»Π°ΡΡ‚ΠΈ [-r; r];

2) размСрности Π·Π°Π΄Π°Ρ‡ΠΈ D;

3) Ρ€Π°Π·ΠΌΠ΅Ρ€ популяции N.

Π’ΠΎΠ³Π΄Π° объявим ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅:

Β· X: массив состояний Ρ€Ρ‹Π±ΠΊΠΈ

Β· Π₯Π : массив состояний Π΄ΠΎΠ±Ρ‹Ρ‡ΠΈ Ρ€Ρ‹Π±ΠΎΠΊ

Β· XS: массив состояний роя Ρ€Ρ‹Π±ΠΎΠΊ

Β· XF: массив ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠΉ Ρ€Ρ‹Π±ΠΊΠΈ

Β· DIST: массив расстояний, ΠΏΡ€Π΅ΠΎΠ΄ΠΎΠ»Π΅Π½Π½Ρ‹Ρ… Ρ€Ρ‹Π±ΠΊΠΎΠΉ

Β· TESTF: массив фитнСсс-Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Ρ€Ρ‹Π±ΠΊΠΈ.

Π Π°Π·ΠΌΠ΅Ρ€ X, XP, XS ΠΈ XF Ρ€Π°Π²Π½Ρ‹; Ρ€Π°Π·ΠΌΠ΅Ρ€ DIST Ρ€Π°Π²Π΅Π½; Ρ€Π°Π·ΠΌΠ΅Ρ€ TESTF Ρ€Π°Π²Π΅Π½ ΠŸΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ X, XP, XS, XF ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ Π² Π²ΠΈΠ΄Π΅ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ с N ΡΡ‚Ρ€ΠΎΠΊΠ°ΠΌΠΈ ΠΈ D ΡΡ‚ΠΎΠ»Π±Ρ†Π°ΠΌΠΈ.

Π’Π°ΠΆΠ½Π΅ΠΉΡˆΠΈΠΌ Ρ„Π°ΠΊΡ‚ΠΎΡ€ΠΎΠΌ, ΠΎΠΏΡ€Π΅Π΄Π΅Π»ΡΡŽΡ‰ΠΈΠΌ ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΡƒΡŽ Ρ€Π°Π±ΠΎΡ‚Ρƒ ядра, являСтся объявлСниС Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Π±Π»ΠΎΠΊΠ° ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° сСтки. УмСстным Π±ΡƒΠ΄Π΅Ρ‚ ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ ΠΈΡ… ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌΠΈ:

Β· Block1 = (BS, BS, 1)

Β· Grid1 = (WIDTH/BS + 1, HEIGHT/BS + 1,1)

Β· Grid2 =(N/BS + 1, N/BS + 1,1)

Π—Π΄Π΅ΡΡŒ BS являСтся ΡˆΠΈΡ€ΠΈΠ½ΠΎΠΉ ΠΈ Π΄Π»ΠΈΠ½ΠΎΠΉ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ²ΠΎΠ³ΠΎ Π±Π»ΠΎΠΊΠ°, WIDTH ΠΈ HEIGHT числом ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² Grid1 Π² Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ x ΠΈ Π½Π°ΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠΈ y ΡΠΎΠΎΡ‚вСтствСнно. Π‘ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½ΠΎΠΉ Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния, Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡƒ Ρ‚Π°ΠΊΠΆΠ΅ понадобится пСрСмСнная Ymin, которая Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ для хранСния ΠΎΠΏΡ‚ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ значСния фитнСсс Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ. Π’Π°ΠΊΠΆΠ΅ Π²Π²Π΅Π΄Π΅ΠΌ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ iterNum, ΡΠ»ΡƒΠΆΠ°Ρ‰ΡƒΡŽ ΠΎΠ³Ρ€Π°Π½ΠΈΡ‡Π΅Π½ΠΈΠ΅ΠΌ для максимального числа ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ запуска Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° Π½Π° Π³Ρ€Π°Ρ„ичСских процСссорах.

3. ГСнСрация случайных чисСл

Алгоритм Ρ‚Ρ€Π΅Π±ΡƒΠ΅Ρ‚ большоС количСство случайных чисСл Π²ΠΎ Π²Ρ€Π΅ΠΌΡΠ΅Π³ΠΎ выполнСния. К ΡΠΎΠΆΠ°Π»Π΅Π½ΠΈΡŽ, графичСский процСссор Π½Π΅ ΠΈΠΌΠ΅Π΅Ρ‚ Π³Π΅Π½Π΅Ρ€Π°Ρ‚ΠΎΡ€Π° случайных чисСл. Π’ ΡΠ²ΡΠ·ΠΈ с Ρ‚Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° Π΄Π°Π½Π½Ρ‹Ρ… ΠΎΡ‚ Π¦ΠŸΠ£ ΠΊ Π“ΠŸΠ£ Π·Π°Π½ΠΈΠΌΠ°Π΅Ρ‚ довольно ΠΌΠ½ΠΎΠ³ΠΎ Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ, Π²Π΅Ρ€Π½Ρ‹ΠΌ с ΠΏΡ€Π°ΠΊΡ‚ичСской Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния Ρ€Π΅ΡˆΠ΅Π½ΠΈΠ΅ΠΌ Π±ΡƒΠ΄Π΅Ρ‚ ΡΠ³Π΅Π½Π΅Ρ€ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ большоС количСство случайных чисСл Π½Π° Π¦ΠŸΠ£ ΠΈ ΠΏΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ ΠΈΡ… Π² ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ массива Π½Π° Π“ΠŸΠ£. Π Π΅ΡˆΠ°Π΅Ρ‚ΡΡ эта Π·Π°Π΄Π°Ρ‡Π° ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ: M ΡΠ»ΡƒΡ‡Π°ΠΉΠ½Ρ‹Ρ… чисСл Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΡŽΡ‚ΡΡ Π½Π° Π¦ΠŸΠ£ Π΄ΠΎ Π·Π°ΠΏΡƒΡΠΊΠ° Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°. Π—Π°Ρ‚Π΅ΠΌ ΠΎΠ½ΠΈ ΠΎΠ΄ΠΈΠ½ Ρ€Π°Π· ΠΏΠ΅Ρ€Π΅Π΄Π°ΡŽΡ‚ΡΡ Π½Π° Π“ΠŸΠ£, Π° Π΄Π»Ρ хранСния этих Π΄Π°Π½Π½Ρ‹Ρ… ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ массив RAND, находящийся Π² Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½ΠΎΠΉ памяти. Когда Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ ядра трСбуСтся случайноС число, ΠΎΠ½Π° ΠΌΠΎΠΆΠ΅Ρ‚ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π΅Π³ΠΎ ΠΈΠ· ΠΌΠ°ΡΡΠΈΠ²Π° RAND, ΠΏΠ΅Ρ€Π΅Π΄Π°Π² ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ Π² ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€Π°, Π³Π΄Π΅ ΡƒΠΊΠ°Π·Π°Ρ‚Π΅Π»ΡŒ [0; M-N] - случайноС Ρ†Π΅Π»ΠΎΠ΅ число, Π³Π΅Π½Π΅Ρ€ΠΈΡ€ΡƒΠ΅ΠΌΠΎΠ΅ Π½Π° Ρ…остС.

4. Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° Π½Π° Π“ΠŸΠ£

Π‘Ρ‚Ρ€ΡƒΠΊΡ‚ΡƒΡ€Π° Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° Π½Π° Π“ΠŸΠ£ прСдставлСна Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠΎΠΌ 1. ΠŸΠΎΠ΄ΠΏΡ€ΠΎΡ†Π΅ΡΡΡ‹ Π² Ρ†ΠΈΠΊΠ»Π΅ for ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² ΠΊΠ°Ρ‡Π΅ΡΡ‚Π²Π΅ 7 Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ядра.

Алгоритм 1:

Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ случайных состояний Ρ€Ρ‹Π± Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ массива случайных чисСл Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΡ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° ΠŸΠ΅Ρ€Π΅Π΄Π°Ρ‡Π° Π΄Π°Π½Π½Ρ‹Ρ… ΠΎΡ‚ Π¦ΠŸΠ£ ΠΊ Π“ΠŸΠ£

Ymin

For iter to iterNum

Do Π Π°ΡΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ значСния фитнСсс Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ всСх Ρ€Ρ‹Π±: TESTF

ΠžΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ: Ymin

Π Π°ΡΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ расстояниС ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ€Ρ‹Π±Π°ΠΌΠΈ: DIST

Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ процСсс кормлСния Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ процСсс ΠΈΠ½Π΄ΠΈΠ²ΠΈΠ΄ΡƒΠ°Π»ΡŒΠ½ΠΎΠ³ΠΎ двиТСния Π’Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ процСсс ΠΊΠΎΠ»Π»Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ двиТСния ΠžΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ состояниС ΠΊΠ°ΠΆΠ΄ΠΎΠΉ Ρ€Ρ‹Π±Ρ‹: Π₯ ΠŸΠ΅Ρ€Π΅Π΄Π°Ρ‚ΡŒ Ymin ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎ Π² Π¦ΠŸΠ£ ΠΈ Π²Ρ‹Π²Π΅ΡΡ‚ΠΈ

A. ОбъявлСния ядСр

РасчСт Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ фитнСсс Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ всСх Ρ€Ρ‹Π±

ΠœΡ‹ ΡƒΡΡ‚Π°Π½Π°Π²Π»ΠΈΠ²Π°Π΅ΠΌ значСния Ρ€Π°Π·ΠΌΠ΅Ρ€Π° сСтки ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Π±Π»ΠΎΠΊΠ° Ρ€Π°Π²Π½Ρ‹ΠΌΠΈ grid1 ΠΈ block1 соотвСтствСнно. Π­Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ ΠΏΡ€ΠΈ запускС ядра Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ N ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ² ΠΈ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· Π½ΠΈΡ… рассчитываСт фитнСсс Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ для Ρ€Ρ‹Π±Ρ‹.

ΠŸΡ€ΠΈΠ²Π΅Π΄Π΅ΠΌ описаниС Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°:

1) ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅ΠΌ, ΠΊΠ°ΠΊΠΎΠ΅ ΠΈΠ· Π·Π½Π°Ρ‡Π΅Π½ΠΈΠΉ фитнСсс Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π±ΡƒΠ΄Π΅ΠΌ Ρ€Π°ΡΡΡ‡ΠΈΡ‚Ρ‹Π²Π°Ρ‚ΡŒ: i

2) ΠŸΡ€ΠΈΠΌΠ΅Π½ΡΠ΅ΠΌ арифмСтичСскиС ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ ΠΊ X[i] ΠΈ Ρ…Ρ€Π°Π½ΠΈΠΌ посчитанныС значСния фитнСсс Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π² TESTF[i].

ОбновлСниС Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ

УстанавливаСм Ρ€Π°Π·ΠΌΠ΅Ρ€ сСтки ΠΈ Π±Π»ΠΎΠΊΠ° Ρ€Π°Π²Π½Ρ‹ΠΌ 1, это ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚, Ρ‡Ρ‚ΠΎ послС запуска ядра Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ 1 ΠΏΠΎΡ‚ΠΎΠΊ. Π­Ρ‚ΠΎ ядро сканируСт массив TESTF[i] ΠΈ Π·Π°ΠΏΠΈΡΡ‹Π²Π°Π΅Ρ‚ ΠΌΠ°ΠΊΡΠΈΠΌΠ°Π»ΡŒΠ½ΡƒΡŽ фитнСсс Ρ„ΡƒΠ½ΠΊΡ†ΠΈΡŽ Π² Ymin

РасчСт расстояния ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ€Ρ‹Π±Π°ΠΌΠΈ

Π Π°Π·ΠΌΠ΅Ρ€ сСтки ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€ Π±Π»ΠΎΠΊΠ° ΠΏΡ€ΠΈΠ½ΠΈΠΌΠ°ΡŽΡ‚ΡΡ grid2 ΠΈ block1 соотвСтствСнно. Π‘ Π·Π°ΠΏΡƒΡΠΊΠΎΠΌ ядра ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎ Π±ΡƒΠ΄ΡƒΡ‚ Π²Ρ‹ΠΏΠΎΠ»Π½ΡΡ‚ΡŒΡΡ ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ², ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΏΠΎΡ‚ΠΎΠΊ ссылаСтся Π½Π° ΡƒΠ½ΠΈΠΊΠ°Π»ΡŒΠ½ΡƒΡŽ ΠΏΠ°Ρ€Ρƒ Ρ€Ρ‹Π±ΠΎΠΊ ΠΈ Ρ€Π°ΡΡΡ‡ΠΈΡ‚Ρ‹Π²Π°Π΅Ρ‚ расстояниС ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ. Для прСодолСния латСнтности доступа ΠΊ Π³Π»ΠΎΠ±Π°Π»ΡŒΠ½ΠΎΠΉ памяти, ΠΌΡ‹ ΠΏΡ€ΠΈΠ²ΡΠ·Ρ‹Π²Π°Π΅ΠΌ X ΠΊ Ρ‚СкстурС для ΠΊΡΡˆΠΈΡ€ΠΎΠ²Π°Π½ΠΈΡ элСмСнтов X ΠΈ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½ΠΈΡ ΠΈΡ… ΠΈΠ· Ρ‚Скстуры Π² Ρ‚ΠΎΡ‚ ΠΌΠΎΠΌΠ΅Π½Ρ‚, ΠΊΠΎΠ³Π΄Π° Π½Π°ΠΌ это Π½ΡƒΠΆΠ½ΠΎ.

ΠŸΡ€ΠΈΠ²Π΅Π΄Ρ‘ΠΌ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ:

1) ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅ΠΌ, для ΠΊΠ°ΠΊΠΎΠΉ ΠΏΠ°Ρ€Ρ‹ Ρ€Ρ‹Π± Π½Π΅ΠΎΠ±Ρ…ΠΎΠ΄ΠΈΠΌΠΎ Π½Π°ΠΉΡ‚ΠΈ расстояниС: (i1, i2)

2) If i1? N or i2? N or i2i1 then return

РассчитываСм расстояниС ΠΌΠ΅ΠΆΠ΄Ρƒ двумя Ρ€Ρ‹Π±Π°ΠΌΠΈ (i1, i2)

3) БохраняСм Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π² ΠΌΠ°ΡΡΠΈΠ² DIST: DIST[i1] [i2] ΠΈ DIST[i2] [i1] соотвСтствСнно.

ΠŸΡ€ΠΎΡ†Π΅ΡΡ Π΄ΠΎΠ±Ρ‹Ρ‡ΠΈ

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

ΠŸΡ€ΠΈΠ²Π΅Π΄Ρ‘ΠΌ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ процСсса Π΄ΠΎΠ±Ρ‹Ρ‡ΠΈ:

1) ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅ΠΌ, для ΠΊΠ°ΠΊΠΎΠΉ Ρ€Ρ‹Π±Ρ‹ Π±ΡƒΠ΄Π΅Ρ‚ осущСствлён процСсс Π΄ΠΎΠ±Ρ‹Ρ‡ΠΈ: i

2)

3) For to tryNum

Do PREY (pr2t-1, pr2t, XP, i)

If preySuccess=false

Then XP[i]X[i] + RAND [r+i]

ΠŸΡ€ΠΎΡ†Π΅ΡΡ инстинктивно-ΠΊΠΎΠ»Π»Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ пСрСмСщСния

ΠŸΡ€ΠΈΠ²Π΅Π΄Ρ‘ΠΌ описаниС для Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° для Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ, ΠΎΡΡƒΡ‰Π΅ΡΡ‚Π²Π»ΡΡŽΡ‰Π΅ΠΉ ΠΊΠΎΠ»Π»Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎ-инстинктивноС Π΄Π²ΠΈΠΆΠ΅Π½ΠΈΠ΅. Xc ΠΈ nf здСсь Π²Π»ΡΡŽΡ‚ΡΡ Ρ†Π΅Π½Ρ‚Ρ€ΠΎΠΌ ΠΏΠΎΠ·ΠΈΡ†ΠΈΠΈ спутников Ρ€Ρ‹Π±Ρ‹ ΠΈ Ρ‡ΠΈΡΠ»ΠΎΠΌ спутников Ρ€Ρ‹Π±Ρ‹ соотвСтствСнно. Xc-X[i]

Алгоритм:

1) ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅ΠΌ процСсс Π΄ΠΎΠ±Ρ‹Ρ‡ΠΈ для исполнСния: i

2)

3) If i? N

Then return

РассчитываСм. Xc ΠΈ nf

If ΡƒΠ΄ΠΎΠ²Π»Π΅Ρ‚воряСт условиям инстинктивно-ΠΊΠΎΠ»Π»Π΅ΠΊΡ‚ΠΈΠ²Π½ΠΎΠ³ΠΎ двиТСния

Then

If

Then ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠ°Ρ‚ΡŒ процСсс Π΄ΠΎΠ±Ρ‹Ρ‡ΠΈ

ΠŸΡ€ΠΎΡ†Π΅ΡΡ инстинктивно-Π²ΠΎΠ»Π΅Π²ΠΎΠ³ΠΎ пСрСмСщСния

ΠŸΡ€ΠΈΠ²Π΅Π΄Π΅ΠΌ описаниС Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° для Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ инстинктивно-Π²ΠΎΠ»Π΅Π²ΠΎΠ³ΠΎ пСрСмСщСния. Π—Π΄Π΅ΡΡŒ Xmin ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для записи состояния Ρ€Ρ‹Π± с ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠΉ фитнСсс Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ, Π° Fmin — минимальная фитнСсс функция компаньонов Π΄Π°Π½Π½ΠΎΠΉ Ρ€Ρ‹Π±Ρ‹.

Алгоритм:

1) ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅ΠΌ процСсс Π΄ΠΎΠ±Ρ‹Ρ‡ΠΈ для выполнСния

2)

3) If i? N

Then return

4) Находим компаньона Ρ€Ρ‹Π±Ρ‹ с ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½ΠΎΠΉ фитнСсс Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠ΅ΠΉ

5) РассчитываСм число компаньонов Ρ€Ρ‹Π±Ρ‹ nf

If nf≠ 0 and Fmin < TESTF[i] and nf/N < Π΄

Then

If then Π²Ρ‹ΠΏΠΎΠ»Π½ΠΈΡ‚ΡŒ процСсс Π΄ΠΎΠ±Ρ‹Ρ‡ΠΈ

ОбновлСниС состояний всСх Ρ€Ρ‹Π±

УстанавливаСм Ρ€Π°Π·ΠΌΠ΅Ρ€ сСтки ΠΈ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° Π±Π»ΠΎΠΊΠ° Ρ€Π°Π²Π½Ρ‹ΠΌ grid1 ΠΈ block1 соотвСтствСнно. ПослС запуска ядра Π±ΡƒΠ΄Π΅Ρ‚ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΎ N ΠΏΠΎΡ‚ΠΎΠΊΠΎΠ², ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ состояниС ΠΎΠ΄Π½ΠΎΠΉ Ρ€Ρ‹Π±Ρ‹. ΠŸΡ€ΠΈΠ²Π΅Π΄Ρ‘ΠΌ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ.

Алгоритм:

1) ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅ΠΌ, ΠΏΠΎΠ·ΠΈΡ†ΠΈΡŽ ΠΊΠ°ΠΊΠΎΠΉ Ρ€Ρ‹Π±Ρ‹ ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ: i

2) ВычисляСм фитнСсс-Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ XP[i] ΠΈ Ρ…Ρ€Π°Π½ΠΈΠΌ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π² Ρ€Π°Π·Π΄Π΅Π»ΡΠ΅ΠΌΠΎΠΉ памяти pF[i]

3) ВычисляСм фитнСсс-Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ XS[i] ΠΈ Ρ…Ρ€Π°Π½ΠΈΠΌ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π² Ρ€Π°Π·Π΄Π΅Π»ΡΠ΅ΠΌΠΎΠΉ памяти sF[i]

4) ВычисляСм фитнСсс-Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ XF[i] ΠΈ Ρ…Ρ€Π°Π½ΠΈΠΌ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π² Ρ€Π°Π·Π΄Π΅Π»ΡΠ΅ΠΌΠΎΠΉ памяти fF[i]

5) БохраняСм Π»ΡƒΡ‡ΡˆΠ΅Π΅ состояниС ΠΈΠ· Ρ‚Ρ€Ρ‘Ρ… Π²Ρ‹ΡˆΠ΅ΠΏΠ΅Ρ€Π΅Ρ‡ΠΈΡΠ»Π΅Π½Π½Ρ‹Ρ… Π² ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΡƒΡŽ X[i]

5. ΠžΡ†Π΅Π½ΠΊΠ° ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ

ЭкспСримСнты для ΠΎΡ†Π΅Π½ΠΊΠΈ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ Π±Ρ‹Π»ΠΈ Π·Π°ΠΏΡƒΡ‰Π΅Π½Ρ‹ Π½Π° ΡΠΈΡΡ‚Π΅ΠΌΠ΅ со ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ ΠΊΠΎΠ½Ρ„ΠΈΠ³ΡƒΡ€Π°Ρ†ΠΈΠ΅ΠΉ: Intel® Core™ 2 Duo CPU E7500 2.93 Π“Π³Ρ†, с 4.0 Π“Π‘ RAM. ГрафичСский процСссор — NVIDIA GTX 260. Π‘Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ основано Π½Π° Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅Ρ… стандартных тСстовых функциях (см. Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ 1)

Π’Π°Π±Π»ΠΈΡ†Π° 1. ВСстовыС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

НазваниС Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

Π£Ρ€Π°Π²Π½Π΅Π½ΠΈΠ΅ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ

ΠžΠ±Π»Π°ΡΡ‚ΡŒ поиска

Π‘Ρ„Π΅Ρ€Π°

Растригина

Π“Ρ€ΠΈΠ²ΠΎΠ½ΠΊΠ°

Π ΠΎΠ·Π΅Π½Π±Ρ€ΠΎΠΊΠ°

ВрСмя выполнСния ΠΈ ΡƒΡΠΊΠΎΡ€Π΅Π½ΠΈΠ΅ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΠΈ ΠΎΡ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° популяции

Для измСрСния Π²Ρ€Π΅ΠΌΠ΅Π½ΠΈ выполнСния ΠΈ ΡƒΡΠΊΠΎΡ€Π΅Π½ΠΈΡ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΠΈ ΠΎΡ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€Π° популяции, установим D=50 для всСх экспСримСнтов, Π° ΠΊΠΎΠ»ΠΈΡ‡Π΅ΡΡ‚Π²ΠΎ ΠΈΡ‚Π΅Ρ€Π°Ρ†ΠΈΠΉ iterNum ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ Ρ€Π°Π²Π½Ρ‹ΠΌ 100. Π¨Π°Π³ ΠΈ Π΄ ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ 3.5 ΠΈ 0.618 соотвСтствСнно. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ прСдставлСны Π½ΠΈΠΆΠ΅, см. Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ 2,3,4,5.

Π’Π°Π±Π»ΠΈΡ†Π° 2. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ выполнСния Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ сфСры

N

ВрСмя выполнСния ЦПУ

ВрСмя выполнСния Π“ΠŸΠ£

УскорСниС

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π½Π° Π¦ΠŸΠ£

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π½Π° Π“ΠŸΠ£

140.042

5.810

24.103

1.28Π΅-005

1.16Π΅-005

254.140

8.754

29.031

4.23Π΅-006

3.37Π΅-006

358.110

12.778

28.025

1.95Π΅-006

1.77Π΅-006

561.158

17.431

32.192

2.27Π΅-007

2.39Π΅-007

Π’Π°Π±Π»ΠΈΡ†Π° 3. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ выполнСния Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Растригина

N

ВрСмя выполнСния ЦПУ

ВрСмя выполнСния Π“ΠŸΠ£

УскорСниС

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π½Π° Π¦ΠŸΠ£

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π½Π° Π“ΠŸΠ£

147.859

5.881

25.140

1.69e-001

1.80e-001

237.621

8.822

26.933

1.22e-001

1.12e-001

382.117

12.854

29.728

6.35e-002

5.85e-002

515.869

17.498

29.481

2.45e-002

2.45e-002

Π’Π°Π±Π»ΠΈΡ†Π° 4. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ выполнСния Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π“Ρ€ΠΈΠ½Π²ΠΎΠ½ΠΊΠ°

N

ВрСмя выполнСния ЦПУ

ВрСмя выполнСния Π“ΠŸΠ£

УскорСниС

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π½Π° Π¦ΠŸΠ£

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π½Π° Π“ΠŸΠ£

154.799

5.886

26.301

1.79e-007

1.19e-007

249.339

8.823

28.260

2.55e-010

2.59e-010

387.780

12.831

30.218

2.61e-010

555.247

17.460

31.801

Π’Π°Π±Π»ΠΈΡ†Π° 5. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ выполнСния Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π ΠΎΠ·Π΅Π½Π±Ρ€ΠΎΠΊΠ°

N

ВрСмя выполнСния ЦПУ

ВрСмя выполнСния Π“ΠŸΠ£

УскорСниС

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π½Π° Π¦ΠŸΠ£

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π½Π° Π“ΠŸΠ£

134.151

5.872

4.844

1.63e-003

1.78 e -003

248.331

8.811

28.183

1.31e-003

1.28 e -003

367.370

12.834

28.623

2.05e-004

1.98 e -004

523.468

17.487

29.934

2.27e-005

3.71 e -005

ВрСмя выполнСния ΠΈ ΡƒΡΠΊΠΎΡ€Π΅Π½ΠΈΠ΅ Π² Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡ‚ΠΈ ΠΎΡ‚ Ρ€Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΡΡ‚ΠΈ пространства

ΠŸΡ€ΠΎΠ²Π΅Π΄Π΅ΠΌ Π΅Ρ‰Π΅ ΠΎΠ΄Π½Ρƒ Π³Ρ€ΡƒΠΏΠΏΡƒ тСстов, с Ρ„иксированным Ρ€Π°Π·ΠΌΠ΅Ρ€ΠΎΠΌ популяции (N=1000). Π¨Π°Π³ ΠΈ Π΄ ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ 3.5 ΠΈ 0.618 соотвСтствСнно. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ ΠΏΡ€ΠΈΠ²Π΅Π΄Π΅Π½Ρ‹ Π½ΠΈΠΆΠ΅, см. Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ 6,7,8,9.

Π’Π°Π±Π»ΠΈΡ†Π° 6. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ выполнСния Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ сфСры

D

ВрСмя выполнСния ЦПУ

ВрСмя выполнСния Π“ΠŸΠ£

УскорСниС

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π½Π° Π¦ΠŸΠ£

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π½Π° Π“ΠŸΠ£

25.282

1.852

13.650

1.00e-003

3.04 e-003

40.018

2.463

16.248

1.40 e-005

4.95 e-005

51.108

2.978

17.161

9.25 e-006

9.97 e-006

59.856

3.536

16.927

2.67 e-004

2.28 e-004

Π’Π°Π±Π»ΠΈΡ†Π° 7. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ выполнСния Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Растригина

D

ВрСмя выполнСния ЦПУ

ВрСмя выполнСния Π“ΠŸΠ£

УскорСниС

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π½Π° Π¦ΠŸΠ£

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π½Π° Π“ΠŸΠ£

24.978

1.878

13.297

8.93 e-003

5.67 e-003

40.664

2.497

16.281

1.54 e-002

4.72 e-002

52.182

3.030

17.218

2.18 e-002

1.82 e-002

66.542

3.613

18.413

2.85 e-001

3.14 e-001

Π’Π°Π±Π»ΠΈΡ†Π° 8. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ выполнСния Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π“Ρ€ΠΈΠ½Π²ΠΎΠ½ΠΊΠ°

D

ВрСмя выполнСния ЦПУ

ВрСмя выполнСния Π“ΠŸΠ£

УскорСниС

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π½Π° Π¦ΠŸΠ£

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π½Π° Π“ΠŸΠ£

27.405

1.892

14.480

3.26 e-004

3.65 e-004

43.653

2.514

17.361

1.78 e-007

1.54 e-007

55.574

3.046

18.242

2.38 e-006

66.044

3.630

18.188

6.20 e-006

1.79 e-006

Π’Π°Π±Π»ΠΈΡ†Π° 8. Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹ выполнСния Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° Π½Π° Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π ΠΎΠ·Π΅Π½Π±Ρ€ΠΎΠΊΠ°

D

ВрСмя выполнСния ЦПУ

ВрСмя выполнСния Π“ΠŸΠ£

УскорСниС

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π½Π° Π¦ΠŸΠ£

Π Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ Π½Π° Π“ΠŸΠ£

27.405

1.892

14.480

3.26 e-004

3.65 e-004

43.653

2.514

17.361

1.78 e-007

1.54 e-007

55.574

3.046

18.242

2.38 e-006

66.044

3.630

18.188

6.20 e-006

1.79 e-006

Анализ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ²

Из Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ΠΎΠ² экспСримСнтов ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠ΅ Π²Ρ‹Π²ΠΎΠ΄Ρ‹:

Β· Алгоритм, Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π½Ρ‹ΠΉ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ ЦПУ, ΠΈ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌ, Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½Π½Ρ‹ΠΉ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π“ΠŸΠ£, Π΄Π°ΡŽΡ‚ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π½ΠΎ ΠΎΠ΄ΠΈΠ½Π°ΠΊΠΎΠ²Ρ‹Π΅ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚Ρ‹. Π’Π°ΠΊΠΈΠΌ ΠΎΠ±Ρ€Π°Π·ΠΎΠΌ, нашС рСализация эффСктивна ΠΈ Π½Π°Π΄Π΅ΠΆΠ½Π°.

Β· Алгоритм Π½Π° Π“ΠŸΠ£ выполняСтся Π³ΠΎΡ€Π°Π·Π΄ΠΎ быстрСС, Ρ‡Π΅ΠΌ Π½Π° Π¦ΠŸΠ£. К ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρƒ, Π² ΠΏΠ΅Ρ€Π²ΠΎΠΌ экспСримСнтС Π»ΡƒΡ‡ΡˆΠ°Ρ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π±Ρ‹Π»Π° ΠΎΡ‚ΠΌΠ΅Ρ‡Π΅Π½Π° ΠΏΡ€ΠΈ запускС Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° для Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ сфСры: ускорСниС дошло Π΄ΠΎ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΊΠΈ Π² 32 Ρ€Π°Π·Π°. Π’ΠΎ Π²Ρ‚ΠΎΡ€ΠΎΠΌ экспСримСнтС Π»ΡƒΡ‡ΡˆΠ°Ρ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π±Ρ‹Π»Π° ΠΎΡ‚ΠΌΠ΅Ρ‡Π΅Π½Π° ΠΏΡ€ΠΈ запускС Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ° для Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Растригина: ускорСниС достигло ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΊΠΈ Π² 18.4.

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

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

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

1. Yifan Hu, Baozhong Yu, Jianliang Ma, Tianzhou Chen, Parallel Fish Swarm Algorithm Based on GPU-Acceleration // College of Computer Science and Technology, Zhejiang University, Hangzhou, P.R. China, Intelligent Systems and Applications (ISA), 2011

2. Anthony J.C.C. Lins, Carmelo J.A. Bastos-Filho, Debora N.O. Nascimento, Marcos A.C. Oliveira Junior and Fernando B. de Lima-Neto, Analysis of the Performance of the Fish School Search Algorithm Running in Graphic Processing Units // Polytechnic School of Pernambuco, University of Pernambuco, Brazil, Theory and New Applications of Swarm Intelligence, 2012, pp. 18−31.

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