VSCode调试服务器上TVM框架

Visual Studio Code作为一款代码开发神器,有很多的插件来服务于代码的开发。

本文介绍如何通过vscode调试服务器上的tvm工程,因该工程位于服务器上因此需要先安装Remote SSH插件,该框架中包含C、C++、Python、GO等编程语言编写的代码,因此我们需要安装对应语言编译所需要的插件。

在tvm框架中C与C++程序属于后端接口,会根据要求编译成库文件,封装成python可调用的形式供前端调用。如果我们只是用gdb调试就无法完成前端调用后端的在线debug。

下面提供一种python与C混合调试的方法:

 在软件上点击[Run and Debug] 选择 config from json, 会弹出launch.json的编辑框,将下面内容复制到该文件中,将./path/to/python/run.py替换为要运行的脚本即可在线调试

{
    // 使用 IntelliSense 了解相关属性。 
    // 悬停以查看现有属性的描述。
    // 欲了解更多信息,请访问: https://go.microsoft.com/fwlink/?linkid=830387
    "version": "0.2.0",
    "configurations": [
      {
        "name": "Python: launch",
        "type": "python",
        "request": "launch",
        "python": "/usr/bin/python",
        "program": "./path/to/python/run.py",
        "console": "integratedTerminal",
        "cwd": "${workspaceFolder}",
        "stopOnEntry": true,
        "justMyCode": false,
        "outputCapture": "std"
      },
      {
        "name": "GDB Launch",
        "type": "cppdbg",
        "request": "launch",
        "program": "/usr/bin/python",
        "args": [
          "./path/to/python/run.py"
        ],
        "MIMode": "gdb",
        "cwd": "${workspaceFolder}",
        "setupCommands": [
          {
            "description": "Enable pretty-printing for gdb",
            "text": "-enable-pretty-printing",
            "ignoreFailures": true
          }
        ],
      }
    ]
  }
  

保存好后,再次点击[Run and Debug] 将会看到

以及[Python: launch]供选择,调试C代码选择[GDB Launch],调试python脚本选择[Python: launch]就可以在线Debug了。

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是使用Python和TVM实现GPU上并行矩阵乘法的简单示例: ```python import numpy as np import tvm from tvm import te, autotvm # 定义矩阵乘法运算 def matmul(n, m, p): # 定义输入矩阵 A = te.placeholder((n, m), name='A') B = te.placeholder((m, p), name='B') # 定义输出矩阵 k = te.reduce_axis((0, m), name='k') C = te.compute((n, p), lambda i, j: te.sum(A[i, k] * B[k, j], axis=k), name='C') # 创建计算图 s = te.create_schedule(C.op) # 选择目标设备 target = 'cuda' # 编译 func = tvm.build(s, [A, B, C], target=target) # 生成随机输入数据 a_np = np.random.uniform(size=(n, m)).astype(np.float32) b_np = np.random.uniform(size=(m, p)).astype(np.float32) c_np = np.zeros((n, p), dtype=np.float32) # 将数据上传到GPU ctx = tvm.gpu() a_tvm = tvm.nd.array(a_np, ctx) b_tvm = tvm.nd.array(b_np, ctx) c_tvm = tvm.nd.array(c_np, ctx) # 执行 func(a_tvm, b_tvm, c_tvm) tvm.testing.assert_allclose(c_np, c_tvm.asnumpy(), rtol=1e-5) # 测试 matmul(128, 256, 512) ``` 以上代码中,我们首先使用TVM的API定义了矩阵乘法运算,并创建了计算图。然后,我们选择了目标设备为GPU,并使用TVM的编译器将计算图编译为针对GPU的高效代码。接着,我们生成了随机的输入数据,并将其上传到GPU。最后,我们调用生成的代码执行矩阵乘法运算,并将输出结果与预期结果进行比对。 需要注意的是,在实际使用中,我们可能需要使用TVM的调度器对计算图进行优化,以进一步提高性能。同时,我们还可以使用TVM的自动调优工具Autotvm,自动选择最优的计算图和参数组合,以获得最佳性能。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值