- 其他平台使用gdb --args python xx.py即可,但是MacOS不支持gdb,更多的是使用lldb进行调试;
- which lldb看是否已安装lldb,安装后执行 lldb python – 01-add.py(中间是两个小“-”挨着哈不是一个),此时报错 :
原因是:调试器 lldb 无法获得调试进程的权限,通常是由于 MacOS 安全策略限制了调试器的权限。 - 解决:sudo lldb python – 01-add.py 即可:
lldb有些指令跟gdb不太一样,这里附上lldb与gdb指令的手册,自己看哈:https://lldb.llvm.org/use/tutorial.html - 调试中发现打印参数时,lldb竟然不能像gdb一样弹出来参数可用的API「裂开」…例如以下源码,我想打印blockArg信息,p blockArg->dump,(gdb在->之后按tab能出来所有可调函数,lldb啥也没…此时只能参考源码找点灵感…)
(lldb) p blockArg.getOwner() //打打试试
(mlir::Block *) 0x0000600001404050 //好兆头,有熟悉的Block了
(lldb) p blockArg.getOwner()->dump //dump一下试试
^bb0(%arg0: !tt.ptr, %arg1: !tt.ptr, %arg2: !tt.ptr, %arg3: i32):
%c128_i32 = arith.constant 128 : i32
%c1_i32 = arith.constant 1 : i32
%c0_i32 = arith.constant 0 : i32
%c16_i32 = arith.constant 16 : i32
%c2048_i32 = arith.constant 2048 : i32
%0 = tt.get_program_id x : i32
%1 = arith.muli %0, %c2048_i32 : i32
…
//出IR了,想打印其他Block的信息只能去mlir/IR/Block.h中找API了… - 打印所有kernel经过MLIR优化pass前后的变化:MLIR_ENABLE_DUMP=1 python 01-add.py &> mlir_all_kernel
- 打印指定kernel在MLIR优化pass前后的变化:MLIR_ENABLE_DUMP=add_kernel_tiled python 01-add.py &> mlir_1_kernel
- 打印LLVM优化pass前后变化:LLVM_IR_ENABLE_DUMP=1 python 01-vector-add.py&> llvm_dump
- 其他(GPU调试):
TRITON_INTERPRET=1 pdb main.py (GPU上pdb调试到kernel内部,环境变量 TRITON_INTERPRET=1,会使所有 Triton 内核绕过编译,并由解释器使用 Triton作的 numpy 等效项进行模拟,详见https://triton-lang.org/main/programming-guide/chapter-3/debugging.html)
工具:
Proton:python -m proton main.py
Triton-viz:https://github.com/Deep-Learning-Profiling-Tools/triton-viz
MacOS调试triton编译器(Python & C++联调)
于 2025-03-05 17:06:57 首次发布