TGViewer
πŸš€ ΠŸΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄ || ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ || GPGPU || SIMD πŸš€ ΠŸΠ°Ρ€Π°Π»Π»Π΅Π»ΡŒΠ½Ρ‹ΠΉ ΠΊΠΎΠ΄ || ΠžΠΏΡ‚ΠΈΠΌΠΈΠ·Π°Ρ†ΠΈΡ || GPGPU || SIMD @parallelcode Β· 258 subscribers
Post #83 324

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
More from @parallelcode
  1. Sep 10, 2026#видСозаписи #ΠΏΠ»ΡŽΡΠΎΡ‡Π΅Ρ‚Π²Π΅Ρ€Π³ Π’ C++ модСль алиасинга формируСтся сразу нСсколькими слоями: 1)…
  2. Aug 24, 2026Achieving Peak Performance for Matrix Multiplication in C++. Aliaksei Sala - C++Now 2025 А…
  3. Aug 20, 2026#видСозаписи #ΠΏΠ»ΡŽΡΠΎΡ‡Π΅Ρ‚Π²Π΅Ρ€Π³ Π”Π΅Ρ‚Π°Π»ΡŒΠ½ΠΎ Ρ€Π°Π·Π±ΠΈΡ€Π°Π΅ΠΌ ΡΠ²ΠΎΠ»ΡŽΡ†ΠΈΡŽ ΠΎΡ‚ ассСмблСрных вставок Π΄ΠΎ std::sim…
  4. Aug 12, 2026NVIDIA ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π»Π° 45-страничный whitepaper, ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎ Ρ€Π°ΡΠΊΡ€Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ Π°Ρ€Ρ…ΠΈΡ‚Π΅ΠΊΡ‚ΡƒΡ€Ρƒ Vera CPU h…
  5. Jul 15, 2026Post #91
  6. Mar 30, 2026Π‘Π°ΠΉΡ‚ uops.info Π½Π°ΠΊΠΎΠ½Π΅Ρ†-Ρ‚ΠΎ ΠΎΠ±Π½ΠΎΠ²ΠΈΠ» Ρ‚Π°Π±Π»ΠΈΡ‡ΠΊΡƒ Latency/Throughput ΠΊΠΎΠΌΠ°Π½Π΄, Π΄ΠΎΠ±Π°Π²ΠΈΠ² Π² Π½Π΅Ρ‘ сразу…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook β†’Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 β†’