TGViewer
Channel Public Channel
🚀 Параллельный код || Оптимизация || GPGPU || SIMD

🚀 Параллельный код || Оптимизация || GPGPU || SIMD

@parallelcode

Наш чат: @parallelcoding

1️⃣ Concurrency, параллельное и асинхронное программирование, высокопроизводительные вычисления, GPGPU, IPC…
2️⃣ Оптимизация кода, SIMD. Профилирование, бенчмарк.

Предложения, замечания: @jin_x
Subscribers
258
Photos
26
Videos
0
Links
46
Recent Posts 16 shown
Post #95 69

Forwarded from C++ Russia — канал конференции

#видеозаписи #плюсочетверг

В C++ модель алиасинга формируется сразу несколькими слоями:
1) strict aliasing,
2) оптимизационные модели компиляторов (TBAA, noalias, alias scopes),
3) нестандартные расширения компиляторов, такие как __restrict.

Доклад, который мы открываем сегодня — о том, как компиляторы (GCC, Clang, MSVC) принимают решения об алиасинге и что может сделать программист, чтобы сделать свой код более быстрым и, что также важно, безопасным.

Отдельное внимание спикер уделил современным обсуждениям в стандарте C++ (restrict-like семантика, alias sets, свойства доступа для span/mdspan, pointer provenance), в докладе разобраны примеры кода на C++23, выдержки из последнего стандарта C++, а также фрагменты LLVM IR для объяснения работы оптимизатора.

Владислав Белов — Алиасинг памяти в C++: прошлое, настоящее и будущее

😉 YouTube | 📺 VK Видео
YouTube Владислав Белов — Алиасинг памяти в C++: прошлое, настоящее и будущее Подробнее о конференции C++ Russia: https://jrg.su/nbdpQS — — Алиасинг — одна из самых важных и при этом до сих пор недостаточно хорошо понимаемых тем в системном программировании. Проблема контроля алиасинга существует во всех языках программирования, работающих…
  • 👍 1
  • 👎 1
Post #94 262
Achieving Peak Performance for Matrix Multiplication in C++. Aliaksei Sala - C++Now 2025

Алексей рассказывает про постепенное улучшение умножения матриц, начиная от базового подхода и двигаясь через улучшение работы с кешами, simd, префетчингом и всякими другими финтифлюшками.
  • 🔥 1
Post #93 160

Forwarded from C++ Russia — канал конференции

#видеозаписи #плюсочетверг

Детально разбираем эволюцию от ассемблерных вставок до std::simd и смотрим, как заставить один и тот же алгоритм идеально работать и на x86 с AVX2, и на RISC-V с RVV, и на ARM с SVE.

Юлий Тарасов — Векторизация в C++: от ассемблерных вставок к переносимой производительности со std::simd

😉 YouTube | 📺 VK Видео
YouTube Векторизация в C++: от ассемблерных вставок к переносимой производительности со std::simd Подробнее о конференции C++ Russia: https://jrg.su/nbdpQS — — Скачать презентацию с сайта — https://jrg.su/qzX49M Хватит ли вам терпения копировать код, заменяя _mm256 на _mm512? Надоело гадать, справится ли автовекторизатор с вашим циклом? Разработка векторизованного…
  • 👍 1
Post #89 659

Сайт uops.info наконец-то обновил табличку Latency/Throughput команд, добавив в неё сразу Zen5, Arrow Lake-P/E, Meteor Lake-P/E и Emerald Rapids. Эти же данные можно скачать в виде XML.
.
  • 🍾 3
  • 👍 2
Post #88 436

Forwarded from GPGPU Russia (Michael Lukin)

Компилятор из CUDA в AMD RDNA 3 и 4 (видеокарты AMD Radeon 7xxx и 9ххх), написанный на С99 без зависимостей от других библиотек:
https://github.com/Zaneham/BarraCUDA
GitHub GitHub - Zaneham/Booth: Open-source CUDA, Triton and HIP compiler targeting multiple GPU and CPU architectures. Open-source CUDA, Triton and HIP compiler targeting multiple GPU and CPU architectures. - Zaneham/Booth
  • 👍 2
  • 👎 1
  • 🤯 1
Post #87 325

Forwarded from GPGPU Russia

Недавно прошёл очередной курс "Вычисления на видеокартах" от Николая Полярного бесплатно без регистрации и смс (ну, при желании, можно и зарегистрироваться).

Из опыта прошлых таких постов, почему-то ссылки курсы (тоже открытые) про GPU от Nvidia набирают гораздо больше просмотров и пересылок, что странно, так как этот курс (и прошлые его версии) гораздо более глубокий, охватывает гораздо больше тем и вообще на русском языке.
  • 🔥 4
Post #86 1.57K
Путеводитель C++ программиста по неопределенному поведению

Как известно, неопределённое поведение (UB) заложено в язык для того, чтобы дать компилятору простор для оптимизации. Вместе с тем, этот механизм бывает причиной экзотических ошибок, которые могут проявляться в зависимости от архитектуры целевого процессора, компилятора и его опций, а также положения спутников Юпитера.

Дмитрий Свиридкин собрал множество UB в книге на GitHub, чтобы помочь нам с вами не совершать подобных ошибок (для кинестетиков есть бумажная версия книги).
Как говорится, предупреждён — значит вооружён. Вооружайтесь 😉
  • ❤ 7
  • 🤔 1
Post #85 285

Forwarded from Записки CPU designer'a

Лекция о микроархитектуре x86-процессоров на примере Intel Skylake.

Разбираются базовые принципы работы современного out-of-order CPU: конвейер, декодирование x86-инструкций в микрооперации (µops), внеочередное исполнение, переименование регистров и аппаратные механизмы повышения производительности.

Лектор: Мэтт Годболт
Создатель Compiler Explorer, C++-разработчик и популяризатор низкоуровневых аспектов работы процессоров.
  • 👍 2
  • 🍾 2
  • 🔥 1
Post #84 303

Forwarded from Блог*

#prog #article

Advent of compiler optimizations — сборник декабрьских статей, по одной в день (в обратном хронологическом порядке), демонстрирующих на отдельных небольших примерах различные оптимизации компиляторов. Написано Мэттом Годболтом (да-да, тот самый, который godbolt.org).
  • 👍 2
  • 🔥 1
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
Post #82 304

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
Post #79 615

Forwarded from Один микросек - C++, low latency, concurrency, HFT

⚡️Видео When Nanoseconds Matter: Ultrafast Trading Systems

Довольно интересная лекция от David Gross из Optiver о том, какие фишки используются в проектировании комплексных торговых систем:

- как лучше представить L3 ордербук в памяти, и как искать в нем.

- немного о проектировании и коде SPMC bounded очереди в shared memory.

- идея spawn'ить perf прямо из своего процесса.

- немного о likely/unlikely/cold секциях в коде.

- упомнянул о том, какой выигрыш даёт kernel bypass при работе с сетью.

- использование clang xray для добавления профилирования в рантайме.
YouTube When Nanoseconds Matter: Ultrafast Trading Systems in C++ - David Gross - CppCon 2024 https://cppcon.org CppCon 2024 Early Access: https://cppcon.org/early-access Access All 2024 Session Videos Ahead of Their Official Release To YouTube. At least 30 days exclusive access through the Early Access system. Videos will be released to the CppCon…
  • 👍 2
  • ❤ 1
  • 🔥 1
Post #78 1.09K
В этом посте будут собираться обзоры новой микроархитектуры 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
Older posts →

About this channel

How can I read @parallelcode without a Telegram account?
TGViewer shows the public web preview Telegram publishes for 🚀 Параллельный код || Оптимизация || GPGPU || SIMD: recent posts, photos, videos and the subscriber count, with no app, login or account.
How many subscribers does 🚀 Параллельный код || Оптимизация || GPGPU || SIMD have?
🚀 Параллельный код || Оптимизация || GPGPU || SIMD (@parallelcode) has 258 subscribers on Telegram, refreshed roughly every 30 minutes.
Does 🚀 Параллельный код || Оптимизация || GPGPU || SIMD know I viewed it here?
No. Public channel previews carry no viewer identity, and TGViewer has no accounts or tracking of what you look up.
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 →