【TVM教程】使用自定义调度规则(Sketch Rule)在 CPU 上自动调度稀疏矩阵乘法
💡
原文中文,约9800字,阅读约需24分钟。
📝
内容提要
Apache TVM是一个深度学习编译框架,支持CPU和GPU等加速芯片。本文介绍了如何使用auto-scheduler优化CPU的稀疏矩阵乘法,提供自定义调度规则以提升性能,并展示相关代码和调优过程。
🎯
关键要点
- Apache TVM是一个深度学习编译框架,支持CPU、GPU和各种加速芯片。
- 本文介绍如何使用auto-scheduler优化CPU的稀疏矩阵乘法。
- auto-scheduler旨在自动探索最佳性能调度,允许用户提供自定义调度规则。
- 本教程使用稀疏矩阵乘法作为示例,演示如何实现自定义调度规则。
- 教程无法在Windows或最新版本的macOS上运行,需要在特定代码块中执行。
- 定义稀疏矩阵乘法的计算,auto-scheduler可以从输入/输出张量中得到计算图。
- 使用随机输入测试生成的调度性能,特殊的buffer用于稀疏运算的输入。
- 创建搜索任务并注册稀疏数据,设置目标为llvm。
- 定义CustomSketchRule,包括条件函数和应用函数,以便为稀疏操作应用调度规则。
- 设置auto-scheduler的参数,包括测试次数和记录文件。
- 创建auto_scheduler.SketchPolicy对象,并将自定义调度规则添加为初始化搜索回调。
- 开始搜索并应用最佳调度,检查调度的正确性和性能。
- 调优结果示例展示了优化后的TIR代码和性能评估。
- 提供了Python源代码和Jupyter Notebook下载链接。
❓
延伸问答
Apache TVM是什么?
Apache TVM是一个深度学习编译框架,支持CPU、GPU和各种加速芯片。
如何使用auto-scheduler优化稀疏矩阵乘法?
使用auto-scheduler可以自动探索最佳性能调度,并允许用户提供自定义调度规则来优化稀疏矩阵乘法。
CustomSketchRule的作用是什么?
CustomSketchRule用于定义自定义调度规则,以便在auto-scheduler中应用于特定的稀疏操作。
在调优过程中如何测试生成的调度性能?
在调优过程中,auto-scheduler使用随机输入来测试生成的调度性能,并注册特殊的buffer用于稀疏运算的输入。
如何创建和配置auto_scheduler.SketchPolicy对象?
创建auto_scheduler.SketchPolicy对象时,需要设置搜索任务、成本模型和初始化搜索回调,包括自定义调度规则。
调优结果如何评估?
调优结果通过构建二进制文件并检查其正确性和性能来评估,同时可以使用时间评估器来测量执行时间。
🏷️
标签
➡️