Параллельный код || Оптимизация || Concurrency || SIMD || GPGPU
226 subscribers
22 photos
16 files
34 links
Наш чат: @parallelcoding

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

Предложения, замечания: @jin_x
Download Telegram
Привет, друзья! Соскучились? Надеюсь, что да 🙃
Сентябрь — время учёбы. Так было в школе, ВУЗе, пусть будет и здесь (но здесь же приятнее и уютнее) 😁

Плавно входим в режим обучения курсом от ФПМИ "Теория и практика многопоточной синхронизации" (Роман Липовский, весна 2022).
🔸 Лекции
🔸 Семинары
🔹 Репозиторий курса
Приятного просмотра!

Кстати, расскажите в нашем чате, что интересного вы сделали за лето, с какими проблемами столкнулись, какие интересные решения нашли 😉

#видео #курс #параллелизм
Please open Telegram to view this post
VIEW IN TELEGRAM
Салют! Небольшой ребрендинг: смена логотипов (надоел уже этот аляпистый спидометр) 🤩

И заодно некоторые полезности, разбирайте!

📖 Книга о технологиях OpenMP, CUDA, OpenCL и MPI.
Не must have, конечно, а всего лишь "учебное пособие для ВУЗов" :). Если вы только начинаете изучать эти технологии, начальные знания она вам даст (там всего 136 страниц). А потом уже можно рыться в спецификациях.
Малявко Александр Антонович. Параллельное программирование на основе технологий OpenMP, CUDA, OpenCL, MPI. 3-е изд., испр. и доп. Учебное пособие для вузов. — М.: ЮРАЙТ, 2022 — 136 с. ISBN 978-5-534-14116-0
[скачать]

Статьи:
🔸 Введение в технику оптимизации циклов (Хабр, 2011)
🔸 Методика разработки многопоточных приложений: принципы и практическая реализация (RSDN, 2004-2005)
🔸 32 подводных камня OpenMP при программировании на C++ (RSDN, 2008-2009)

💻 Коллекция lock-free и wait-free библиотек

#книга #статья #параллелизм #gpgpu #библиотека
Please open Telegram to view this post
VIEW IN TELEGRAM
С новым 2️⃣0️⃣2️⃣3️⃣ годом, дорогие подписчики! 🎄 🤩

Желаю вам не только писать эффективный и стабильный многозадачный и многопоточный код. Но и бодро писать свою жизнь, эффективно решая любые задачи, наполняясь потоком ярких идей и гармонично развиваясь во всех сферах своей жизни! 😉🔥💪

В общем, если по-простому, здоровья, удачи, любви, одним словом — счастья вам в новом году! ❤️
Ура! 🥂

P.S. У каждого куранты бьют в разные моменты, поэтому отправляю по своему местному времени 🙂
Please open Telegram to view this post
VIEW IN TELEGRAM
Сегодня, в преддверии большого кол-ва выходных, будет много разноплановой инфы.

Базовые вещи про многопоточность:
🔹 Multithreading — обзор STL C++20 (хоть и неполный) для работы с потоками от OTUS (Хабр, 2021)
🔹 Многопоточное программирование C++ — небольшой базовый курс по многопоточности C++ (YouTube, 2018)

Статьи:
🔸 Лучшие суперкомпьютеры мира — как выглядят и зачем нужны? (Хабр, 2023)
🔸 Стандарт C++20: обзор новых возможностей C++. Часть 5 «Корутины» — Яндекс Практикум (Хабр, 2021)
🔸 Как работать с процессами и потоками в Python (Хабр, 2022)
🔸 Запуск кода CUDA на видеокартах AMD (Хабр, 2022)
🔸 Вычисляем на видеокартах. Технология OpenCL. Часть 0. Краткая история GPGPU (Хабр, 2021)
🔸 Вычисляем на видеокартах. Технология OpenCL. Часть 1a. Как работает OpenCL (Хабр, 2021)
🔸 Вычисляем на видеокартах. Технология OpenCL. Часть 1b. Пишем для OpenCL (Хабр, 2021)
🔸 Вычисляем на видеокартах. Технология OpenCL. Часть 2. Алгоритмы в условиях массового параллелизма (Хабр, 2021)

Железо/ОС:
🔹 Архитектура ЭВМ — Кирилл Кринкин (курс на YouTube, 2020-2022)
🔹 Архитектура операционной системы (на примере Linux) — Кирилл Кринкин (курс на YouTube, 2017-2018)

Выступления:
🔸 EVE: Новая C++20 библиотека для работы с SIMD — Денис Ярошевский (YouTube, 2021) 🔹 Презентация 🔹 github
🔸 Асинхронная разработка на C++ — Павел Новиков (YouTube, 2019)
🔸 Оптимизации времени компиляции. Даем больше информации компилятору — Кирилл Тихонов (YouTube, 2019)
🔸 The C++20 synchronization library — Bryce Adelstein Lelbach (YouTube, 2019) [English]
🔸 Concurrency and parallelism in C++17 and C++20/23 — Rainer Grimm (YouTube, 2019) [English]
🔸 Know your hardware: CPU memory hierarchy — Alexander Titov (YouTube, 2019) [English]

#курс #видео #статья #библиотека #параллелизм #асинхронность #оптимизация #железо #ос
Давайте немного про SIMD и ассемблер 😉

Видео:
🔸 Что могут C и C++, и когда нужен ассемблер / Александр Крижановский (Tempesta Technologies) (YouTube, 2022)
🔸 SIMD в .NET: Обработка изображений на интринсиках — Степан Артемьев (YouTube, 2022)
🔸 SIMD и ручная векторизация (доп. семинар для первого курса по языку C и алгоритмам) (YouTube, 2022)
🔸 SIMD. Производительность, за которую вы уже заплатили — Ашот Варданян (YouTube, 2021)
🔸 Первые шаги в SIMD. Реализация STL-алгоритмов с помощью AVX2 vector extensions — Денис Ярошевский (YouTube, 2021)
🔸 Векторизуй это / Андрей Аксенов (Авито, Sphinx) (YouTube, 2020)
🔸 Путь к перформансу через intrinsics. Ренат Тазиев, Контур (YouTube, 2020)
🔸 SIMD and vectorization using AVX intrinsic functions (Tutorial) (YouTube, 2022) [english]
🔸 AVX512: Introduction and Overview: part1, part2, part3 (YouTube, 2021) [english]
🔘 Какой-то плейлист про Performance Programming (может, кто-то найдёт что-нибудь полезное для себя 😁)

Статьи:
Assembler в Go: техники ускорения и оптимизации (Хабр, 2023)
Intel реализовала сортировку на AVX-512: ускорение в 10–17 раз (Хабр, 2023)
Чем программисту заняться в 1990 году: осваиваем чёрную магию ассемблера (Хабр, 2022)

Пара книг:
🔹 Йо Ван Гуй. Программирование на ассемблере х64. От начального уровня до профессионального использования AVX — ДМК Пресс, 2021. — 332 с., ISBN 978-5-97060-929-3
🔹 Куссвюрм Даниэль. Профессиональное программирование на ассемблере x64 с расширениями AVX, AVX2 и AVX-512 — ДМК Пресс, 2021. — 628 с., ISBN 978-5-97060-928-6

А также:
Моя подборка книг, инструментов и полезных ссылок по ассемблеру
Выпуск подкаста «Люди и код» с моим участием про ассемблер (вышел как раз сегодня)

#видео #статья #книга #оптимизация #simd #asm
Please open Telegram to view this post
VIEW IN TELEGRAM
Сегодня каналу и чату исполняется ровно год! 🥳

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

Булат Зиганшин (автор FreeArc).

🔸 McCool, James Reinders, Arch Robison. Structured Parallel Programming: Patterns for Efficient Computation [2012] / Слайды на русском
🔸 Timothy G. Mattson, Beverly A. Sanders, Berna L. Massingill. Patterns for Parallel Programming (Software Patterns Series) [2004]
🔸 Восс Майкл, Рейндерс Джеймс, Асенхо Рафаэль. Параллельное программирование на C++ с помощью библиотеки TBB [2020]
🔸 Пол Батчер. Семь моделей конкуренции и параллелизма за семь недель [2015]
🔸 6 актуальных книг по C++ от автора Райнер Гримм [2017-2022]
🔸 Генри С. Уоррен. Алгоритмические трюки для программистов [2018] / [2014]
🔸 Лин К., Снайдер Л. Принципы параллельного программирования [2013]
🔸 Петер Брасс. Усовершенствованные структуры данных [2023]
🔸 Дэвидсон Дж. Гай, Грегори Кейт. Красивый C++: 30 главных правил чистого, безопасного и быстрого кода [2023]
🔸 Брайант Р. Э., О'Халларон Д. Р. Компьютерные системы. Архитектура и программирование [2022]

Подборки ресурсов:
🔹 Awesome Parallel Computing Resources
🔹 Algorithms / datastructures
🔹 List of Online C++ Compilers

Missclick Очепятка.

🔸 Афансьев. Основы высокопроизводительных вычислений (3 книги) [2011-2012]

Ilya Zviagin.

🔸
Грегори Р. Эндрюс. Основы многопоточного, параллельного и распределенного программирования [2003]: DJVU / Онлайн / PDF

n0_0p.

🔸 Addison-Wesley. Hacker's Delight [2003, 2012] – software algorithm book which presents fast bit-level and low-level arithmetic algorithms for common tasks such as counting bits or improving speed of division by using multiplication.

P.S. Если что-то пропустил, пишите 😉

#книги
Please open Telegram to view this post
VIEW IN TELEGRAM
Продолжая тему активности участников нашего чата, предлагаю посмотреть лекцию об оптимизации от Булата Зиганшина:
🎞 Устройство процессоров (2020)
В описании к видео есть список книг.

Спасибо, друзья, всем, кто принимает активное участие в жизни нашего сообщества!

Лучший подарок от вас — рекомендация канала и чата своим друзьям, коллегам и подписчикам (у кого они есть) 🙂

Кого ещё нет в нашем чате, категорически рекомендую присоединиться.

#оптимизация #видео #cpu
Please open Telegram to view this post
VIEW IN TELEGRAM
Intel анонсировала 2 новых расширения

1️⃣ APX (Advanced Performance Extensions) со следующими новыми фичами:
— дополнительные 16 регистров общего назначения R16-R31, называемые расширенными регистрами общего назначения,
— трёхоперандные инструкции для многих целочисленных операций (add rax,rcx,rdx),
— новые условные инструкции для чтения/записи и сравнения (cfmovcc, setcc.zu, ccmp, ctest, а также атомарная инструкция cmpccxadd),
— оптимизированные операции сохранения регистров (push2/pop2),
— прямой 64-битный переход (jmpabs).
➡️ Новость на русском (3Dnews)
➡️ Новость на английском (Phoronix)
➡️ Информация и спецификации на сайте Intel (англ), со ссылками на спецификации AVX10, см. ниже.

2️⃣ Эволюция векторных инструкций — AVX10 (AVX10.1, AVX10.2 и т.д. — да, теперь вместо флагов для отдельных расширений будет номер версии). Обещают поддержку функциональности AVX-512, вроде как даже без потери производительности. AVX10 будут работать как на P-ядрах, так и на E-ядрах (но на последних только с 256-битными векторами и только в версии AVX10.2). AVX-512 развиваться не будет, но останется в серверных процессорах для совместимости со старыми приложениями.
➡️ Новость на русском (3Dnews)
➡️ Новость на английском (Phoronix)

🟣 Вы же уже в курсе существования расширений AMX (Advanced Matrix Extensions) в серверных процессорах Sapphire Rapids? Если нет, читайте на сайте Intel (и на Phoronix).

🟣 Некоторое время назад Intel также анонсировала новую упрощённую архитектуру — X86-S. Наиболее заметные (но далеко не единственные) отличия от текущей архитектуры Intel 64 — отсутствие 16-битных и 32-битных режимов (последний останется только в режиме совместимости, как сейчас при работе в 64-битном Long Mode). Читайте на сайте Intel (и на Хабре).

P.S. Кому лень поштучно качать спецификации с сайта Intel, приглашаю заглянуть в наш чат и забрать всё оттуда (включая июньские мануалы Intel SDM и свежие PDF-ки по оптимизации от Agner'а Fog'а) 😉
Please open Telegram to view this post
VIEW IN TELEGRAM
Новый выпуск Intel 64 and IA-32 Architectures Software Developer's Manual (сентябрь 2023).
Также новые:
— Intel Architecture Instruction Set Extensions and Future Features;
— Intel and IA-32 Architectures Optimization Reference Manual (теперь в 2-х томах);
— Intel APX (2.0).
И прочее...
Ловите, чтобы не включать VPN (5 июльских манов А.Фога качаем тут) 😉

P.S. Заглядывайте также в наш чат, который Булат Зиганшин периодически скидывает свежие интересные материалы!
Чувак обнаружил баг в SRW Locks, тянущийся минимум с Висты до наших дней, и приводящий к некорректной работе std::shared_mutex в MSVC STL: "SRWLOCK can deadlock after an exclusive owner has released ownership and several reader threads are attempting to acquire shared ownership together"

https://www.reddit.com/r/cpp/comments/1b55686/maybe_possible_bug_in_stdshared_mutex_on_windows/
Оказывается, зелёные потоки в виде либы есть и под питон: 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)
Свеженькие мануалы по процессорам, оптимизации, библиотекам.

А также их машинные переводы на русский (если вдруг кому надо). Плюс машинные переводы некоторых книг и спецификаций.

#документация