Skip to content

Latest commit

 

History

History
180 lines (128 loc) · 5.52 KB

README.md

File metadata and controls

180 lines (128 loc) · 5.52 KB

InfiniCore

Doc CI license GitHub repo size GitHub code size in bytes

GitHub Issues GitHub Pull Requests GitHub contributors GitHub commit activity

InfiniCore 是一个跨平台统一编程工具集,为不同芯片平台的功能(包括计算、运行时、通信等)提供统一 C 语言接口。目前支持的硬件和后端包括:

  • CPU;
  • CUDA
    • 英伟达 GPU;
    • 摩尔线程 GPU;
    • 天数智芯 GPU;
    • 沐曦 GPU;
    • 曙光 DCU;
  • 华为昇腾 NPU;
  • 寒武纪 MLU;
  • 昆仑芯 XPU;

配置和使用

一键安装

script/ 目录中提供了 install.py 安装脚本。使用方式如下:

cd InfiniCore

python scripts/install.py [XMAKE_CONFIG_FLAGS]

参数 XMAKE_CONFIG_FLAGS 是 xmake 构建配置,可配置下列可选项:

选项 功能 默认值
--omp=[y|n] 是否使用 OpenMP y
--cpu=[y|n] 是否编译 CPU 接口实现 y
--nv-gpu=[y|n] 是否编译英伟达 GPU 接口实现 n
--ascend-npu=[y|n] 是否编译昇腾 NPU 接口实现 n
--cambricon-mlu=[y|n] 是否编译寒武纪 MLU 接口实现 n
--metax-gpu=[y|n] 是否编译沐曦 GPU 接口实现 n
--moore-gpu=[y|n] 是否编译摩尔线程 GPU 接口实现 n
--sugon-dcu=[y|n] 是否编译曙光 DCU 接口实现 n
--kunlun-xpu=[y|n] 是否编译昆仑 XPU 接口实现 n
--ccl=[y|n] 是否编译 InfiniCCL 通信库接口实现 n

手动安装

  1. 项目配置

    • 查看当前配置

      xmake f -v
    • 配置 CPU(默认配置)

      xmake f -cv
    • 配置加速卡

      # 英伟达
      # 可以指定 CUDA 路径, 一般环境变量为 `CUDA_HOME` 或者 `CUDA_ROOT`
      xmake f --nv-gpu=true --cuda=$CUDA_HOME -cv
      
      # 寒武纪
      xmake f --cambricon-mlu=true -cv
      
      # 华为昇腾
      xmake f --ascend-npu=true -cv
  2. 编译安装

    默认安装路径为 $HOME/.infini

    xmake build && xmake install
  3. 设置环境变量

    按输出提示设置 INFINI_ROOTLD_LIBRARY_PATH 环境变量。

运行测试

运行Python算子测试

python test/infiniop/[operator].py [--cpu | --nvidia | --cambricon | --ascend]

一键运行所有Python算子测试

python scripts/python_test.py [--cpu | --nvidia | --cambricon | --ascend]

算子测试框架

详见 test/infiniop-test 目录

通信库(InfiniCCL)测试

编译(需要先安装InfiniCCL):

xmake build infiniccl-test

在英伟达平台运行测试(会自动使用所有可见的卡):

infiniccl-test --nvidia

开发指南

代码格式化

本项目使用 scripts/format.py 脚本实现代码格式化检查和操作。

使用

python scripts/format.py -h

查看脚本帮助信息:

usage: format.py [-h] [--ref REF] [--path [PATH ...]] [--check] [--c C] [--py PY]

options:
  -h, --help         show this help message and exit
  --ref REF          Git reference (commit hash) to compare against.
  --path [PATH ...]  Files to format or check.
  --check            Check files without modifying them.
  --c C              C formatter (default: clang-format-16)
  --py PY            Python formatter (default: black)

参数中:

  • refpath 控制格式化的文件范围
    • refpath 都为空,格式化当前暂存(git added)的文件;
    • 否则
      • ref 非空,将比较指定 commit 和当前代码的差异,只格式化修改过的文件;
      • path 非空,可传入多个路径(--path p0 p1 p2),只格式化指定路径及其子目录中的文件;
  • 若设置 --check,将检查代码是否需要修改格式,不修改文件内容;
  • 通过 --c 指定 c/c++ 格式化器,默认为 clang-format-16
  • 通过 --python 指定 python 格式化器 black

vscode 开发配置

基本配置见 xmake 官方文档

  • TL;DR
    • clangd

      打开 xmake.lua,保存一次以触发编译命令生成,将在工作路径下自动生成 .vscode/compile_commands.json 文件。然后在这个文件夹下创建 settings.json,填入:

      .vscode/settings.json

      {
          "clangd.arguments": [
              "--compile-commands-dir=.vscode"
          ]
      }