Skip to content

InfiniTensor/InfiniRT

Repository files navigation

InfiniRT

InfiniRT is the runtime library of the InfiniCore project. It provides a stable runtime API for device management and memory operations across supported backends such as CPU and NVIDIA.

The recommended public entry is:

#include <infini/rt.h>

Build and Install

Configure, build, and install InfiniRT with CMake:

cmake -S . -B build -DCMAKE_INSTALL_PREFIX=/path/to/infini-rt-prefix
cmake --build build -j
cmake --install build

infini-rt-prefix means the installation prefix used by CMake. After installation, headers and libraries are placed under this prefix, for example:

/path/to/infini-rt-prefix/include
/path/to/infini-rt-prefix/lib

Build Options

Common options include:

-DWITH_CPU=ON
-DWITH_NVIDIA=ON
-DINFINI_RT_BUILD_TESTING=ON

Example CPU build:

cmake -S . -B build \
  -DCMAKE_INSTALL_PREFIX=/path/to/infini-rt-prefix \
  -DWITH_CPU=ON \
  -DINFINI_RT_BUILD_TESTING=ON
cmake --build build -j
ctest --test-dir build --output-on-failure
cmake --install build

Example NVIDIA build:

cmake -S . -B build \
  -DCMAKE_INSTALL_PREFIX=/path/to/infini-rt-prefix \
  -DWITH_NVIDIA=ON \
  -DINFINI_RT_BUILD_TESTING=ON
cmake --build build -j
ctest --test-dir build --output-on-failure
cmake --install build

Basic Usage

#include <cstddef>
#include <infini/rt.h>

int main() {
  infini::rt::SetDevice({infini::rt::Device::Type::kCpu, 0});

  constexpr std::size_t size = 1024;
  void* ptr = nullptr;

  infini::rt::Malloc(&ptr, size);
  infini::rt::Memset(ptr, 0, size);
  infini::rt::Free(ptr);

  return 0;
}

For NVIDIA:

infini::rt::SetDevice({infini::rt::Device::Type::kNvidia, 0});

Using Installed InfiniRT From Another Project

Downstream projects should consume the installed headers and libraries instead of depending on the InfiniRT source tree.

Typical include and library paths are:

/path/to/infini-rt-prefix/include
/path/to/infini-rt-prefix/lib

A simple compile command may look like:

c++ main.cc \
  -I/path/to/infini-rt-prefix/include \
  -L/path/to/infini-rt-prefix/lib \
  -linfinirt

At runtime, make sure the dynamic linker can find libinfinirt.so, for example:

export LD_LIBRARY_PATH=/path/to/infini-rt-prefix/lib:$LD_LIBRARY_PATH

Tests

Enable C++ tests with:

-DINFINI_RT_BUILD_TESTING=ON

Then run:

ctest --test-dir build --output-on-failure

Formatting

C++ code should be formatted with clang-format.

Python scripts should be checked and formatted with Ruff:

ruff format --check .
ruff check .

Contributing

Please follow the repository's CONTRIBUTING.md.

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors