OptimizedMatmul Example Readme

代码组织

examples/102_dynamic_optimized_matmul
├── CMakeLists.txt
├── README.md
├── dynamic_optimized_matmul.cpp
├── impl
│   ├── kernel
│   │   └── common_matmul_kernel.h
│   ├── scripts
│   │   ├── templates
│   │   │   ├── common_matmul_template.py
│   │   │   └── launch_map_template.py
│   │   ├── utils
│   │   │   └── config.py
│   │   └── wrapper_code_gen.py
│   └── wrapper # 自动生成
└── include
    ├── launch_map.h # 自动生成
    ├── do_tiling_b16.h
    ├── dynamic_optimized_matmul.h
    ├── platform_info.h
    ├── select_kernel_b16.h
    ├── tiling_params.h
    └── utils.h

工程说明

工程默认编译成静态库,如果想编译成动态库,请把CMakeLists.txt中的STATIC改为SHARED,并手动export动态库路径。 工程编译前会调用python脚本生成代码,具体包括调用各模板的外围代码,以及launch_map.h(包含tilingKey和具体Kernel的映射关系) 如果需要进行批量性能测试,请注释掉精度比较代码,由于精度比较使用cpu算golden,耗时较长。 DynamicOptimizedMamtul根据shape动态确定Tiling参数,并尽力选择最好的模板进行计算,尽力获取最优性能,但是不保证是最优性能。

使用示例

  • 获取代码之后编译相应的算子可执行文件,可参考quickstart
  • 执行算子
# 编译指定用例
bash scripts/build.sh 102_dynamic_optimized_matmul
cd output/bin
# 可执行文件名 |矩阵m轴|n轴|k轴|LayoutA|LayoutB|Device ID
# 0 is RowMajor, 1 is ColumnMajor
./102_dynamic_optimized_matmul 256 512 1024 0 1 0

执行结果如下,说明精度比对成功。

Compare success.