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

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

Предложения, замечания: @jin_x
加入频道
Всем привет! ✌️

Те, кто интересуется оптимизацией кода, наверняка слышали об Агнере Фоге (Agner Fog) — специалисте в этой области.
Ну а если вы всё-таки не знакомы с его работами, то настоятельно рекомендую!

Оптимизация кода на C++ и на ассемблере под Windows, Linux, macOS
Таблица инструкций процессоров Intel, AMD, VIA (микрооперации, задержки, пропускная способность и пр.)
Очень подробно о соглашениях о вызовах для различных ОС
Библиотека классов для работы с векторами, оптимизированные под SSE, AVX, AVX-512
И не только...

В общем, enjoy it!
➡️ https://agner.org/optimize/

#статья #документация #оптимизация
В многопоточных приложениях для доступа к разделяемым ресурсам (например, памяти) часто используются различные блокировки (критические секции, семафоры, RW-locks, spinlocks, etc). Однако такой подход оправдан (и даже применим) не всегда. Кроме блокирующих методов синхронизации необходимо знать и о неблокирующих (lock-free, wait-free) алгоритмах и структурах данных, использование которых, как правило, позволяет повысить производительность, порой весьма существенно.

Предлагаю вашему вниманию цикл статей про Lock-free структуры данных, написанных автором open-source библиотеки для C++ libcds Максимом Хижинским. Ссылка выше ведёт на все публикации автора на Хабре, однако на данный момент кроме этого цикла из 16-ти статей там ничего нет. На всякий случай дам ссылку на первую статью.

#статья #курс #канал #параллелизм #lockfree
👍1
Сегодня не буду грузить вас большими объёмами информации. Дам лишь пару ссылок на статьи, которые, надеюсь, будут вам интересны.

1️⃣ Топ 20 ошибок при работе с многопоточностью на С++ и способы избежать их (Хабр, 2019) + очень похожая статья 20 типичных ошибок многопоточности в C++ (Otus, 2018) — выбирайте любую 😊

2️⃣ Почему они не умеют писать многопоточные программы (2014)

#статья #параллелизм #ошибки
Как при написании параллельного кода не мучиться из-за блокировок? Транзакционная память — перспективная технология управления доступом к совместно используемой памяти.

О ней сегодня несколько статей с Хабра:

1️⃣ Введение в транзакционную память от Мориса Херлихи (2021)

2️⃣ «Проще ответить, чем продолжать молчать» — большое интервью с отцом транзакционной памяти, Морисом Херлихи (2019)

3️⃣ Транзакционная память: история и развитие (2014)

4️⃣ Транзакционная память и многопоточность (2011)

#статья #параллелизм #транзакционнаяпамять
👍2
Сегодня поговорим о мощнейшей (при этом бесплатной) библиотеке от Intel — oneTBB (oneAPI Threading Building Blocks).
Кто не знает, что такое oneAPI, читайте статью Intel oneAPI Toolkit — Intel Studio на новый лад (Хабр, 2021).

Порыл я интернет на эту тему, однако кроме официальной документации нашёл не так много:
Лекции от CSC про OpenMP и Intel TBB (2020 год, со слайдами)

Статьи (Хабр):
1️⃣ oneTBB: интеграция и сборка через CMake (2022)
2️⃣ Использование Intel TBB для создания многопоточных приложений (2010)
3️⃣ Вычисление числа Пи с помощью Intel Threading Building Blocks (2015)
4️⃣ Параллельное программирование с помощью вычислительного графа (2012)
4️⃣🅰️ Вычислительные Графы, Спекулятивные Замки и Арены для Задач в Intel® Threading Building Blocks (2014)
4️⃣🅱️ Вычислительные Графы, Спекулятивные Замки и Арены для Задач в Intel® Threading Building Blocks (продолжение) (2014)

#статья #видео #библиотека #параллелизм #tbb
👍1
Что почитать на выходных? Подборочка с Хабра.

Многопоточность:

1️⃣ Консистентно о Консенсусе (2021)

2️⃣ Подключаем к Экселю GPU и ускоряем Эксель в 300 раз (2022)

3️⃣ Как одной строкой сделать 24-ядерный сервер медленнее ноутбука (2022)

Процессоры и серверы:

4️⃣ Первые слайды с информацией о Ryzen 7000 (2022) + AMD представила Ryzen 7000 — 5-нм процессоры на Zen 4 с новым сокетом, частотой выше 5 ГГц и графикой RDNA 2 (3dnews). Подобных статей куча, но инфа +/- одинаковая (т.е. более детальных подробностей найти проблематично).
Ещё поговаривают (правда, уже давно), что в Ryzen 7000 будет поддержка AVX-512 (только не очень понятно в каких моделях... и реально ли будет — вы как думаете?)

5️⃣ Планы Intel до 2024 — самое главное (2022)

6️⃣ Как будут собирать российские серверы в новых условиях (2022)

Обсудим в чате? 😉

#статья #параллелизм #gpgpu #cpu
🔥3
Сегодня поговорим об асинхронном программировании. Что это, зачем, как работает и как этим пользоваться?
Крепитесь, ниже будет много всего 💪

What is this?

1️⃣ Для начала предлагаю почитать статью на proglib: Асинхронное программирование: концепция, реализация, примеры (2018).
2️⃣ Далее — обсуждение на SO. Там же есть ссылка на полезную статью об асинхронности т.н. IO-Bound операций, когда задействованы внешние относительно CPU устройства.
3️⃣ Ну и, наконец, Хабр: Асинхронность в программировании (2019)

Теперь статьи, видео и курсы с разбивкой по языкам...

JavaScript:
🔸 Асинхронное программирование в однопоточных средах JavaScript (Хабр, 2021)
🔸 Асинхронное программирование (полный курс) (2019), то же самое: YouTube.
🔸 Асинхронное программирование в JavaScript (Callback, Promise, RxJs ) (Хабр, 2019)
🔸 Символы, генераторы, async/await и асинхронные итераторы в JavaScript: их сущность, взаимосвязь и варианты использования (Хабр, 2018)

Продолжение в следующем посте...

#статья #видео #курс #асинхронность #js
👍2
Идём дальше... 🙄

C#:
🔸 Асинхронные потоки от Стивена Клири (Хабр, 2021)
🔸 Асинхронный рассинхрон: антипаттерны в работе с async/await в .NET (Хабр, 2019)
🔸 Платный курс C# асинхронное программирование.
В открытом доступе на YouTube есть, по крайней мере, 2 урока из курса (2019):
🔹 Введение в асинхронное программирование. C# Асинхронное программирование.
🔹 Как работает async/await? Асинхронные методы С#. C# Асинхронное программирование.
🔸 Видео курс C# Professional. Урок 15. Async Await (Александр Шевчук, 2015)

C++:
🔸 Асинхронность в С++20. Доклад в Яндексе (Хабр, 2021)
🔸 Анатомия асинхронных фреймворков в С++ и других языках (Хабр, 2021)
🔸 Корутины C++20 в примерах (Хабр, 2020)
🔸 Асинхронная разработка на C++ (YouTube, C++ Russia, 2019)
Небольшой цикл статей на Хабр:
🔸 Асинхронность: назад в будущее (2013)
🔸 Асинхронность 2: телепортация сквозь порталы (2014)
🔸 Асинхронность 3: Субъекторная модель (2017)
Доклады Яндекс (YouTube):
🔹 Введение в асинхронное программирование - Пузыревский Иван (2014)
🔹 Асинхронное программирование и сопрограммы - Григорий Демченко (2014)
🔹 Асинхронная разработка на C++ под мобильные устройства - Дмитрий Жестилевский (2014)

Python:
🔸Асинхронный python без головной боли (Хабр, 2021)
🔸Курс Асинхронность в Python (YouTube, 2018)
🔸Мини-курс Асинхронное программирование на Python 3 (YouTube, 2018)
Лекции Яндекс (Школа бэкенд-разработки, YouTube, 2020):
🔸 Асинхронное программирование. Лекция 1 – Эдуард Жук
🔸 Асинхронное программирование. Лекция 2 – Александр Васин
🔸 Асинхронное программирование. Лекция 3 – Дмитрий Орлов
🔹 Бонус: Асинхронное программирование на практике – Дмитрий Орлов (2021)

Java:
🔸 Реактивное программирование на Java: как, зачем и стоит ли? Часть I (2021)
🔸 Реактивное программирование на Java: как, зачем и стоит ли? Часть II (2021)
🔸 Aсинхронное программирование в Java // бесплатный урок OTUS (TouTube, 2018)
🔸 Асинхронное программирование в Java 8: видео доклада (YouTube, Dev Labs, 2016)
🔸 Континуации в Java (Хабр, 2016)
🔹 Большой плейлист с видео на русском и английском языках: #java#concurrency (YouTube)

Go:
🔸 Лекции по Go 3/3. Эффективная асинхронность (concurrency) в Go (YouTube, 2018)
🔸 Как ошибиться с конкурентностью в Go / Алексей Палажченко (Percona) (YouTube, 2020)
🔸 Асинхронность или просто горутины в Golang, начало. Основы работы с горутинами! (YouTube, 2021)
🔸 Изучаем Golang. Урок 9. Многопоточность. Горутины и каналы (YouTube, 2021)
🔸 Делаем асинхронность асинхронной, разбираемся в планировщике Go, ругаем Linux (Хабр, 2021)
🔸 Планирование в Go: Часть I — Планировщик ОС (Хабр, 2019)
🔸 Планирование в Go: Часть II — Планировщик Go (Хабр, 2020)

Может быть интересно:
🔹 Асинхронная бизнес-логика в наши дни (Хабр, 2018)
🔹 Какие изменения нужны языку Rust, чтобы писать асинхронный код стало проще (Хабр, 2021)
🔹 «Мы даже не пытаемся запустить старый код, такой задачи у нас не стоит в принципе» — Роман Елизаров о разработке Kotlin (Хабр, 2018)

Интересно? Ставьте 🔥 и делитесь материалом с другими! 😉

#статья #видео #курс #асинхронность #csharp #cpp #python #java #golang
🔥3