Repolode
NVIDIA

NVIDIA/MatX

Header-only библиотека на C++20 для тензорных выражений в стиле NumPy, работающих на GPU NVIDIA или многопоточных CPU, с поддержкой слияния ядер.

Open source альтернатива:NumPyCuPy

Звёзды
1,451
Форки
133
Открытые issues
22
Последний коммит
12 часов назад

Что это?

MatX — библиотека для численных вычислений на C++20. Она позволяет писать код для массивов в стиле, близком к NumPy, и поддерживает broadcasting, срезы, редукции, линейную алгебру, FFT, решатели и генерацию случайных чисел. Выражения вычисляются лениво — только при запуске через выбранный исполнитель, например CUDA executor для GPU NVIDIA, JIT executor или многопоточный исполнитель на CPU.

При включённом MathDx CUDA JIT executor может объединять совместимые выражения в одно сгенерированное ядро, в том числе поддерживаемые операции матричного умножения, FFT, решателей и генерации случайных чисел. Это избавляет от промежуточных временных массивов и дополнительных запусков ядер. Проект распространяется только в виде заголовочных файлов; для сборки с поддержкой GPU требуются toolchain с поддержкой C++20 и CUDA Toolkit. Поддерживается Linux, для Windows доступна alpha-версия.

При выполнении на CPU операции FFT, BLAS и LAPACK можно направлять в оптимизированные CPU-библиотеки, например NVPL, FFTW, OpenBLAS и BLIS, если соответствующие параметры включены во время сборки.

Ключевые возможности

  • 01Массивы в стиле NumPy с произвольным рангом, представлениями, срезами и broadcasting.
  • 02Ленивые поэлементные выражения, выполняемые через взаимозаменяемые исполнители для GPU или CPU.
  • 03JIT-слияние ядер для поддерживаемых операций FFT, BLAS, решателей и генерации случайных чисел.
  • 04Оптимизированное использование библиотек CUDA и CPU-библиотек, включая NVPL, FFTW, OpenBLAS и BLIS.
  • 05Интеграция в виде заголовочной библиотеки, сборка с CMake и пакеты Conan.

Сценарии использования

  • Перенос численного кода в стиле NumPy из Python на C++ с сохранением высокой производительности на GPU.
  • Создание конвейеров обработки сигналов, объединяющих FFT и поэлементные вычисления на GPU NVIDIA.
  • Выполнение пакетных операций линейной алгебры или вычислений для оценки опционов на GPU либо многопоточных CPU.
  • Прототипирование численных ядер без необходимости вручную настраивать низкоуровневую инфраструктуру CUDA.

Быстрый старт

  1. 1

    Добавьте репозиторий в проект CMake и подключите его интерфейсную цель

    add_subdirectory(path/to/MatX)
  2. 2

    Подключите API в исходном файле

    #include <matx.h>
  3. 3

    Соберите примеры и тесты MatX локально

    cmake -S . -B build -DMATX_BUILD_EXAMPLES=ON -DMATX_BUILD_TESTS=ON
  4. 4

    Скомпилируйте проект и запустите набор тестов

    cmake --build build -j

Что важно знать

  • Для исполнителя CUDA требуются GPU NVIDIA; также поддерживается выполнение на CPU.
  • Слияние JIT-ядер — экспериментальная функция; для неё нужна опция -DMATX_EN_MATHDX=ON и поддерживаемая форма или операция.
  • Некоторые редукции и преобразования на хосте по-прежнему выполняются в одном потоке.

В подборках

Темы

Частые вопросы

Что такое MatX?
Header-only библиотека на C++20 для тензорных выражений в стиле NumPy, работающих на GPU NVIDIA или многопоточных CPU, с поддержкой слияния ядер. MatX — библиотека для численных вычислений на C++20. Она позволяет писать код для массивов в стиле, близком к NumPy, и поддерживает broadcasting, срезы, редукции, линейную алгебру, FFT, решатели и генерацию случайных чисел. Выражения вычисляются лениво — только при запуске через выбранный исполнитель, например CUDA executor для GPU NVIDIA, JIT executor или многопоточный исполнитель на CPU.
MatX можно использовать бесплатно? Какая у него лицензия?
MatX распространяется с открытым исходным кодом под лицензией BSD-3-Clause. Перед использованием в коммерческих продуктах проверьте условия лицензии.
MatX всё ещё поддерживается?
Активно поддерживается. Последний коммит в MatX — 5 нояб. 2026 г..
Для чего можно использовать MatX?
Перенос численного кода в стиле NumPy из Python на C++ с сохранением высокой производительности на GPU. Создание конвейеров обработки сигналов, объединяющих FFT и поэлементные вычисления на GPU NVIDIA. Выполнение пакетных операций линейной алгебры или вычислений для оценки опционов на GPU либо многопоточных CPU. Прототипирование численных ядер без необходимости вручную настраивать низкоуровневую инфраструктуру CUDA.
Как установить MatX?
Добавьте репозиторий в проект CMake и подключите его интерфейсную цель: add_subdirectory(path/to/MatX) Подключите API в исходном файле: #include <matx.h> Соберите примеры и тесты MatX локально: cmake -S . -B build -DMATX_BUILD_EXAMPLES=ON -DMATX_BUILD_TESTS=ON Скомпилируйте проект и запустите набор тестов: cmake --build build -j
Где скачать MatX?
Исходный код и инструкции по установке — на GitHub: https://github.com/NVIDIA/MatX

Описание создано ИИ на основе README проекта. Статистика GitHub обновляется ежедневно.

Похожие проекты

Header-only библиотека C++ с ускорением на CUDA и Python-обёртками для переиспользуемых примитивов машинного обучения, линейной алгебры и информационного поиска на GPU NVIDIA.

1,1 тыс.+3 за неделю256CudaApache-2.0Активно поддерживаетсяОбновлён 13 часов назад