README.md 3.63 KB
Newer Older
zhoux's avatar
zhoux committed
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
# HYTLASS 0.1.0

_HYTLASS 0.1.0 - 2025年12月_

HYTLASS(HYGON DCU Templates for Linear Algebra Subroutines)是一个用于在海光DCU架构下实现高性能矩阵乘法(GEMM)及其衍生计算的C++模板库,其设计思路来源于CUTLASS,将数据搬运、层次化结构等可动部件分解为可复用、模块化的软件组件,
并通过C++模板类进行抽象。

HYTLASS同时兼容了基于CUTLASS 2.x实现的基于C++模版的矩阵乘和卷积,以及基于CUTLASS 3.x引入的CuTe编程模型。

你可以参考[快速入门指南](media/docs/quickstart.md)来快速入门使用HYTLASS。

# HYTLASS 0.1.0新增

HYTLASS 0.1.0是HYTLASS的首次提交,其实现基于CUTLASS 3.5.0,具体地,提供了:

- HYTLASS兼容和支持CUTLASS 2.x实现:

  - 支持BW(GFX936)及更早架构下的指令特性,包括支持TensorCore的mmac及ds_read_matrix原语。

  - 支持基于这些架构指令特性下的矩阵乘法实现。

  - 支持基于矩阵乘法模版实现的基于隐式矩阵乘法的卷积实现。

- HYTLASS兼容和支持CUTLASS 3.x及CuTe编程模型:

  - 适配基于DCU架构对CUTLASS 3.x中的CuTe编程模型HuTe,目前已支持至BW平台的指令原语。

  - 支持基于HuTe模型的矩阵乘法实现,包括MMA部分和Epilogue部分。

  - 支持基于HuTe模型的Kernel调度、Tiling调度等计算任务调度架构,支持多种线程块调度优化策略。

- 十余个计算示例支持(详见[示例](examples)):

  - 支持基于2.x的多种数据类型(TF32/FP16/BF16/I8/U8)的矩阵乘法、卷积及其融合算子实现。

  - 支持基于Split-K、Stream-K等计算优化算法的矩阵乘法示例。

  - 支持基于访问者模式的自定义尾声处理示例。

  - 支持基于HuTe的矩阵乘法示例,包括BatchedGemm、GroupGemm等示例。

  - 支持使用TensorCore加速的基于Block Ell格式的稀疏矩阵乘法示例。

- 工具链支持:

  - 支持hytlass_profiler,用于细粒度问题参数下的kernel tuning。

# 编译HYTLASS

在其他项目中,HYTLASS作为头文件库不需要单独编译,用户将`include/`目录指定至头文件路径即可。

52
53
54
55
56
57
58
59
60
61
62
HYTLASS的单元测试、示例及工具链通过CMake编译,其所需编译环境要求如下:

- DCU Toolkit (DCC 25.10或更新版本),详见[DCC编译器](https://download.sourcefind.cn:65024/1/main/compiler)

- CMake 3.19+

- 支持C++17或更高版本的主机端编译器

- Python 3.5+

部分示例和单测中,HYTLASS可能需要编译链接hipBLAS库。
zhoux's avatar
zhoux committed
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101

在HYTLASS项目根目录中创建一个build目录,然后执行cmake,你可以通过CMAKE选项`HYTLASS_HIPCC_ARCHS`指定编译的架构。

```bash
$ mkdir build && cd build

$ cmake .. -DHYTLASS_HIPCC_ARCHS=936               # compiles for DCU BW Architecture
```

你可以通过在build目录下使用make编译并执行`test_unit`来执行HYTLASS的单元测试。可以通过`-j`选项来并行执行make的流程。

```bash
$ make test_unit -j
...
...
...
[----------] Global test environment tear-down
[==========] 946 tests from 57 test cases ran. (10812 ms total)
[  PASSED  ] 946 tests.
```

在所支持的硬件架构下,所有测试都应当通过,尽管不同硬件架构下的单元测试数量可能有所不同。

你也可以通过在build目录下,使用make编译`test_examples*`来执行所有示例或某个示例。

```bash
$ make test_examples -j
...
...
...
[100%] Built target test_examples_xxx
[100%] Built target test_examples
```

或在编译完成后,在`build/examples`目录下单独执行某个示例的可执行文件。

```bash
$ cd build/examples && ./00_hytlass_basic_gemm/gfx928_gemm_tensor_op
```