🧠 Задача: Реализация `TypeList` с поддержкой операций на этапе компиляции
📌 Описание
Реализуйте шаблонный класс
1. Получение длины списка (`length`)
2. Получение типа по индексу (`at<N>`)
3. Добавление типа в начало списка (`push_front<T>`)
4. Удаление первого типа (`pop_front`)
5. Проверка наличия типа в списке (`contains<T>`)
6. Фильтрация по условию (например, только целочисленные типы) (`filter<Predicate>`)
Всё это должно работать на этапе компиляции, без использования
🧩 Пример использования
🛠 Требования к реализации
Используйте только возможности шаблонов и constexpr.
Не используйте std::tuple, std::array, if constexpr (если хотите усложнить — можно).
Предпочтительно использование C++17 или выше.
Код должен компилироваться и проходить все static_assert.
🧪 Бонусное задание
Реализуйте print_types() — функцию, которая выводит все типы из списка в std::cout (можно использовать typeid, PRETTY_FUNCTION или другие хаки).
@cpluspluc
📌 Описание
Реализуйте шаблонный класс
TypeList
, который представляет собой список типов на этапе компиляции (compile-time type list). Он должен поддерживать следующие операции:1. Получение длины списка (`length`)
2. Получение типа по индексу (`at<N>`)
3. Добавление типа в начало списка (`push_front<T>`)
4. Удаление первого типа (`pop_front`)
5. Проверка наличия типа в списке (`contains<T>`)
6. Фильтрация по условию (например, только целочисленные типы) (`filter<Predicate>`)
Всё это должно работать на этапе компиляции, без использования
std::tuple
или других runtime-контейнеров.🧩 Пример использования
#include <type_traits>
#include <iostream>
// Пример предиката
template<typename T>
struct is_integral : std::is_integral<T> {};
int main() {
using MyList = TypeList<int, char, float, double, short>;
static_assert(MyList::length == 5);
static_assert(std::is_same_v<MyList::at<0>, int>);
static_assert(std::is_same_v<MyList::at<2>, float>);
using WithBool = MyList::push_front<bool>;
static_assert(WithBool::length == 6);
static_assert(std::is_same_v<WithBool::at<0>, bool>);
using Popped = WithBool::pop_front;
static_assert(std::is_same_v<Popped, MyList>);
static_assert(MyList::contains<int>);
static_assert(!MyList::contains<bool>);
using OnlyIntegral = MyList::filter<is_integral>;
static_assert(std::is_same_v<OnlyIntegral, TypeList<int, char, short>>);
return 0;
}
🛠 Требования к реализации
Используйте только возможности шаблонов и constexpr.
Не используйте std::tuple, std::array, if constexpr (если хотите усложнить — можно).
Предпочтительно использование C++17 или выше.
Код должен компилироваться и проходить все static_assert.
🧪 Бонусное задание
Реализуйте print_types() — функцию, которая выводит все типы из списка в std::cout (можно использовать typeid, PRETTY_FUNCTION или другие хаки).
@cpluspluc
❤8🔥4👍2
🎬 Blender 4.5 LTS — главное обновление года для 3D-художников
Новая долгосрочная версия популярного графического пакета принесла ключевые улучшения: полную поддержку Vulkan в EEVEE, ускоренную загрузку текстур и революционный инструмент Point Cloud для работы с облаками точек.
Особого внимания заслуживает обновлённый Grease Pencil с экспортом анимированных SVG и интеграцией с композитингом. Рендеринг теперь на 40% быстрее благодаря многопоточной компиляции шейдеров.
🔗 Ссылка - *клик*
@cpluspluc
Новая долгосрочная версия популярного графического пакета принесла ключевые улучшения: полную поддержку Vulkan в EEVEE, ускоренную загрузку текстур и революционный инструмент Point Cloud для работы с облаками точек.
Особого внимания заслуживает обновлённый Grease Pencil с экспортом анимированных SVG и интеграцией с композитингом. Рендеринг теперь на 40% быстрее благодаря многопоточной компиляции шейдеров.
🔗 Ссылка - *клик*
@cpluspluc
👍6❤5🔥5
Forwarded from Machinelearning
В основе технологического стека - семейство моделей Codestral, с обновленной моделью Codestral 25.08.
Эта версия показала измеримые улучшения, подтвержденные на реальных кодовых базах: на 30% увеличилось количество принятых автодополнений, на 10% вырос объем сохраняемого после подсказки кода, а число генераций, когда модель производит слишком длинный и некорректный код, сократилось на 50%.
В режиме чата модель также стала лучше: ее способность следовать инструкциям выросла на 5% по метрике IF Eval v8, а общие возможности в программировании улучшились в среднем на 5% по тесту MultiplE.
За это отвечает Codestral Embed, модель для создания векторных представлений, специально спроектированная для кода, а не для обычного текста. По заявлениям Mistral, она превосходит эмбеддинг-решения от OpenAI и Cohere в реальных задачах по извлечению кода.
Ключевое преимущество - возможность настройки размерности эмбеддингов (до 256 измерений с квантованием до INT8), что позволяет балансировать между качеством поиска и хранением данных, сохраняя высокую производительность.
Они реализованные через Devstral - агентскую систему на базе фреймворка OpenHands. Система ориентирована на задачи рефакторинга, генерации тестов и создание pull-реквестов.
На бенче SWE-Bench Verified модель Devstral Small 1.1 выбивает 53.6%, а Devstral Medium - 61.6%, значительно опережая Claude 3.5 и GPT-4.1-mini.
Devstral Small (24 млрд параметров) может работать на одной Nvidia RTX 4090 или Mac с 32 ГБ ОЗУ, что идеально для локальных или изолированных сред.
Все эти возможности объединяются в плагине Mistral Code для IDE от JetBrains и VS Code. Он автодополняет код с помощью Codestral 25.08 и автоматизирует рутину: написание коммитов или docstring’ов через Devstral, и семантический поиск на базе Codestral Embed.
Плагин учитывает контекст из
Git diffs
, истории терминала и инструментов статического анализа.Для корпоративных клиентов предусмотрено развертывание в облаке, VPC или полностью on-prem, а также интеграция с SSO, ведение логов аудита и отсутствие обязательной телеметрии.
@ai_machinelearning_big_data
#news #ai #ml
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤2👍2🔥1
Forwarded from Machinelearning
Попросите любую LLM написать CUDA-код, и скорее всего, вы получите что-то, что либо не компилируется, либо работает мучительно медленно. Причина проста: качественного CUDA-кода в обучающих данных моделей почти не было.
Чтобы исправить это досадное упущение, Deep Reinforce AI создали систему CUDA-L1, которая основана на трехэтапном пайплайне: сначала supervised-обучение для освоения основ, затем self-supervised для практики и, наконец, контрастное обучение с подкреплением, чтобы было все максимально быстро.
Для этого существующий код был аугментирован - создавались его вариации, чтобы повысить насмотренность модели.
Обучаемой модели показывали несколько реализаций CUDA-ядер вместе с их показателями ускорения, например: «kernel_v1 дает ускорение 1.2x», «kernel_v2 — 2.8x», а «kernel_v3 — 1.5x». Затем задали 3 вопроса:
Таким образом, модель не гадает вслепую, а учится на конкретных примерах, анализируя причины разницы в производительности.
После обучения выяснилось, что более 30% сгенерированных реализаций пытались сжульничать - создавали дополнительные CUDA-потоки, которые выполнялись асинхронно.
Поскольку бенчмарк KernelBench отслеживал время только на основном потоке, код выглядел быстрее, чем был на самом деле, показывая фиктивное ускорение в 18 раз.
Другие уловки состояли в манипуляции гиперпараметрами задачи (уменьшение batch_size или размерностей) и кеширование результатов вычислений.
Во-первых, в качестве "адвоката дьявола" взяли adversarial-чекер на базе DeepSeek-R1, который анализировал код на предмет эксплойтов с точностью обнаружения более 60%.
Во-вторых, собрали базу данных из более чем 500 уникальных паттернов взлома, это повысило точность обнаружения на 25%.
И в-третьих, применили математическое сглаживание и нормализацию наград, где любое подозрительное ускорение (от 1.5x для простых операций) дополнительно проверялось.
Система успешно сгенерировала рабочий код для 249 из 250 задач, причем в 240 случаях код оказался быстрее базовой реализации.
Среднее ускорение по всем задачам составило 3.12 раза, максимальное - аж 120 раз. Медианное ускорение (50-й перцентиль) составило 1.42x, а 75-й перцентиль — 2.25x.
Производительность по уровням сложности задач распределилась следующим образом: на простых операциях среднее ускорение составило 2.78x, на последовательностях операторов - 3.55x, а на сложных задачах вроде полных слоев трансформера - 2.96x.
Код, оптимизированный на NVIDIA A100, был протестирован на других GPU. Результаты показали, что найденные паттерны оптимизации фундаментальны и работают на разных архитектурах.
Среднее ускорение на H100 составило 2.39x (успешных ускорений 227 из 250), на L40 — 3.12x (228/248), а на потребительской RTX 3090 — 2.50x (213/242).
@ai_machinelearning_big_data
#AI #ML #CUDA #DeepReinforce #ContrastiveRL
Please open Telegram to view this post
VIEW IN TELEGRAM
Please open Telegram to view this post
VIEW IN TELEGRAM
❤6🔥4👍3