PanZezhong1725 / operators

算子库
7 stars 2 forks source link

# 算子库

跨平台高性能通用算子库。形式为 C 接口动态库。

采用二段式算子设计,每个算子都实现并对外暴露以下的 C 接口:

一、使用说明

配置

查看当前配置

xmake f -v

配置 CPU (默认配置)

xmake f --cpu=true -cv

配置 GPU

需要指定 CUDA 路径, 一般为 CUDA_HOME 或者 CUDA_ROOT

xmake f --nv-gpu=true --cuda=$CUDA_HOME -cv

配置 MLU

xmake f --cambricon-mlu=true -cv

编译

xmake

将编译好的算子库添加至环境变量 INFINI_ROOT

export INFINI_ROOT=[PATH_TO_LIBRARY]

运行算子测试

cd operatorspy/tests
python operator_name.py

二、开发说明

目录结构

├── xmake.lua  # xmake 构建脚本
├── include
│   ├── ops
│   │   ├── [operator_name].h  # 对外暴露的算子 C 接口定义,descriptor 定义
│   ├── tensor
│   │   ├── tensor_descriptor.h  # 对外暴露的张量 descriptor 定义
│   ├── *.h  # 对外暴露的核心结构体定义
├── src
│   ├── devices
│   │   ├── [device_name]
│   │       ├── *.cc/.h # 特定硬件(如 cpu、英伟达)通用代码
│   ├── ops
│   │   ├── utils.h  # 全算子通用代码 (如 assert)
│   │   ├── [operator_name]  # 算子实现目录
│   │       ├── operator.cc # 算子 C 接口实现 (根据 descriptor 调用不同的算子实现)
│   │       ├── [device_name]
│   │       │   ├── *.cc/.h/... # 特定硬件的算子实现代码
│   ├── *.h  # 核心结构体定义
│  
├── operatorspy  # Python 封装以及测试脚本
    ├── tests
    │   ├── operator_name.py  # 测试脚本
    ├── *.py     # Python 封装代码

增加新的硬件

增加新的算子