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

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

Предложения, замечания: @jin_x
Download Telegram
Всем салют! 💥

Решил я на днях поискать в телеге специализированные чаты и каналы по параллельному программированию (и concurrency в целом). И ничего не нашёл, что весьма удивительно 🤔. Потому что тема интересная, востребованная, местами весьма непростая.

Поэтому было решено создать и чат, и канал. Добавив сюда же GPGPU, оптимизацию и SIMD.

Каких-либо обещаний по поводу регулярности постов давать не буду. Время покажет.

Друзья, чтобы придать чату и каналу большей живучести, делитесь ссылками на них:
➡️ @parallelcode (канал),
➡️ @parallelcoding (чат).

Ну и буду безмерно благодарен интересным материалам по теме: ссылкам на статьи, книги, лекции, библиотеки и т.п. Пишите в чат или в личку ✌️
Please open Telegram to view this post
VIEW IN TELEGRAM
Думаю, стоит сразу добавить что-нибудь полезного.
Предлагаю вашему вниманию курс из 15-ти 1-1.5-часовых лекций «Параллельное программирование» от Computer Science Center (лектор Евгений Калишенко).

Курс весьма неплохой, особенно для новичков. Затрагивает темы корректной работы с потоками и ресурсами (через примитивы и неблокирующие алгоритмы lock-free и wait-free), низкоуровневые механизмы, Java.util.concurrent, OpenMP, Intel TBB, профилирование, барьеры памяти, шаблоны, транзакционную память, асинхронный ввод-вывод и т.д. Плюс, у них на канале много интересных видео.

В общем, вперёд! 💪
➡️ https://www.youtube.com/playlist?list=PLlb7e2G7aSpQCPeKTcVBHJns_JOxrc_fT

#видео #курс #параллелизм
Всем привет! ✌️

Те, кто интересуется оптимизацией кода, наверняка слышали об Агнере Фоге (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
Наступили выходные, а значит можно посмотреть что-нибудь полезное. Например, о вычислениях на графических процессорах (GPGPU).

Ниже прикреплены ссылки на короткие вводные лекции по CUDA и OpenACC. Полноценный курс пришлю позже (как посмотрю хотя бы пару-тройку лекций из него) 🙂

Если вы разбираетесь в теме, не факт, что вы найдёте здесь что-то новое для себя. Но если вы новичок или пока не знакомы с технологией, обязательно посмотрите!

1️⃣ Краткий обзорный онлайн курс по CUDA и OpenACC (VK).

2️⃣ Ещё один курс видеолекций по NVIDIA CUDA (YouTube).

3️⃣ Ещё? Пожалуйста: NVIDIA CUDA и OpenACC (YouTube — у автора на канале кроме этих лекций ничего нет).

🔹 CUDA Toolkit от NVIDIA — компилятор и инструменты разработчика.

P.S. У меня сейчас очень загруженные дни, так что из первых трёх ссылок я смотрел только лекции из п.1. Ставьте реакции 👍 / 👎 / 🤔 и делитесь мнением в чате, чтобы дать понять, насколько интересными для вас оказались эти видео.

#видео #курс #gpgpu #cuda #openacc
Чтобы писать действительно эффективные многопоточные приложения (а иногда даже просто рабочие), необходимо знать о моделях памяти и барьерах памяти. Посмотрите пару видео на эту тему.

1️⃣ Модель памяти C++ - Андрей Янковский (Яндекс C++ Party) + слайды.

2️⃣ Почему C++ atomics именно такие (академия Яндекса).

Кстати, в лекциях CSC ⤴️ (в частности, №11 и №12), которые я отправлял выше, тоже обсуждается эта тема. В чём-то подробнее, в чём-то нет.

А также в цикле статей про lock-free структуры данных ⤴️ (в частности, про барьеры памяти и модель памяти).

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

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

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

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

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

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

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

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

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

#статья #параллелизм #транзакционнаяпамять
Сегодня, в свой день рождения, хочу предложить вам книгу 🥳
Книга, что называется, must have.

Уильямс Энтони. C++. Практика многопоточного программирования. — СПб.: Питер, 2020. — 640 с.: ил. — (Серия «Для профессионалов»). ISBN 978-5-4461-0831-2
Ссылка ведёт на сайт издательства, но книгу несложно найти и в электронном виде в открытых источниках 😜
Также даю ссылку на исходные коды примеров из книги. И на отрывок из книги.

Кто уже читал, поделитесь впечатлениями в нашем чате. Знаете другие хорошие книги по теме параллельного программирования, высокопроизводительных вычислений, GPGPU, профилирования, оптимизации? Напишите о них! ✌️

#книга #параллелизм #cpp
Сегодня поговорим о мощнейшей (при этом бесплатной) библиотеке от 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
В одно сообщение всё не вошло, вот продолжение...

🔸 Репозиторий oneTBB
🔸 Официальная документация по oneTBB
🔸 Спецификация в формате HTML
🔸 Страница загрузки спецификаций всей oneAPI (доступен формат PDF)
🔸 Страница oneTBB на сайте Intel (в России открывается только через прокси/VPN)

Ну и на сладенькое:
🔥 Свежая книга на русском языке: Восс М., Асенхо Р., Рейндерс Дж. Параллельное программирование на C++ с помощью библиотеки TBB / пер. с англ. А. А. Слинкина. — М.: ДМК Пресс, 2020. — 674 с.: ил. ISBN 978-5-97060-864-7.
Ссылка, как обычно, на издательство (и на рутрекере, как вы понимаете, она тоже есть) 😁

P.S. Есть классная книга? Документация на русском? Хороший курс по теме — пишите в чат! ✌️

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

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

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