Requirements#

This section includes requirements of using FlagTree, including supported platforms and dependencies. FlagTree can be successfully installed and run only when all requirements are met.

Supported hardware platforms#

The following list includes the supported hardware platforms:

  • AIPU

  • Cambricon

  • Enflame

  • Huawei Ascend

  • Hygon

  • Iluvatar

  • MetaX

  • Mthreads

  • NVIDIA

  • AMD

  • klx

  • Tsingmicro

  • Sunrise

System software requirements#

You may need the following system softwares:

  • Ubuntu

  • Python 3.x

Backends, Triton versions, and branches#

Each backend is based on different versions of Triton, and therefore resides in different protected branches. All these protected branches have equal status. CI/CD runners are provisioned for every backend listed in the table.

Branch

Vendor

Backend

Triton
version

main

NVIDIA
AMD
x86_64 cpu
ILUVATAR(天数智芯)
Moore Threads(摩尔线程)
KLX
MetaX(沐曦股份)
HYGON(海光信息)

nvidia
amd
triton-shared
iluvatar
mthreads
xpu
metax
hcu

3.1
3.1
3.1
3.1
3.1
3.0
3.0
3.1

triton_v3.2.x

NVIDIA
AMD
Huawei Ascend(华为昇腾)
Moore Threads(摩尔线程)
Cambricon(寒武纪)

nvidia
amd
ascend
mthreads
cambricon

3.2

triton_v3.3.x

NVIDIA
AMD
x86_64 cpu
ARM China(安谋科技)
Tsingmicro(清微智能)
Enflame(燧原)

nvidia
amd
triton-shared
aipu
tsingmicro
enflame

3.3

triton_v3.4.x

NVIDIA
AMD
Sunrise(曦望芯科)

nvidia
amd
sunrise

3.4

triton_v3.5.x

NVIDIA
AMD
Enflame(燧原)

nvidia
amd
enflame

3.5

triton_v3.6.x

NVIDIA
AMD
Enflame(燧原)
HYGON(海光信息)
Moore Threads(摩尔线程)

nvidia
amd
enflame
hcu
mthreads

3.6

Dependencies#

  • System dependencies
    FlagTree is primarily tested on Ubuntu. We recommend using a Linux virtual machine or Docker container for installation. The following table lists the dependencies for Ubuntu.

    Dependency

    Description

    zlib1g

    The compression library runtime files. This is a widely used software library for data compression, commonly used by other packages (such as libxml2) to handle compressed data streams.

    zlib1g-dev

    The compression library development files. Contains the header files and static libraries required to compile and link programs that use the zlib compression library.

    libxml2

    The GNOME XML library runtime. Provides software libraries for parsing, manipulating, and generating XML data, and is used by many applications and dependencies.

    libxml2-dev

    The GNOME XML library development files. Includes header files and symbolic links necessary for developing software that uses libxml2 (for example, compiling XML-parsing programs).

  • Python dependencies
    The following table lists the Python dependencies. These dependencies are included in the requirements.txt file and will be automatically installed when using the pip install command.

    Dependency

    Description

    ninja

    A small build system with a focus on speed. It is often used as a backend for CMake to compile C/C++ code much faster than traditional Make.

    cmake

    A cross-platform tool for building, testing, and packaging software. It is used to control the software compilation process via configuration files.

    wheel

    A Python library that provides the bdist_wheel command for setuptools. It allows Python packages to be distributed in a built-package format (.whl), which is faster to install than source distributions.

    GitPython

    A Python library used to interact with Git repositories. It allows Python code to perform Git operations (like log, commit, diff) programmatically.

    pytest

    A mature full-featured Python testing framework. It is used for writing and running simple unit tests as well as complex functional tests.

    scipy

    A fundamental library for scientific computing and technical computing in Python. It builds on NumPy and provides modules for optimization, integration, interpolation, eigenvalue problems, algebra, and other tasks.

    filelock

    A platform-independent file-based lock for Python. It is used to synchronize access to a shared resource (like a file) between multiple Python processes or threads.

    nanobind

    A lightweight C++ library that exposes C++ types and functions to Python. It is used to create Python bindings for C++ code with minimal overhead (similar to pybind11, but faster).

Features on different branches#

FlagTree’s extension components are currently available on some backends:

Backend integrations#

The following backends have been integrated into FlagTree. For new vendors, you can refer to the following code links for your integrations: