ΠŸΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π°Π½ Π΅ ΡΡ‚Π°Π½Π΄Π°Ρ€Ρ‚ΡŠΡ‚ Π·Π° ΠΏΠ°Ρ€Π°Π»Π΅Π»Π½ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ€Π°Π½Π΅ OpenMP 6.0

Π‘Π»Π΅Π΄ Ρ‚Ρ€ΠΈ Π³ΠΎΠ΄ΠΈΠ½ΠΈ Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚ΠΊΠ° бСшС ΠΏΡƒΠ±Π»ΠΈΠΊΡƒΠ²Π°Π½ Π½Π°Π±ΠΎΡ€ ΠΎΡ‚ спСцификации OpenMP 6.0 (Open Multi-Processing), опрСдСлящи API ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΈ Π·Π° ΠΏΡ€ΠΈΠ»Π°Π³Π°Π½Π΅ Π½Π° ΠΏΠ°Ρ€Π°Π»Π΅Π»Π½ΠΎ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ€Π°Π½Π΅ Π·Π° Π΅Π·ΠΈΡ†ΠΈ ΠΊΠ°Ρ‚ΠΎ C, C++ ΠΈ Fortran Π½Π° многоядрСни ΠΈ Ρ…ΠΈΠ±Ρ€ΠΈΠ΄Π½ΠΈ (CPU+GPU/DSP) систСми с ΠΎΠ±Ρ‰Π° ΠΏΠ°ΠΌΠ΅Ρ‚ ΠΈ Π±Π»ΠΎΠΊΠΎΠ²Π΅ Π·Π° вСкторизация (SIMD). ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π° сС, Ρ‡Π΅ Π½Π°Ρ‡Π°Π»Π½Π°Ρ‚Π° ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° ΠΎΡ‚Π΄Π΅Π»Π½ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Π½Π° OpenMP 6.0 Ρ‰Π΅ бъдС Π²ΠΊΠ»ΡŽΡ‡Π΅Π½Π° Π² вСрсиитС Π½Π° LLVM/Clang 20 ΠΈ GCC 15.

Основни ΠΏΡ€ΠΎΠΌΠ΅Π½ΠΈ Π² OpenMP 6.0:

  • ΠŸΡ€ΠΎΡ†Π΅ΡΡŠΡ‚ Π½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ€Π°Π½Π΅ Π½Π° Π·Π°Π΄Π°Ρ‡ΠΈ (task), опрСдСлящи нСзависими части ΠΎΡ‚ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠ°Ρ‚Π°, ΠΊΠΎΠΈΡ‚ΠΎ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° сС ΠΈΠ·ΠΏΡŠΠ»Π½ΡΠ²Π°Ρ‚ ΠΏΠ°Ρ€Π°Π»Π΅Π»Π½ΠΎ с Π΄Ρ€ΡƒΠ³ΠΈ части, Π΅ опростСн.
    • Π”ΠΎΠ±Π°Π²Π΅Π½Π° Π΅ Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ Π·Π° изпълнСниС Π½Π° Π·Π°Π΄Π°Ρ‡ΠΈ Π² ΠΏΠΎΡ‚ΠΎΡ†ΠΈ free-agent, ΠΊΠΎΠΈΡ‚ΠΎ Π½Π΅ са ΡΠ²ΡŠΡ€Π·Π°Π½ΠΈ с Π³Ρ€ΡƒΠΏΠΈ ΠΎΡ‚ ΠΏΠΎΡ‚ΠΎΡ†ΠΈ (teams), ΠΈΠ·ΠΏΡŠΠ»Π½ΡΠ²Π°Ρ‰ΠΈ ΠΏΠ°Ρ€Π°Π»Π΅Π»Π½ΠΈ Ρ€Π΅Π³ΠΈΠΎΠ½ΠΈ (parallel region, Π±Π»ΠΎΠΊ ΠΎΡ‚ ΠΊΠΎΠ΄, изпълняван Π² мноТСство ΠΏΠΎΡ‚ΠΎΡ†ΠΈ).
    • ΠžΡΠΈΠ³ΡƒΡ€Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π·Π° ΡΡŠΡ…Ρ€Π°Π½Π΅Π½ΠΈΠ΅ Π½Π° Π³Ρ€Π°Ρ„Π° Π½Π° Π·Π°Π΄Π°Ρ‡ΠΈΡ‚Π΅ (taskgraph), опрСдСлящ зависимоститС ΠΌΠ΅ΠΆΠ΄Ρƒ Π·Π°Π΄Π°Ρ‡ΠΈΡ‚Π΅ ΠΈ Ρ€Π΅Π΄Π° Π½Π° изпълнСниС Π½Π° Π·Π°Π΄Π°Ρ‡ΠΈΡ‚Π΅, Π·Π° повишаванС Π½Π° СфСктивността Π½Π° послСдващото ΠΏΠΎΠ²Ρ‚ΠΎΡ€Π½ΠΎ Π²ΡŠΠ·ΠΏΡ€ΠΎΠΈΠ·Π²Π΅ΠΆΠ΄Π°Π½Π΅.
    • Π Π΅Π°Π»ΠΈΠ·ΠΈΡ€Π°Π½ Π΅ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΡŠΠΌ Π·Π° ΠΏΡ€ΠΎΠ·Ρ€Π°Ρ‡Π½ΠΈ Π·Π°Π΄Π°Ρ‡ΠΈ (Β«transparent tasksΒ»), ΠΊΠΎΠΉΡ‚ΠΎ опростява ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° зависимоститС ΠΈ Π°Π²Ρ‚ΠΎΠΌΠ°Ρ‚ΠΈΡ‡Π½ΠΎΡ‚ΠΎ ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ»ΠΈΡ€Π°Π½Π΅ Π½Π° ΠΈΠ·ΠΏΡŠΠ»Π½Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° Π΄ΡŠΡ‰Π΅Ρ€Π½ΠΈ Π·Π°Π΄Π°Ρ‡ΠΈ.
  • Π Π°Π·ΡˆΠΈΡ€Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ°Ρ‚Π° Π½Π° изчислитСлни устройства, ΠΊΠΎΠΈΡ‚ΠΎ ΠΌΠΎΠ³Π°Ρ‚ Π΄Π° сС ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Ρ‚ Π·Π° изпълнСниС Π½Π° ΠΏΠ°Ρ€Π°Π»Π΅Π»Π½ΠΈ Π·Π°Π΄Π°Ρ‡ΠΈ (CPU, GPU, DSP ΠΈ Π΄Ρ€.).
    • Π”ΠΎΠ±Π°Π²Π΅Π½ Π΅ Π½ΠΎΠ² синтаксис Π·Π° масиви, позволяващ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π΅Ρ‚ΠΎ Π½Π° Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π°Ρ‚Π° Β«workdistributeΒ» Π·Π° Ρ€Π°Π·ΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ°Ρ‚Π° Π½Π° масиви ΠΌΠ΅ΠΆΠ΄Ρƒ Ρ€Π°Π·Π»ΠΈΡ‡Π½ΠΈ Ρ€Π°Π±ΠΎΡ‚Π½ΠΈ Π΅Π΄ΠΈΠ½ΠΈΡ†ΠΈ.
    • Π Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈ са Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΠΈΡ‚Π΅ Π·Π° ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π½Π°Ρ‚Π° ΠΏΠ°ΠΌΠ΅Ρ‚, опростяващи ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΠΏΡ€ΠΎΠΌΠ΅Π½Π»ΠΈΠ²ΠΈ, Π·Π° ΠΊΠΎΠΈΡ‚ΠΎ ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π° сС задСля Π΄ΠΈΠ½Π°ΠΌΠΈΡ‡Π½ΠΎ.
    • Π Π°Π·ΡˆΠΈΡ€Π΅Π½Π° Π΅ ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ°Ρ‚Π° Π½Π° Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΈ, опрСдСлящи Ρ€Π°Π·ΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° Π΄Π°Π½Π½ΠΈΡ‚Π΅ ΠΌΠ΅ΠΆΠ΄Ρƒ устройствата ΠΏΠΎ ΠΏΠΎΠ΄Ρ€Π°Π·Π±ΠΈΡ€Π°Π½Π΅.
    • ΠžΠΏΡ€ΠΎΡΡ‚Π΅Π½ΠΎ Π΅ написванСто Π½Π° ΠΊΠΎΠ΄ Π·Π° асинхронни ΠΏΡ€Π΅Π΄Π°Π²Π°Π½Π΅ Π½Π° Π΄Π°Π½Π½ΠΈ Π½Π° Π΄ΠΎΠΏΡŠΠ»Π½ΠΈΡ‚Π΅Π»Π½ΠΈ изчислитСлни устройства (GPU).
    • ΠŸΠΎΠ΄ΠΎΠ±Ρ€Π΅Π½ΠΎ Π΅ ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅Ρ‚ΠΎ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π° ΠΈ Π½Π΅ΠΉΠ½Π°Ρ‚Π° ΠΏΡ€ΠΈΠ²ΡŠΡ€Π·Π°Π½ΠΎΡΡ‚ към изчислитСлнитС устройства.
    • Π”ΠΎΠ±Π°Π²Π΅Π½Π° Π΅ Π΄ΠΈΡ€Π΅ΠΊΡ‚ΠΈΠ²Π° Β«groupprivateΒ» Π·Π° ΡΠ²ΡŠΡ€Π·Π²Π°Π½Π΅ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π° с Π³Ρ€ΡƒΠΏΠ° ΠΎΡ‚ ΠΏΠΎΡ‚ΠΎΡ†ΠΈ, изпълнявани Π½Π° ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΎ изчислитСлно устройство.
  • ΠžΠΏΡ€ΠΎΡΡ‚Π΅Π½ΠΎ Π΅ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈΡ€Π°Π½Π΅Ρ‚ΠΎ Π½Π° някои Π²ΠΈΠ΄ΠΎΠ²Π΅ трансформации Π½Π° Ρ†ΠΈΠΊΠ»ΠΈ, ΠΊΠ°Ρ‚ΠΎ обСдиняванС Π½Π° няколко Ρ†ΠΈΠΊΡŠΠ»a, промяна Π½Π° Ρ€Π΅Π΄Π° Π½Π° Π²Π»ΠΎΠΆΠ΅Π½ΠΈΡ‚Π΅ Ρ†ΠΈΠΊΠ»ΠΈ ΠΈ рСвСрсия Π½Π° Ρ†ΠΈΠΊΠ»ΠΈ.
  • Π”ΠΎΠ±Π°Π²Π΅Π½Π° Π΅ Π½ΠΎΠ²Π° опСрация ΠΏΠΎ индукция (induction) Π·Π° организация Π½Π° ΠΏΠ°Ρ€Π°Π»Π΅Π»ΠΈΠ·ΠΈΡ€Π°Π½Π΅ Π² Ρ†ΠΈΠΊΠ»ΠΈ Π½Π° прости Π°Ρ€ΠΈΡ‚ΠΌΠ΅Ρ‚ΠΈΡ‡Π½ΠΈ изчислСния ΠΈ потрСбитСлски ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ, зависСщи ΠΎΡ‚ ΠΏΡ€Π΅Π΄Ρ…ΠΎΠ΄Π½ΠΈ стойности.
  • Π”ΠΎΠ±Π°Π²Π΅Π½Π° Π΅ пълна ΠΏΠΎΠ΄Π΄Ρ€ΡŠΠΆΠΊΠ° Π½Π° разпаралСляванС Π½Π° ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΈ, написани ΠΏΠΎ стандартитС C23 (Π²ΠΊΠ»ΡŽΡ‡ΠΈΡ‚Π΅Π»Π½ΠΎ синтаксиса Π½Π° Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΈΡ‚Π΅), Fortran 2023 ΠΈ C++23. Π”ΠΎΠ±Π°Π²Π΅Π½ΠΈ са Π½ΠΎΠ²ΠΈ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΈ Π·Π° C/C++.
  • Π Π°Π·ΡˆΠΈΡ€Π΅Π½ΠΈ са Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΠΈΡ‚Π΅ Π·Π° ΡƒΠΏΡ€Π°Π²Π»Π΅Π½ΠΈΠ΅ Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π° ΠΈ Ρ…Ρ€Π°Π½ΠΈΠ»ΠΈΡ‰Π΅Ρ‚ΠΎ. Π”ΠΎΠ±Π°Π²Π΅Π½ΠΈ са Π½ΠΎΠ²ΠΈ Π°Ρ‚Ρ€ΠΈΠ±ΡƒΡ‚ΠΈ Π·Π° ΠΊΠΎΠ½Ρ‚Ρ€ΠΎΠ» Π½Π° Π½Π°Ρ‡ΠΈΠ½Π°, ΠΏΠΎ ΠΊΠΎΠΉΡ‚ΠΎ трябва Π΄Π° бъдС задСляна ΠΈ ΠΈΠ·ΠΏΠΎΠ»Π·Π²Π°Π½Π° ΠΏΠ°ΠΌΠ΅Ρ‚Ρ‚Π°. Π”ΠΎΠ±Π°Π²Π΅Π½ Π΅ API Π·Π° опрСдСлянС ΠΈ Π·Π°ΠΏΠΈΡ‚Π²Π°Π½Π΅ Π½Π° пространства Π·Π° ΠΏΠ°ΠΌΠ΅Ρ‚ (memory space).
  • ΠŸΡ€Π΅ΠΌΠ°Ρ…Π½Π°Ρ‚ΠΈ са Π²ΡŠΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΠΈ, обявСни Π·Π° остарСли Π² спСцификациитС Π½Π° OpenMP 5.0, 5.1 ΠΈ 5.2.

Π˜Π·Ρ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru

ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ πŸ”₯ ΠšΡƒΠΏΠ΅Ρ‚Π΅ Π½Π°Π΄Π΅ΠΆΠ΄Π΅Π½ хостинг Π·Π° сайтовС с Π·Π°Ρ‰ΠΈΡ‚Π° ΠΎΡ‚ DDoS, VPS VDS ΡΡŠΡ€Π²ΡŠΡ€ΠΈ | ProHoster