Forwarded from Блог*
#prog #article
Advent of compiler optimizations — сборник декабрьских статей, по одной в день (в обратном хронологическом порядке), демонстрирующих на отдельных небольших примерах различные оптимизации компиляторов. Написано Мэттом Годболтом (да-да, тот самый, который godbolt.org).
Advent of compiler optimizations — сборник декабрьских статей, по одной в день (в обратном хронологическом порядке), демонстрирующих на отдельных небольших примерах различные оптимизации компиляторов. Написано Мэттом Годболтом (да-да, тот самый, который godbolt.org).
👍2🔥1
Forwarded from Записки CPU designer'a
Лекция о микроархитектуре x86-процессоров на примере Intel Skylake.
Разбираются базовые принципы работы современного out-of-order CPU: конвейер, декодирование x86-инструкций в микрооперации (µops), внеочередное исполнение, переименование регистров и аппаратные механизмы повышения производительности.
Лектор: Мэтт Годболт
Создатель Compiler Explorer, C++-разработчик и популяризатор низкоуровневых аспектов работы процессоров.
Разбираются базовые принципы работы современного out-of-order CPU: конвейер, декодирование x86-инструкций в микрооперации (µops), внеочередное исполнение, переименование регистров и аппаратные механизмы повышения производительности.
Лектор: Мэтт Годболт
Создатель Compiler Explorer, C++-разработчик и популяризатор низкоуровневых аспектов работы процессоров.
👍2🍾2🔥1
Путеводитель C++ программиста по неопределенному поведению
Как известно, неопределённое поведение (UB) заложено в язык для того, чтобы дать компилятору простор для оптимизации. Вместе с тем, этот механизм бывает причиной экзотических ошибок, которые могут проявляться в зависимости от архитектуры целевого процессора, компилятора и его опций, а также положения спутников Юпитера.
Дмитрий Свиридкин собрал множество UB в книге на GitHub, чтобы помочь нам с вами не совершать подобных ошибок (для кинестетиков есть бумажная версия книги).
Как говорится, предупреждён — значит вооружён. Вооружайтесь 😉
Как известно, неопределённое поведение (UB) заложено в язык для того, чтобы дать компилятору простор для оптимизации. Вместе с тем, этот механизм бывает причиной экзотических ошибок, которые могут проявляться в зависимости от архитектуры целевого процессора, компилятора и его опций, а также положения спутников Юпитера.
Дмитрий Свиридкин собрал множество UB в книге на GitHub, чтобы помочь нам с вами не совершать подобных ошибок (для кинестетиков есть бумажная версия книги).
Как говорится, предупреждён — значит вооружён. Вооружайтесь 😉
❤7🤔1
Forwarded from GPGPU Russia
Недавно прошёл очередной курс "Вычисления на видеокартах" от Николая Полярного бесплатно без регистрации и смс (ну, при желании, можно и зарегистрироваться).
Из опыта прошлых таких постов, почему-то ссылки курсы (тоже открытые) про GPU от Nvidia набирают гораздо больше просмотров и пересылок, что странно, так как этот курс (и прошлые его версии) гораздо более глубокий, охватывает гораздо больше тем и вообще на русском языке.
Из опыта прошлых таких постов, почему-то ссылки курсы (тоже открытые) про GPU от Nvidia набирают гораздо больше просмотров и пересылок, что странно, так как этот курс (и прошлые его версии) гораздо более глубокий, охватывает гораздо больше тем и вообще на русском языке.
🔥4
Forwarded from GPGPU Russia (Michael Lukin)
Компилятор из CUDA в AMD RDNA 3 и 4 (видеокарты AMD Radeon 7xxx и 9ххх), написанный на С99 без зависимостей от других библиотек:
https://github.com/Zaneham/BarraCUDA
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
1👍2👎1🤯1
Please open Telegram to view this post
VIEW IN TELEGRAM
Forwarded from Записки CPU designer'a
NVIDIA опубликовала 45-страничный whitepaper, подробно раскрывающий архитектуру Vera CPU
https://nvdam.widen.net/s/nmw5vblpqd/nvidia_vera_cpu_architecture_whitepaper
https://nvdam.widen.net/s/nmw5vblpqd/nvidia_vera_cpu_architecture_whitepaper
🔥3
Forwarded from C++ Russia — канал конференции
#видеозаписи #плюсочетверг
Детально разбираем эволюцию от ассемблерных вставок до
Юлий Тарасов — Векторизация в C++: от ассемблерных вставок к переносимой производительности со std::simd
😉 YouTube | 📺 VK Видео
Детально разбираем эволюцию от ассемблерных вставок до
std::simd и смотрим, как заставить один и тот же алгоритм идеально работать и на x86 с AVX2, и на RISC-V с RVV, и на ARM с SVE.Юлий Тарасов — Векторизация в C++: от ассемблерных вставок к переносимой производительности со std::simd
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
Векторизация в C++: от ассемблерных вставок к переносимой производительности со std::simd
Подробнее о конференции C++ Russia: https://jrg.su/nbdpQS
— —
Скачать презентацию с сайта — https://jrg.su/qzX49M
Хватит ли вам терпения копировать код, заменяя _mm256 на _mm512? Надоело гадать, справится ли автовекторизатор с вашим циклом? Разработка векторизованного…
— —
Скачать презентацию с сайта — https://jrg.su/qzX49M
Хватит ли вам терпения копировать код, заменяя _mm256 на _mm512? Надоело гадать, справится ли автовекторизатор с вашим циклом? Разработка векторизованного…
👍1
Achieving Peak Performance for Matrix Multiplication in C++. Aliaksei Sala - C++Now 2025
Алексей рассказывает про постепенное улучшение умножения матриц, начиная от базового подхода и двигаясь через улучшение работы с кешами, simd, префетчингом и всякими другими финтифлюшками.
Алексей рассказывает про постепенное улучшение умножения матриц, начиная от базового подхода и двигаясь через улучшение работы с кешами, simd, префетчингом и всякими другими финтифлюшками.
🔥1
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 Видео
В 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++: прошлое, настоящее и будущее
Please open Telegram to view this post
VIEW IN TELEGRAM
YouTube
Владислав Белов — Алиасинг памяти в C++: прошлое, настоящее и будущее
Подробнее о конференции C++ Russia: https://jrg.su/nbdpQS
— —
Алиасинг — одна из самых важных и при этом до сих пор недостаточно хорошо понимаемых тем в системном программировании. Проблема контроля алиасинга существует во всех языках программирования, работающих…
— —
Алиасинг — одна из самых важных и при этом до сих пор недостаточно хорошо понимаемых тем в системном программировании. Проблема контроля алиасинга существует во всех языках программирования, работающих…
👍1👎1