🎓 Комьюнити Cursor собрало огромную библиотеку гайдов и инструментов для вайбкодеров. Тут есть всё, чтобы работать с ИИ было проще и эффективнее:
— Готовые промты под разные задачи
— MCP-серверы для общения с внешними приложениями
— И самое крутое: генератор уникальных промт-правил под ваш проект
Налетай — всё это бесплатно и уже доступно.
🔗 https://cursor.directory/
— Готовые промты под разные задачи
— MCP-серверы для общения с внешними приложениями
— И самое крутое: генератор уникальных промт-правил под ваш проект
Налетай — всё это бесплатно и уже доступно.
🔗 https://cursor.directory/
🙉21❤9👍5🔥2💊2😱1🥴1
📦 PcapPlusPlus — мощный C++ инструмент для работы с сетевыми пакетами. Этот мультиплатформенный проект предлагает удобные C++ обёртки для популярных движков захвата трафика — от классических libpcap/WinPcap до высокопроизводительных DPDK и PF_RING.
Библиотека поддерживает огромное количество протоколов: от базовых Ethernet и IP до специализированных вроде WireGuard или S7Comm. При работе с пакетами, помимо стандартного парсинга в проекте доступны функции сборки TCP-сессий с учётом ретрансмитов и обработки фрагментации IP. Для разработчиков приложений под Linux ценна интеграция с eBPF AF_XDP — это позволяет достичь линейной скорости обработки.
🤖 GitHub
@cpluspluc
Библиотека поддерживает огромное количество протоколов: от базовых Ethernet и IP до специализированных вроде WireGuard или S7Comm. При работе с пакетами, помимо стандартного парсинга в проекте доступны функции сборки TCP-сессий с учётом ретрансмитов и обработки фрагментации IP. Для разработчиков приложений под Linux ценна интеграция с eBPF AF_XDP — это позволяет достичь линейной скорости обработки.
🤖 GitHub
@cpluspluc
❤10👍7🥰3
🧠 C++ Задача: "Живые итераторы"
У тебя есть вектор указателей на строки. Некоторые строки могут быть
1. Удаляет все
2. Преобразует каждую строку в верхний регистр на месте.
3. Возвращает отсортированный вектор строк по длине (по убыванию).
✳️ Ограничение: нельзя копировать строки. Можно только перемещать (`std::move`).
Пример:
После обработки ты должен получить std::vector<std::string> вида:
💡 Разбор
1) Удаляем nullptr с помощью std::erase_if или std::remove_if + erase.
2) Используем std::transform и std::toupper — с учётом, что строки по указателю.
3) Перемещаем строки в новый std::vector<std::string>, не копируя.
4) Сортируем с кастомным компаратором [](const std::string& a, const std::string& b) { return a.size() > b.size(); }.
Важно:
- Не забыть удалить указатели или использовать unique_ptr с std::move_if_noexcept.
- Верхний регистр через std::transform(s.begin(), s.end(), s.begin(), ::toupper).
📌 Попробуй сам — задача ловит на управлении памятью и семантике перемещения.
@cpluspluc
У тебя есть вектор указателей на строки. Некоторые строки могут быть
nullptr
, а некоторые — валидные. Напиши функцию, которая:1. Удаляет все
nullptr
из вектора.2. Преобразует каждую строку в верхний регистр на месте.
3. Возвращает отсортированный вектор строк по длине (по убыванию).
✳️ Ограничение: нельзя копировать строки. Можно только перемещать (`std::move`).
Пример:
std::vector<std::string*> data = {
new std::string("apple"),
nullptr,
new std::string("banana"),
new std::string("kiwi"),
nullptr
};
После обработки ты должен получить std::vector<std::string> вида:
["BANANA", "APPLE", "KIWI"]
💡 Разбор
2) Используем std::transform и std::toupper — с учётом, что строки по указателю.
3) Перемещаем строки в новый std::vector<std::string>, не копируя.
4) Сортируем с кастомным компаратором [](const std::string& a, const std::string& b) { return a.size() > b.size(); }.
Важно:
- Не забыть удалить указатели или использовать unique_ptr с std::move_if_noexcept.
- Верхний регистр через std::transform(s.begin(), s.end(), s.begin(), ::toupper).
📌 Попробуй сам — задача ловит на управлении памятью и семантике перемещения.
@cpluspluc
👍10❤6🤔1
🔥 Совет дня: быстро посчитать частоты элементов в C++ с `std::unordered_map`
Когда нужно подсчитать, сколько раз каждый элемент встречается в векторе — не пиши вручную поиск. Просто используй
📌 Удобно для:
— анализа строк
— парсинга логов
— простых хэш-агрегаций
@cpluspluc
Когда нужно подсчитать, сколько раз каждый элемент встречается в векторе — не пиши вручную поиск. Просто используй
unordered_map
:
#include <iostream>
#include <vector>
#include <unordered_map>
int main() {
std::vector<std::string> items = {"apple", "banana", "apple", "orange", "banana", "apple"};
std::unordered_map<std::string, int> freq;
for (const auto& item : items) {
++freq[item];
}
for (const auto& [key, count] : freq) {
std::cout << key << ": " << count << "\n";
}
// 👉 apple: 3, banana: 2, orange: 1
}
📌 Удобно для:
— анализа строк
— парсинга логов
— простых хэш-агрегаций
@cpluspluc
❤18😴4🙈1🗿1
🧠 C++ Задача для продвинутых: безопасный счётчик с автоматическим сбросом
Условие:
Реализуйте потокобезопасный счётчик, который:
1. Увеличивается при вызове
2. Возвращает текущее значение при
3. Автоматически сбрасывается в 0 через
4. Не сбрасывается, если за это время пришёл новый
🔧 Условия:
- Нельзя использовать сторонние библиотеки (только стандарт C++17+)
- Нельзя вручную управлять потоками (используйте
- Нужно обеспечить корректный RAII (автоматическое завершение потоков при разрушении объекта)
🔍 Пример:
💡 Подсказка:
Нужно реализовать "отложенный сброс", который перезапускается при каждом increment(). Используйте фоновый поток и condition_variable.
✅ Ожидаемое решение (упрощённый скелет):
🎯 Отличная задача, чтобы потренировать:
понимание RAII
работу с condition_variable
атомарные переменные
и правильную остановку фоновых потоков
Можешь доработать под конкретные кейсы — например, логирование событий сброса или работу с несколькими счётчиками.
Условие:
Реализуйте потокобезопасный счётчик, который:
1. Увеличивается при вызове
increment()
2. Возвращает текущее значение при
get()
3. Автоматически сбрасывается в 0 через
N
миллисекунд после последнего increment()4. Не сбрасывается, если за это время пришёл новый
increment()
🔧 Условия:
- Нельзя использовать сторонние библиотеки (только стандарт C++17+)
- Нельзя вручную управлять потоками (используйте
std::thread
, std::mutex
, `std::condition_variable`)- Нужно обеспечить корректный RAII (автоматическое завершение потоков при разрушении объекта)
🔍 Пример:
SafeCounter counter(1000); // сброс через 1000 мс
counter.increment(); // value = 1
std::this_thread::sleep_for(500ms);
counter.increment(); // value = 2, таймер сброса перезапускается
std::this_thread::sleep_for(1500ms);
std::cout << counter.get(); // value = 0
💡 Подсказка:
Нужно реализовать "отложенный сброс", который перезапускается при каждом increment(). Используйте фоновый поток и condition_variable.
✅ Ожидаемое решение (упрощённый скелет):
#include <iostream>
#include <thread>
#include <atomic>
#include <mutex>
#include <condition_variable>
#include <chrono>
class SafeCounter {
public:
SafeCounter(int timeout_ms) : timeout(timeout_ms), value(0), stop(false) {
worker = std::thread([this] { this->watch(); });
}
~SafeCounter() {
{
std::lock_guard<std::mutex> lock(mtx);
stop = true;
}
cv.notify_all();
worker.join();
}
void increment() {
{
std::lock_guard<std::mutex> lock(mtx);
++value;
last_action = std::chrono::steady_clock::now();
}
cv.notify_all();
}
int get() const {
return value.load();
}
private:
void watch() {
std::unique_lock<std::mutex> lock(mtx);
while (!stop) {
cv.wait_for(lock, timeout, [this] {
return stop || std::chrono::steady_clock::now() - last_action >= timeout;
});
if (stop) break;
if (std::chrono::steady_clock::now() - last_action >= timeout) {
value = 0;
}
}
}
std::chrono::milliseconds timeout;
std::chrono::steady_clock::time_point last_action = std::chrono::steady_clock::now();
std::atomic<int> value;
std::mutex mtx;
std::condition_variable cv;
std::thread worker;
bool stop;
};
🎯 Отличная задача, чтобы потренировать:
понимание RAII
работу с condition_variable
атомарные переменные
и правильную остановку фоновых потоков
Можешь доработать под конкретные кейсы — например, логирование событий сброса или работу с несколькими счётчиками.
❤17👍5🔥2
Когда впервые сталкиваешься с type_traits в C++, они кажутся чем-то из мира метапрограммирования для продвинутых Сеньоров.
Но чем глубже разбираешься в плюсах, тем чаще ловишь себя на мысли: «А как вообще этот кусок кода собирается?», «Почему одна перегрузка сработала, а другая нет?», «Как можно элегантно отфильтровать типы на этапе компиляции?»
И тут внезапно узнаешь, что именно type_traits — это та самая опора, с которой можно решать такие задачи красиво и без хаков. Особенно если писать универсальный код, библиотеки, или хочешь просто понимать, как работает стандартная библиотека.
Сегодня прочитал пост Вани Ходора, бэкенд-разработчика из Яндекс Лавки, который как раз сделал гайд по type_traits — не про то, *что* они делают, а за что их можно полюбить. Не учебник, не документация, а маленькое путешествие по любимым трейтам с примерами, идеями и попытками реализации.
Будет полезно, даже если вы давно знакомы с шаблонами — с другой стороны посмотрите на знакомые конструкции, а может, и вдохновитесь на свой маленький эксперимент в шаблонном коде.
Но чем глубже разбираешься в плюсах, тем чаще ловишь себя на мысли: «А как вообще этот кусок кода собирается?», «Почему одна перегрузка сработала, а другая нет?», «Как можно элегантно отфильтровать типы на этапе компиляции?»
И тут внезапно узнаешь, что именно type_traits — это та самая опора, с которой можно решать такие задачи красиво и без хаков. Особенно если писать универсальный код, библиотеки, или хочешь просто понимать, как работает стандартная библиотека.
Сегодня прочитал пост Вани Ходора, бэкенд-разработчика из Яндекс Лавки, который как раз сделал гайд по type_traits — не про то, *что* они делают, а за что их можно полюбить. Не учебник, не документация, а маленькое путешествие по любимым трейтам с примерами, идеями и попытками реализации.
Будет полезно, даже если вы давно знакомы с шаблонами — с другой стороны посмотрите на знакомые конструкции, а может, и вдохновитесь на свой маленький эксперимент в шаблонном коде.
Telegram
this->notes.
#cpp
Сегодня подпивасный (если вы зожник, то пиво нулёвочка) пост, ведь в субботу надо отдыхать от прошедшей недели.
Микрогайд по type traits.
https://telegra.ph/Mikrogajd-po-type-traits-06-14
Сегодня подпивасный (если вы зожник, то пиво нулёвочка) пост, ведь в субботу надо отдыхать от прошедшей недели.
Микрогайд по type traits.
https://telegra.ph/Mikrogajd-po-type-traits-06-14
❤🔥6🔥4❤2🥰1🎉1
🧠 Продвинутая задача на C++ — Оптимальный доступ к матрице с кешированием
Задача:
У вас есть матрица
Нужно реализовать класс
- Быстрый доступ
- Локальность данных при сканировании по строкам и по столбцам
- При этом: сравнить производительность строкового и столбцового прохода
Вопрос:
Почему сканирование по строкам быстрее, чем по столбцам, даже если данные одинаковые?
---
Разбор:
Ответ:
Память в C++ выделяется линейно.
В
То есть
Когда мы сканируем по строкам, процессор использует кеш строк памяти эффективно.
Когда же мы сканируем по столбцам, мы прыгаем по памяти через
---
🧠 Вывод:
- Даже при правильном коде, порядок доступа к памяти критически важен
- Понимание устройства кеша CPU помогает писать реально быстрый код
- Такие задачи полезны для подготовки к системному программированию, оптимизации и собеседованиям
#cpp #performance #cache #memory #optimize
Задача:
У вас есть матрица
N x M
, хранящаяся в виде одномерного массива (row-major). Нужно реализовать класс
Matrix
, поддерживающий:- Быстрый доступ
get(i, j)
и set(i, j, value)
- Локальность данных при сканировании по строкам и по столбцам
- При этом: сравнить производительность строкового и столбцового прохода
int main() {
Matrix mat(10000, 10000);
// Заполнить матрицу числами
for (int i = 0; i < 10000; ++i)
for (int j = 0; j < 10000; ++j)
mat.set(i, j, i + j);
// Сумма по строкам
long long row_sum = 0;
for (int i = 0; i < 10000; ++i)
for (int j = 0; j < 10000; ++j)
row_sum += mat.get(i, j);
// Сумма по столбцам
long long col_sum = 0;
for (int j = 0; j < 10000; ++j)
for (int i = 0; i < 10000; ++i)
col_sum += mat.get(i, j);
}
Вопрос:
Почему сканирование по строкам быстрее, чем по столбцам, даже если данные одинаковые?
---
Разбор:
class Matrix {
private:
int rows, cols;
std::vector<int> data;
public:
Matrix(int r, int c) : rows(r), cols(c), data(r * c) {}
int get(int i, int j) const {
return data[i * cols + j];
}
void set(int i, int j, int value) {
data[i * cols + j] = value;
}
};
Ответ:
Память в C++ выделяется линейно.
В
std::vector<int> data
, элементы строки хранятся подряд в памяти. То есть
mat[0][0], mat[0][1], ..., mat[0][9999]
идут подряд.Когда мы сканируем по строкам, процессор использует кеш строк памяти эффективно.
Когда же мы сканируем по столбцам, мы прыгаем по памяти через
cols
шагов → кеш не успевает подгружать нужные блоки → больше cache misses → медленнее.---
🧠 Вывод:
- Даже при правильном коде, порядок доступа к памяти критически важен
- Понимание устройства кеша CPU помогает писать реально быстрый код
- Такие задачи полезны для подготовки к системному программированию, оптимизации и собеседованиям
#cpp #performance #cache #memory #optimize
❤12🔥4👍1🥰1
📘 Шпаргалки по SQL — база и оконные функции в одном месте
Хочешь быстро освежить SQL или подготовиться к собеседованию?
Нашёл отличные PDF-шпаргалки, которые удобно сохранить себе и использовать как в работе, так и в учёбе.
🔹 Базовый SQL:
Каждая команда объясняется не только по синтаксису, но и по сути — когда и зачем использовать.
1️⃣
2️⃣ Все типы
3️⃣
4️⃣ Агрегатные функции и фильтрация
Основы SQL
🔹 Оконные функции (window functions):
Это уже продвинутый уровень, особенно полезный для аналитиков и дата-инженеров.
1️⃣
2️⃣
3️⃣ Работа с рамками окна:
4️⃣ Сортировка внутри окна и реальные примеры запросов
🔗 Оконные функции в SQL
📌 Когда только начинал учить SQL, не хватало понятных материалов. А тут — всё чётко, наглядно и по делу. За это авторам — уважение 🙌
▶️ Сохраняйте себе, чтобы не потерять
Хочешь быстро освежить SQL или подготовиться к собеседованию?
Нашёл отличные PDF-шпаргалки, которые удобно сохранить себе и использовать как в работе, так и в учёбе.
🔹 Базовый SQL:
Каждая команда объясняется не только по синтаксису, но и по сути — когда и зачем использовать.
1️⃣
SELECT
, WHERE
, GROUP BY
, HAVING
2️⃣ Все типы
JOIN
с примерами 3️⃣
CASE WHEN
, UNION
и подзапросы 4️⃣ Агрегатные функции и фильтрация
Основы SQL
🔹 Оконные функции (window functions):
Это уже продвинутый уровень, особенно полезный для аналитиков и дата-инженеров.
1️⃣
ROW_NUMBER
, RANK
, DENSE_RANK
, NTILE
2️⃣
LAG
, LEAD
, FIRST_VALUE
, LAST_VALUE
3️⃣ Работа с рамками окна:
ROWS BETWEEN
, RANGE
, GROUPS
4️⃣ Сортировка внутри окна и реальные примеры запросов
📌 Когда только начинал учить SQL, не хватало понятных материалов. А тут — всё чётко, наглядно и по делу. За это авторам — уважение 🙌
Please open Telegram to view this post
VIEW IN TELEGRAM
👍9🔥4❤3
💻 Amazon выпустила Kiro — новый ИИ-ассистент для разработчиков на базе VS Code. Компания создала собственный форк популярного редактора, дополнив его автономными нейросетевыми агентами. Они умеют не только проверять код в чате, но и самостоятельно исправлять ошибки, писать тесты и документацию.
Редактор обладает функцией Kiro Specs, позволяющей задавать ИИ конкретные задачи и получать отчеты об их выполнении. Пока сервис бесплатный, но Amazon уже анонсировал платные тарифы до $39 в месяц. Kiro встает в один ряд с Cursor и Windsurf, усиливая конкуренцию на рынке умных редакторов кода.
🔗 Ссылка - *клик*
@cpluspluc
Редактор обладает функцией Kiro Specs, позволяющей задавать ИИ конкретные задачи и получать отчеты об их выполнении. Пока сервис бесплатный, но Amazon уже анонсировал платные тарифы до $39 в месяц. Kiro встает в один ряд с Cursor и Windsurf, усиливая конкуренцию на рынке умных редакторов кода.
🔗 Ссылка - *клик*
@cpluspluc
❤14👍3🔥3😱2🙊1
Технологии, железо и роботы на Yandex Robotics Day уже 16 августа!
На складах Маркета, Леманы Про, Перекрестка, Лавки и других компаний работают роботы Яндекса, которые помогают быстро сканировать товары, собирать посылки и перемещать заказы. Чтобы все функционировало быстро и точно, специалисты Яндекс Роботикс постоянно улучшают их.
16 августа в Москве пройдет митап, на котором они расскажут, как именно это делают:
— Серёжа Стариков выступит с докладом про коммуникационную платформу Yandex Robotics и ее применение в Yandex RMS
— Дима Мовчан объяснит, как команда создает умную роборуку с помощью imitation learning и RL
— Максим Пшибло расскажет, как с помощью Yandex Robotics Management System управлять несколькими роботами и какие алгоритмы необходимы этой системе
Кроме докладов в программе презентация нового робота, выставка тех, которые уже вовсю работают на складах, нетворкинг и неформальное афтепати с экспертами Яндекс Роботикс.
Регистрируйтесь и зовите коллег!
На складах Маркета, Леманы Про, Перекрестка, Лавки и других компаний работают роботы Яндекса, которые помогают быстро сканировать товары, собирать посылки и перемещать заказы. Чтобы все функционировало быстро и точно, специалисты Яндекс Роботикс постоянно улучшают их.
16 августа в Москве пройдет митап, на котором они расскажут, как именно это делают:
— Серёжа Стариков выступит с докладом про коммуникационную платформу Yandex Robotics и ее применение в Yandex RMS
— Дима Мовчан объяснит, как команда создает умную роборуку с помощью imitation learning и RL
— Максим Пшибло расскажет, как с помощью Yandex Robotics Management System управлять несколькими роботами и какие алгоритмы необходимы этой системе
Кроме докладов в программе презентация нового робота, выставка тех, которые уже вовсю работают на складах, нетворкинг и неформальное афтепати с экспертами Яндекс Роботикс.
Регистрируйтесь и зовите коллег!
🔧 cmake-init — генератор CMake-проектов, который избавляет от рутинной настройки. Этот инструмент создаёт готовую структуру с поддержкой FetchContent, разделением целей для разработчиков и пользователей, а также интегрирует современные практики CMake.
Проект особенно полезен тем, кто устал править шаблоны вручную: он сразу настраивает линтинг, тестирование и документацию через Doxygen. Поддерживает Conan и vcpkg, а также предлагает удобные пресеты для CLion и VSCode.
🤖 GitHub
@cpluspluc
Проект особенно полезен тем, кто устал править шаблоны вручную: он сразу настраивает линтинг, тестирование и документацию через Doxygen. Поддерживает Conan и vcpkg, а также предлагает удобные пресеты для CLion и VSCode.
🤖 GitHub
@cpluspluc
❤8🔥7👍4
⚙️ Vulkan-Hpp — современные C++-биндинги для Vulkan API, разработанные Khronos Group. Этот заголовочный файл заменяет громоздкий C-интерфейс типобезопасными классами, шаблонами и RAII-обёртками, сохраняя нулевые накладные расходы.
У инструмента есть возможность выбора между исключениями и возвратом кодов ошибок через макросы. Для управления ресурсами доступны как unique-хэндлы, так и полноценные RAII-классы в пространстве имён vk::raii. Проект автоматически генерируется из спецификации Vulkan и предлагает:
— Нативные C++-конструкторы для структур Vulkan
— Безопасную работу с перечислениями и битовыми флагами
— Интеграцию с STL-контейнерами через ArrayProxy
— Поддержку цепочек структур через шаблон StructureChain
🤖 GitHub
@cpluspluc
У инструмента есть возможность выбора между исключениями и возвратом кодов ошибок через макросы. Для управления ресурсами доступны как unique-хэндлы, так и полноценные RAII-классы в пространстве имён vk::raii. Проект автоматически генерируется из спецификации Vulkan и предлагает:
— Нативные C++-конструкторы для структур Vulkan
— Безопасную работу с перечислениями и битовыми флагами
— Интеграцию с STL-контейнерами через ArrayProxy
— Поддержку цепочек структур через шаблон StructureChain
🤖 GitHub
@cpluspluc
❤11👍6🔥5
This media is not supported in your browser
VIEW IN TELEGRAM
2 августа Яндекс проведет C++ Zero Cost Conf
Практикующие эксперты из Яндекса, VK, Ozon и других компаний выступят с докладами и представят реальные кейсы с измеримыми метриками.
Программа выступлений в Москве:
🔹Василий Рамаданов, старший инженер-программист Yadro, разберёт поведение std::simd на x86 и ARM;
🔹 Антон Полухин, руководитель группы разработки общих компонентов Техплатформы Городских сервисов Яндекса, расскажет, как использовать модули в больших существующих проектах с поддержкой старых стандартов;
🔹 Сергей Слотин, C++-эксперт и автор «Algorithms for Modern Hardware» выступит на тему «Performance Puzzlers»: будем изучать особенности работы процессоров и компиляторов.
Остальные доклады с разбивкой по городам — на сайте конференции.
Участников офлайна ждёт C++ код-гольф: решение задачи с минимальным числом символов. В Москве дополнительно пройдет воркшоп по непрерывному профилированию Perforator и Case Lab по надёжности микросервисов с решением задач.
Ивент пройдет в трёх городах — Москве, Белграде (онлайн/офлайн) и Санкт-Петербурге (только офлайн). Зарегистрироваться можно здесь
Практикующие эксперты из Яндекса, VK, Ozon и других компаний выступят с докладами и представят реальные кейсы с измеримыми метриками.
Программа выступлений в Москве:
🔹Василий Рамаданов, старший инженер-программист Yadro, разберёт поведение std::simd на x86 и ARM;
🔹 Антон Полухин, руководитель группы разработки общих компонентов Техплатформы Городских сервисов Яндекса, расскажет, как использовать модули в больших существующих проектах с поддержкой старых стандартов;
🔹 Сергей Слотин, C++-эксперт и автор «Algorithms for Modern Hardware» выступит на тему «Performance Puzzlers»: будем изучать особенности работы процессоров и компиляторов.
Остальные доклады с разбивкой по городам — на сайте конференции.
Участников офлайна ждёт C++ код-гольф: решение задачи с минимальным числом символов. В Москве дополнительно пройдет воркшоп по непрерывному профилированию Perforator и Case Lab по надёжности микросервисов с решением задач.
Ивент пройдет в трёх городах — Москве, Белграде (онлайн/офлайн) и Санкт-Петербурге (только офлайн). Зарегистрироваться можно здесь
❤6🔥3🥰2
⛓️ CUDA Core Compute Libraries (CCCL) — единый репозиторий от NVIDIA, объединяющий три ключевые библиотеки для работы с CUDA: Thrust, CUB и libcudacxx. Проект упрощает разработку высокопроизводительных вычислений, предлагая переносимые абстракции для разных GPU-архитектур.
Библиотеки поддерживают атомарные операции через cuda::atomic_ref и интеграцию с CMake. CCCL можно использовать как с официальным CUDA Toolkit, так и отдельно через GitHub или Conda, что удобно для экспериментов с новыми функциями до их выхода в стабильных версиях CUDA.
🤖 GitHub
@cpluspluc
Библиотеки поддерживают атомарные операции через cuda::atomic_ref и интеграцию с CMake. CCCL можно использовать как с официальным CUDA Toolkit, так и отдельно через GitHub или Conda, что удобно для экспериментов с новыми функциями до их выхода в стабильных версиях CUDA.
🤖 GitHub
@cpluspluc
🔥11👍4❤3🥰1🤔1