πŸš€ ΠŸΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄ || ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ || Concurrency || SIMD || GPGPU
230 subscribers
25 photos
16 files
38 links
Наш Ρ‡Π°Ρ‚: @parallelcoding

1️⃣ Concurrency, ΠΏΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½ΠΎΠ΅ ΠΈ асинхронноС ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, Π²Ρ‹ΡΠΎΠΊΠΎΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅ вычислСния, GPGPU, IPC…
2️⃣ ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ ΠΊΠΎΠ΄Π°, SIMD. ΠŸΡ€ΠΎΡ„ΠΈΠ»ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅, Π±Π΅Π½Ρ‡ΠΌΠ°Ρ€ΠΊ.

ΠŸΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΡ, замСчания: @jin_x
Download Telegram
ΠžΠΊΠ°Π·Ρ‹Π²Π°Π΅Ρ‚ΡΡ, Π·Π΅Π»Ρ‘Π½Ρ‹Π΅ ΠΏΠΎΡ‚ΠΎΠΊΠΈ Π² Π²ΠΈΠ΄Π΅ Π»ΠΈΠ±Ρ‹ Π΅ΡΡ‚ΡŒ ΠΈ ΠΏΠΎΠ΄ ΠΏΠΈΡ‚ΠΎΠ½: https://habr.com/ru/companies/tochka/articles/798577/

Π§Ρ‚ΠΎ, Π²ΠΏΡ€ΠΎΡ‡Π΅ΠΌ, Π½Π΅ Ρ‚Π°ΠΊ ΠΈ ΡƒΠ΄ΠΈΠ²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ - ΠΊ Π‘/Π‘++ ΠΎΠ½ΠΈ Ρ‚ΠΎΠΆΠ΅ ΠΏΡ€ΠΈΠΊΡ€ΡƒΡ‡ΠΈΠ²Π°ΡŽΡ‚ΡΡ Π»ΠΈΠ±ΠΎΠΉ. ΠŸΡ€ΠΎΠ±Π»Π΅ΠΌΠ° ΠΊΠ°ΠΊ всСгда Π² Ρ‚ΠΎΠΌ, Ρ‡Ρ‚ΠΎ дальшС Π²ΠΎ всСй ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ΅ Π½ΡƒΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ совмСстимыС с ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½ΠΎΠΉ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΎΠΉ ΠΌΡŒΡŽΡ‚Π΅ΠΊΡΡ‹ ΠΈ Ρ‚.Π΄., ΠΈΠ½Π°Ρ‡Π΅ ΠΏΡ€ΠΈ Π»ΠΎΠΊΠ΅ Ρƒ вас Π±ΡƒΠ΄Π΅Ρ‚ задСйствован Ρ†Π΅Π»ΠΈΠΊΠΎΠΌ ΠΏΠΎΡ‚ΠΎΠΊ ОБ
AMD прСдставила Π½Π°ΡΡ‚ΠΎΠ»ΡŒΠ½Ρ‹Π΅ процСссоры Π½Π° Zen5. Выпуск начнётся ΡƒΠΆΠ΅ Π² июлС, Ρ†Π΅Π½Ρ‹ ΠΏΠΎΠΊΠ° Π½Π΅ ΠΎΠ±ΡŠΡΠ²Π»Π΅Π½Ρ‹.

Π§Ρ‚ΠΎ НЕ измСнилось ΠΏΠΎ ΡΡ€Π°Π²Π½Π΅Π½ΠΈΡŽ с Zen4: число ядСр, частоты, Ρ€Π°Π·ΠΌΠ΅Ρ€Ρ‹ кСшСй, чипсСт(Ρ‹).

IPC выросла Π² срСднСм Π½Π° 16%. SIMD engines Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Ρ‹ Π΄ΠΎ 512 Π±ΠΈΡ‚, ΠΈ вСроятно ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ Π² AVX-512 вырастСт Π½Π° дСсятки ΠΏΡ€ΠΎΡ†Π΅Π½Ρ‚ΠΎΠ².

Π­Π½Π΅Ρ€Π³ΠΎΠΏΠΎΡ‚Ρ€Π΅Π±Π»Π΅Π½ΠΈΠ΅ снизилось Π² 1.5 Ρ€Π°Π·Π° (170 -> 120, 105 -> 65 W). CCD Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ выпускаСтся Π½Π° 4 Π½ΠΌ (Π² Zen4 Π±Ρ‹Π»ΠΎ Π½Π° 5 Π½ΠΌ), ΠΈ ΠΏΠΎΡ…ΠΎΠΆΠ΅ Ρ‡Ρ‚ΠΎ всё ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΠ΅ тСхпроцСсса Π±Ρ‹Π»ΠΎ ΠΏΡƒΡ‰Π΅Π½ΠΎ Π½Π° ΠΎΠ±ΡƒΠ·Π΄Π°Π½ΠΈΠ΅ энСргопотрСблСния ядСр. Π‘ +16% IPC ΠΎΠ½ΠΈ ΠΈ Ρ‚Π°ΠΊ Π΄ΠΎΠ»ΠΆΠ½Ρ‹ Π±Ρ‹Ρ‚ΡŒ ΠΊΠΎΠ½ΠΊΡƒΡ€Π΅Π½Ρ‚Π½Ρ‹ с Raptor Lake.

IOD ΠΏΠΎ ΠΏΡ€Π΅ΠΆΠ½Π΅ΠΌΡƒ выпускаСтся Π½Π° 6 Π½ΠΌ, ΠΈ Π² Π½Ρ‘ΠΌ всё Ρ‚ΠΎ ΠΆΠ΅ RDNA2 видСоядро. Π’Π°ΠΊ Ρ‡Ρ‚ΠΎ Π΅ΡΡ‚ΡŒ ΠΏΠΎΠ΄ΠΎΠ·Ρ€Π΅Π½ΠΈΠ΅, Ρ‡Ρ‚ΠΎ Π΅Π³ΠΎ, ΠΊΠ°ΠΊ ΠΈ чипсСт, Π½Π΅ ΠΎΠ±Π½ΠΎΠ²ΠΈΠ»ΠΈ, ΠΈ Π±ΠΎΠ»Π΅Π΅ мСдлСнная, Ρ‡Π΅ΠΌ Ρƒ Raptor Lake, Ρ€Π°Π±ΠΎΡ‚Π° с DDR5 ΠΏΠ°ΠΌΡΡ‚ΡŒΡŽ останСтся Π±ΠΈΡ‡ΠΎΠΌ ΠΈ этого поколСния Zen.

(Π·Π°Π²Ρ‚Ρ€Π° дополню пост Π½Π΅ΠΎΡ„ΠΈΡ†ΠΈΠ°Π»ΡŒΠ½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΠΉ ΠΎΠ± ΡƒΠ»ΡƒΡ‡ΡˆΠ΅Π½ΠΈΡΡ… Π² ΠΌ/Π° Zen5)
πŸ”₯2
БвСТСнькиС ΠΌΠ°Π½ΡƒΠ°Π»Ρ‹ ΠΏΠΎ процСссорам, ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ, Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ°ΠΌ.

А Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΡ… ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Ρ‹ Π½Π° русский (Ссли Π²Π΄Ρ€ΡƒΠ³ ΠΊΠΎΠΌΡƒ Π½Π°Π΄ΠΎ). Плюс ΠΌΠ°ΡˆΠΈΠ½Π½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅Π²ΠΎΠ΄Ρ‹ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… ΠΊΠ½ΠΈΠ³ ΠΈ спСцификаций.

#докумСнтация
❀5
Π’ этом постС Π±ΡƒΠ΄ΡƒΡ‚ ΡΠΎΠ±ΠΈΡ€Π°Ρ‚ΡŒΡΡ ΠΎΠ±Π·ΠΎΡ€Ρ‹ Π½ΠΎΠ²ΠΎΠΉ ΠΌΠΈΠΊΡ€ΠΎΠ°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρ‹ Zen5.

Π‘Π»Π°ΠΉΠ΄Ρ‹ ΠΎΡ‚ AMD с ΠΈΠ½Ρ„ΠΎΠΉ ΠΎ ΠΌ/Π° ΠΈ ΠΈΠ½Ρ‚Π΅Ρ€Π²ΡŒΡŽ Π³Π»Π°Π²Π½ΠΎΠ³ΠΎ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΠΎΡ€Π°, Π΄Π°ΡŽΡ‰Π΅Π΅ Ρ‡ΡƒΡ‚ΡŒ большС Π΄Π΅Ρ‚Π°Π»Π΅ΠΉ.

Zen4's AVX512 Teardown ΠΎΡ‚ Mystical (Π°Π²Ρ‚ΠΎΡ€Π° y-cruncher).

Zen5's AVX512 Teardown + More... ΠΎΡ‚ Π½Π΅Π³ΠΎ ΠΆΠ΅. ΠšΡ€Π°Ρ‚ΠΊΠΎ - всС SIMD ALU Π±Ρ‹Π»ΠΈ Π΄Π΅ΠΉΡΡ‚Π²ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎ Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½Ρ‹ с 256 Π΄ΠΎ 512 Π±ΠΈΡ‚, поэтому Π½Π° AVX-512 ΠΊΠΎΠ΄Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ Π΄ΠΎ 2-ΠΊΡ€Π°Ρ‚Π½ΠΎΠ³ΠΎ ускорСния, Π½ΠΎ ΡƒΠ²Ρ‹ Π½Π° любом Π΄Ρ€ΡƒΠ³ΠΎΠΌ SIMD/FPU ΠΊΠΎΠ΄Π΅ (скалярном, 128/256-Π±ΠΈΡ‚Π½ΠΎΠΌ) - Π² срСднСм нСсколько ΠΏΡ€ΠΎΡ†Π΅Π½Ρ‚ΠΎΠ². Плюс, Π»Π°Ρ‚Π΅Π½Ρ‚Π½ΠΎΡΡ‚ΡŒ всСх выполняСмых Π² SIMD ALU 1-Ρ‚Π°ΠΊΡ‚ΠΎΠ²Ρ‹Ρ… ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΉ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ»Π°ΡΡŒ Π΄ΠΎ 2 Ρ‚Π°ΠΊΡ‚ΠΎΠ².

Π—Π΄Π΅ΡΡŒ собраны ΠΎΠ±Π·ΠΎΡ€Ρ‹ Zen5 с Ρ‚ΠΎΡ‡ΠΊΠΈ зрСния ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ (ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… прилоТСниях).
πŸ‘5❀4
βš‘οΈΠ’ΠΈΠ΄Π΅ΠΎ When Nanoseconds Matter: Ultrafast Trading Systems

Π”ΠΎΠ²ΠΎΠ»ΡŒΠ½ΠΎ интСрСсная лСкция ΠΎΡ‚ David Gross ΠΈΠ· Optiver ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊΠΈΠ΅ Ρ„ΠΈΡˆΠΊΠΈ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡŽΡ‚ΡΡ Π² ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ комплСксных Ρ‚ΠΎΡ€Π³ΠΎΠ²Ρ‹Ρ… систСм:

- ΠΊΠ°ΠΊ Π»ΡƒΡ‡ΡˆΠ΅ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ L3 ΠΎΡ€Π΄Π΅Ρ€Π±ΡƒΠΊ Π² памяти, ΠΈ ΠΊΠ°ΠΊ ΠΈΡΠΊΠ°Ρ‚ΡŒ Π² Π½Π΅ΠΌ.

- Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΎ ΠΏΡ€ΠΎΠ΅ΠΊΡ‚ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΠΈ ΠΊΠΎΠ΄Π΅ SPMC bounded ΠΎΡ‡Π΅Ρ€Π΅Π΄ΠΈ Π² shared memory.

- идСя spawn'ΠΈΡ‚ΡŒ perf прямо ΠΈΠ· своСго процСсса.

- Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ ΠΎ likely/unlikely/cold сСкциях Π² ΠΊΠΎΠ΄Π΅.

- упомнянул ΠΎ Ρ‚ΠΎΠΌ, ΠΊΠ°ΠΊΠΎΠΉ Π²Ρ‹ΠΈΠ³Ρ€Ρ‹Ρˆ Π΄Π°Ρ‘Ρ‚ kernel bypass ΠΏΡ€ΠΈ Ρ€Π°Π±ΠΎΡ‚Π΅ с ΡΠ΅Ρ‚ΡŒΡŽ.

- использованиС clang xray для добавлСния профилирования Π² Ρ€Π°Π½Ρ‚Π°ΠΉΠΌΠ΅.
πŸ‘2❀1πŸ”₯1
Forwarded from Π—аписки CPU designer'a (Николай)
ΠŸΠΎΠ΄Π±ΠΎΡ€ΠΊΠ° ΠΌΠΈΠΊΡ€ΠΎΠ°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π½Ρ‹Ρ… Π±Π»ΠΎΠΊ-Π΄ΠΈΠ°Π³Ρ€Π°ΠΌ ядСр ΠΎΡ‚ Intel, AMD, ARM, Ampere.

Block Diagrams: http://bit.ly/32qLLew
ΞΌarch Cheat Sheet: http://bit.ly/2JTplfJ

Для бСсполСзного, Π½ΠΎ интСрСсного упраТнСния, ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡΡ€Π°Π²Π½ΠΈΠ²Π°Ρ‚ΡŒ ядро Apple A15 (ΠΈΠ»ΠΈ любоС Π΄Ρ€ΡƒΠ³ΠΎΠ΅, прСдставлСнноС Π² ΠΏΠΎΠ΄Π±ΠΎΡ€ΠΊΠ΅) с Ρ€Π΅ΡˆΠ΅Π½ΠΈΡΠΌΠΈ Π½Π° Π±Π°Π·Π΅ RISC-V ΠΎΡ‚ Sifive P870 Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€ ΠΈΠ»ΠΈ Syntacore SCR7/9.
πŸ‘4πŸ”₯2
Forwarded from this->notes.
#cpp

ВрСмя -- дСньги.

Π‘Ρ‚Π°Π½Π΄Π°Ρ€Ρ‚ Π³ΠΎΠ²ΠΎΡ€ΠΈΡ‚ [упрощая], Ρ‡Ρ‚ΠΎ компиляторы Π΄ΠΎΠ»ΠΆΠ½Ρ‹ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Ρ‚ΡŒ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ наблюдаСмоС ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅. А ΠΊΠ°ΠΊ ΠΎΠ½ Ρ‚Π°ΠΌ это Π΄Π΅Π»Π°Π΅Ρ‚, это ΡƒΠΆΠ΅ Π΅Π³ΠΎ Π΄Π΅Π»ΠΎ.

Π•ΡΡ‚ΡŒ нСсколько ΡƒΡ€ΠΎΠ²Π½Π΅ΠΉ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΉ.

O0 (о ноль)

Π‘Π°Π·Π°. ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ Π΄Π΅Π»Π°Π΅Ρ‚ ΠΌΠΈΠ½ΠΈΠΌΠ°Π»ΡŒΠ½Ρ‹ΠΉ Π°Π½Π°Π»ΠΈΠ· ΠΈ минимальноС ΠΊΠΎΠ»-Π²ΠΎ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΉ. БохраняСтся полная сСмантика ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡ‹. Π”Π΅Ρ„ΠΎΠ»Ρ‚Π½Ρ‹ΠΉ Π²Π°Ρ€ΠΈΠ°Π½Ρ‚. ИдСально для Π΄Π΅Π±Π°Π³Π°.

O1

ΠšΠΎΠΌΠΏΠΈΠ»ΡΡ‚ΠΎΡ€ примСняСт простыС ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ Π±Π΅Π· слоТного Π°Π½Π°Π»ΠΈΠ·Π°: dead code elimination, constant propagation, basic inlining.
Π£ GCC Ρ‚ΡƒΡ‚ ΡƒΠΆΠ΅ 48 ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΉ.
Π˜ΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ Ρ€Π΅Π΄ΠΊΠΎ, ΠΊΠΎΠ³Π΄Π° Π½Π΅ хочСтся сильно Π·Π°ΠΌΠ΅Π΄Π»ΠΈΡ‚ΡŒ ΠΊΠΎΠΌΠΏΠΈΠ»ΡΡ†ΠΈΡŽ ΠΎΡ‡Π΅Π½ΡŒ Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌ (Π΄Ρ€ΡƒΠ³ ΠΎΡ‚ΠΌΠ΅Ρ‚ΠΈΠ», Ρ‡Ρ‚ΠΎ это Π½ΡƒΠΆΠ½ΠΎ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΌΠ°Ρ€Π³ΠΈΠ½Π°Π»Π°ΠΌ).

O2

Π‘Π°ΠΌΡ‹ΠΉ Π½Π°Ρ€ΠΎΠ΄Π½Ρ‹ΠΉ ΡƒΡ€ΠΎΠ²Π΅Π½ΡŒ.
ΠœΠ½ΠΎΠΆΠ΅ΡΡ‚Π²ΠΎ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΉ Π±Π΅Π· speed-space Ρ‚Ρ€Π΅ΠΉΠ΄ΠΎΡ„Π°: unroll loops, vectorization, strict aliasing.

O3

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

Ofast

Как O3, Π½ΠΎ Π²ΠΊΠ»ΡŽΡ‡Π°ΡŽΡ‚ΡΡ опасныС ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ. НапримСр --ffast-math.
ΠŸΠΎΡ‡Π΅ΠΌΡƒ опасныС? ΠŸΠΎΡ‚ΠΎΠΌΡƒ Ρ‡Ρ‚ΠΎ ΡΠΊΠΎΡ€ΠΎΡΡ‚ΡŒ получаСтся Π·Π° счёт точности. ΠŸΡ€ΠΎ Π°Ρ€Ρ‚Π΅Ρ„Π°ΠΊΡ‚Ρ‹ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΠΎΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Π² Beware of fast-math.

Og (ΠΎΡƒΠ΄ΠΆΠΈ)

Og = O0 + Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈΠ· O1, Π½Π΅ ΡƒΡ…ΡƒΠ΄ΡˆΠ°ΡŽΡ‰ΠΈΠ΅ debug experience.

Os

Os = ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈΠ· O2, Π½Π΅ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΠ²Π°ΡŽΡ‰ΠΈΠ΅ Ρ€Π°Π·ΠΌΠ΅Ρ€ ΠΊΠΎΠ΄Π° + Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ Π΄ΠΎΠΏΠΎΠ»Π½ΠΈΡ‚Π΅Π»ΡŒΠ½Ρ‹Π΅, ΠΏΠΎΠ·Π²ΠΎΠ»ΡΡŽΡ‰ΠΈΠ΅ ΡΠΎΠΊΡ€Π°Ρ‚ΠΈΡ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€ исполняСмого ΠΊΠΎΠ΄Π°. Π’Ρ€Π΅ΠΉΠ΄ΠΎΡ„ΠΈΠΌ Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ, Π½ΠΎ Π² ΠΌΠ΅Ρ€Ρƒ.

Oz

Когда Ρƒ вас ΠΌΠΎΡ‰Π½Π΅ΠΉΡˆΠΈΠ΅ ограничСния ΠΏΠΎ Ρ€Π°Π·ΠΌΠ΅Ρ€Ρƒ Π±ΠΈΠ½Π°Ρ€Π½ΠΈΠΊΠ° ΠΈ использованию памяти, Π²Ρ‹Π±ΠΈΡ€Π°Π΅ΠΌ Oz. Π—Π°ΠΎΠ΄Π½ΠΎ ΠΌΠΎΠΆΠ½ΠΎ ΠΏΡ€ΠΎΡΠ°Π΄ΠΈΡ‚ΡŒ ΠΈ ΠΏΠ΅Ρ€Ρ„. Но ΠΈΠ½ΠΎΠ³Π΄Π° Π² embedded Ρ‚ΠΎΠ»ΡŒΠΊΠΎ Ρ‚Π°ΠΊ.
ΠœΠΎΠΆΠ΅Ρ‚ ΡƒΠ²Π΅Π»ΠΈΡ‡ΠΈΡ‚ΡŒ ΠΊΠΎΠ»-Π²ΠΎ исполняСмых инструкций, Ссли ΠΈΡ… ΠΌΠΎΠΆΠ½ΠΎ Π·Π°ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ мСньшим ΠΊΠΎΠ»-Π²ΠΎΠΌ Π±Π°ΠΉΡ‚ΠΎΠ².
Π”Π΅Π±Π°Π³Π°Ρ‚ΡŒ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Ρ‚ΠΎΠΆΠ΅ ΡƒΠΆΠ΅ Π½Π΅Ρ€Π΅Π°Π»ΡŒΠ½ΠΎ больно. Но ΠΊΠ°ΠΊ Π΅ΡΡ‚ΡŒ.

ΠœΡ‹ Π½Π΅ Π³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΏΡ€ΠΎ LTO (ΠΈ ThinLTO) ΠΈ PGO. ΠœΡ‹ Π½Π΅ Π³ΠΎΠ²ΠΎΡ€ΠΈΠΌ ΠΏΡ€ΠΎ -march=... ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅. ΠœΠΎΠΆΠ΅Ρ‚ ΠΊΠΎΠ³Π΄Π°-Π½ΠΈΠ±ΡƒΠ΄ΡŒ ΠΏΠΎΡ‚ΠΎΠΌ..

Π”ΠΎΠΊΠ»Π°Π΄ Π² Ρ‚Π΅ΠΌΡƒ: What GCC optimization level is best for you?
Π’ Π΄ΠΎΠΊΠ»Π°Π΄Π΅ ΠΏΡ€ΠΎ сами ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ ΠΌΠ½ΠΎΠ³ΠΎ сравнСния с LLVM Π² Ρ€Π°Π·Π½Ρ‹Ρ… плоскостях ΠΏΠΎ Ρ€Π°Π·Π½Ρ‹ΠΌ оптимизациям. ΠœΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ ΠΏΠΎΠ»Π΅Π·Π½ΠΎ, Ссли Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ ΠΎΡΠΎΠ·Π½Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊΠΎΠΉ компилятор Π»ΡƒΡ‡ΡˆΠ΅ ΠΏΠΎΠ΄ ваши ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Π΅ Π½ΡƒΠΆΠ΄Ρ‹, Ρ‚.ΠΊ. Ρ‚Ρ€Π΅ΠΉΠ΄ΠΎΡ„Ρ‹ Π²Ρ‹Π±ΠΈΡ€Π°ΡŽΡ‚ Ρ€Π°Π·Π½Ρ‹Π΅.
❀1πŸ‘1
Forwarded from Π‘Π»ΠΎΠ³*
#prog #article

Advent of compiler optimizations β€” сборник Π΄Π΅ΠΊΠ°Π±Ρ€ΡŒΡΠΊΠΈΡ… статСй, ΠΏΠΎ ΠΎΠ΄Π½ΠΎΠΉ Π² дСнь (Π² ΠΎΠ±Ρ€Π°Ρ‚Π½ΠΎΠΌ хронологичСском порядкС), Π΄Π΅ΠΌΠΎΠ½ΡΡ‚Ρ€ΠΈΡ€ΡƒΡŽΡ‰ΠΈΡ… Π½Π° ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… Π½Π΅Π±ΠΎΠ»ΡŒΡˆΠΈΡ… ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°Ρ… Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Π΅ ΠΎΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΠΈ компиляторов. Написано ΠœΡΡ‚Ρ‚ΠΎΠΌ Π“ΠΎΠ΄Π±ΠΎΠ»Ρ‚ΠΎΠΌ (Π΄Π°-Π΄Π°, Ρ‚ΠΎΡ‚ самый, ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ godbolt.org).
πŸ‘2πŸ”₯1
ЛСкция ΠΎ ΠΌΠΈΠΊΡ€ΠΎΠ°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Π΅ x86-процСссоров Π½Π° ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ Intel Skylake.

Π Π°Π·Π±ΠΈΡ€Π°ΡŽΡ‚ΡΡ Π±Π°Π·ΠΎΠ²Ρ‹Π΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ Ρ€Π°Π±ΠΎΡ‚Ρ‹ соврСмСнного out-of-order CPU: ΠΊΠΎΠ½Π²Π΅ΠΉΠ΅Ρ€, Π΄Π΅ΠΊΠΎΠ΄ΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠ΅ x86-инструкций Π² ΠΌΠΈΠΊΡ€ΠΎΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ (Β΅ops), Π²Π½Π΅ΠΎΡ‡Π΅Ρ€Π΅Π΄Π½ΠΎΠ΅ исполнСниС, ΠΏΠ΅Ρ€Π΅ΠΈΠΌΠ΅Π½ΠΎΠ²Π°Π½ΠΈΠ΅ рСгистров ΠΈ Π°ΠΏΠΏΠ°Ρ€Π°Ρ‚Π½Ρ‹Π΅ ΠΌΠ΅Ρ…Π°Π½ΠΈΠ·ΠΌΡ‹ ΠΏΠΎΠ²Ρ‹ΡˆΠ΅Π½ΠΈΡ ΠΏΡ€ΠΎΠΈΠ·Π²ΠΎΠ΄ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ.

Π›Π΅ΠΊΡ‚ΠΎΡ€: ΠœΡΡ‚Ρ‚ Π“ΠΎΠ΄Π±ΠΎΠ»Ρ‚
Π‘ΠΎΠ·Π΄Π°Ρ‚Π΅Π»ΡŒ Compiler Explorer, C++-Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊ ΠΈ популяризатор Π½ΠΈΠ·ΠΊΠΎΡƒΡ€ΠΎΠ²Π½Π΅Π²Ρ‹Ρ… аспСктов Ρ€Π°Π±ΠΎΡ‚Ρ‹ процСссоров.
πŸ‘2🍾1