MacOS调试triton编译器(Python & C++联调)

  1. 其他平台使用gdb --args python xx.py即可,但是MacOS不支持gdb,更多的是使用lldb进行调试;
  2. which lldb看是否已安装lldb,安装后执行 lldb python – 01-add.py(中间是两个小“-”挨着哈不是一个),此时报错 :
    在这里插入图片描述
    原因是:调试器 lldb 无法获得调试进程的权限,通常是由于 MacOS 安全策略限制了调试器的权限。
  3. 解决:sudo lldb python – 01-add.py 即可:
    在这里插入图片描述
    lldb有些指令跟gdb不太一样,这里附上lldb与gdb指令的手册,自己看哈:https://lldb.llvm.org/use/tutorial.html
  4. 调试中发现打印参数时,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了…
  5. 打印所有kernel经过MLIR优化pass前后的变化:MLIR_ENABLE_DUMP=1 python 01-add.py &> mlir_all_kernel
  6. 打印指定kernel在MLIR优化pass前后的变化:MLIR_ENABLE_DUMP=add_kernel_tiled python 01-add.py &> mlir_1_kernel
  7. 打印LLVM优化pass前后变化:LLVM_IR_ENABLE_DUMP=1 python 01-vector-add.py&> llvm_dump
  8. 其他(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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值