Leon's Blog

分享一点有趣的技术

0%

MLIR debug tips

image-20250421225330748

本篇文章主要汇总debug mlir时候的一些tips,方便后续查找使用。

VS Code Debugger

有用的命令合集

1
-exec set scheduler-locking step    # 冻结其他线程

MLIR Debug Practice

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
52
53
54
55
56
57
58
Legalizing operation : 'vector.transfer_read'(0x62c0434198a0) {
%6 = "vector.transfer_read"(%0, %arg3, %5) {operand_segment_sizes = dense<[1, 1, 1, 0]> : vector<4xi32>, permutation_map = affine_map<(d0) -> (d0)>} : (memref<32xf32>, index, f32) -> vector<8xf32>

* Fold {
} -> FAILURE : unable to fold

* Pattern : 'vector.transfer_read -> ()' {
** Insert : 'arith.constant'(0x62c0433289e0)
** Insert : 'arith.constant'(0x62c04332a260)
** Insert : 'arith.subi'(0x62c0432f4b50)
** Insert : 'vector.create_mask'(0x62c043329e30)

//===-------------------------------------------===//
Legalizing operation : 'vector.transfer_read'(0x62c0434198a0) {
// -----// IR Dump After AffineScalarReplacement //----- //
%10 = "vector.transfer_read"(%0, %arg3, %5, %9) {in_bounds = [true], operand_segment_sizes = dense<1> : vector<4xi32>, permutation_map = affine_map<(d0) -> (d0)>} : (memref<32xf32>, index, f32, vector<8xi1>) -> vector<8xf32>

* Fold {
} -> FAILURE : unable to fold

* Pattern : 'vector.transfer_read -> ()' {
} -> FAILURE : pattern was already applied

* Pattern : 'vector.transfer_read -> ()' {
** Insert : 'vector.splat'(0x62c04332a5b0)
** Insert : 'vector.maskedload'(0x62c04329aad0)
** Replace : 'vector.transfer_read'(0x62c0434198a0)

//===-------------------------------------------===//
Legalizing operation : 'vector.splat'(0x62c04332a5b0) {
%10 = "vector.splat"(%5) : (f32) -> vector<8xf32>

* Fold {
** Insert : 'arith.constant'(0x62c043420680)
** Replace : 'vector.splat'(0x62c04332a5b0)

//===-------------------------------------------===//
Legalizing operation : 'arith.constant'(0x62c043420680) {
%10 = "arith.constant"() {value = dense<0.000000e+00> : vector<8xf32>} : () -> vector<8xf32>

* Fold {
} -> FAILURE : unable to fold
} -> FAILURE : no matched legalization pattern
//===-------------------------------------------===//
} -> FAILURE : failed to legalize generated constant 'arith.constant'
} -> FAILURE : no matched legalization pattern
//===-------------------------------------------===//
} -> FAILURE : failed to legalize generated operation 'vector.splat'(0x000062C04332A5B0)
} -> FAILURE : pattern failed to match
} -> FAILURE : no matched legalization pattern
//===-------------------------------------------===//
} -> FAILURE : failed to legalize operation updated in-place 'vector.transfer_read'
} -> FAILURE : pattern failed to match

* Pattern : 'vector.transfer_read -> ()' {
} -> FAILURE : pattern failed to match
} -> FAILURE : no matched legalization pattern
//===-------------------------------------------===//

参考资料

  1. vscode debug文档