Привет!
Привет! Я открыл PR который добавляет реализацию срезов и изменяет API индексации тензоров. Он вносит существенные изменения в движок обработки тензоров и затрагивает больше 150 файлов. Я начинал реализацию вручную потом использовал coding агентов. Буду благодарен сообществу за помощь с code review, комментарии и предложения. Также есть возможность посмотреть какой С++ код сегодня генерирую агенты с использованием моделей Qwen Coder 3.5, GLM-5.1, Grok Code fast 1. Основные изменения: Изменено внутреннее представление тензоров для поддержки срезов: - Добавлено смещение(offset) для буфера данных - Добавлены смещения по размерностям(strides) API индексации тензоров: - Тип Slice для гибкого слайсинга с параметрами начала, конца и шага - Тип Index для целочисленной индексации (сокращение размерности) - Поддержка Ellipsis и None для продвинутых паттернов индексации - Синтаксис, совместимый с NumPy и PyTorch: tensor[1:5], tensor[::2], tensor[:, 1] Операции сбора (gather) для копирования данных с учётом срезов: - SIMD ядра и шейдеры для Vulkan - Поддержка отрицательных индексов для обоих бэкендов GEMM API вместо matmul: - BLAS совместимый API для CPU и GPU - Добавлены параметры alpha и beta Python-привязки: - Полная поддержка срезов через getitem и setitem - Автоматическое создание представлений и управление непрерывностью - Многомерная индексация с правильной обработкой форм Пример кода: import adept as ad # Создание тензора t = ad.Tensor([1, 2, 3, 4, 5]) # Базовый срез sliced = t[1:4] # Многомерная индексация matrix = ad.Tensor([[1, 2, 3], [4, 5, 6], [7, 8, 9]]) row = matrix[1] col = matrix[:, 1]