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

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

Предложения, замечания: @jin_x
加入频道
Думаю, стоит сразу добавить что-нибудь полезного.
Предлагаю вашему вниманию курс из 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

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

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

#статья #курс #канал #параллелизм #lockfree
👍1
Наступили выходные, а значит можно посмотреть что-нибудь полезное. Например, о вычислениях на графических процессорах (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
👍3
Устройство операционных систем и процессоров — большие, местами сложные темы, с которыми полезно познакомиться каждому программисту, а не только разработчикам параллельных приложений. Не всем есть смысл сильно углубляться, но общее представление поможет каждому писать более эффективный код.

Сегодня копнём в сторону операционных систем.

Кому не хочется смотреть многочасовые курсы лекций:
🔸 Что такое операционная система и как она работает?

Более расширенная версия (того же лектора):
🔸 Архитектура операционной системы (на примере Linux), осень 2017

Кому хочется познакомиться поглубже (звук местами лажает, особенно на первых лекциях, но потом будет всё ок):
🔸 Операционные системы (2020/2021)

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

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
Привет, друзья! Соскучились? Надеюсь, что да 🙃
Сентябрь — время учёбы. Так было в школе, ВУЗе, пусть будет и здесь (но здесь же приятнее и уютнее) 😁

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

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

#видео #курс #параллелизм
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2🔥2
Сегодня, в преддверии большого кол-ва выходных, будет много разноплановой инфы.

Базовые вещи про многопоточность:
🔹 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]

#курс #видео #статья #библиотека #параллелизм #асинхронность #оптимизация #железо #ос
👍4🔥2