【TVM 教程】TVM 中的 Schedule 原语

💡 原文中文,约13800字,阅读约需33分钟。
📝

内容提要

本教程介绍了 TVM 中的调度原语,指导用户高效构建内核。通过一系列操作描述计算,使用调度原语进行计算调度,编译并运行以观察性能差异,最后根据结果调整调度策略。

🎯

关键要点

  • TVM 是一种用于高效构建内核的领域特定语言。

  • Schedule 是一组计算转换,用于转换程序中的循环计算。

  • 通过 Schedule,用户可以灵活地调度计算以提高性能。

  • 可以通过多种方法创建 Schedule,包括 split、tile、fuse、reorder、bind 等。

  • 使用 compute_at 可以将计算移动到特定的 axis 中,以优化性能。

  • compute_inline 和 compute_root 可以将计算体插入到需要张量的地址或移动到 root。

  • 本教程提供了通过一系列操作描述计算、调度计算、编译和运行的工作流程。

延伸问答

什么是 TVM 中的 Schedule 原语?

Schedule 原语是一组计算转换,用于在 TVM 中调度程序中的循环计算,以提高性能。

如何使用 TVM 创建 Schedule?

可以通过多种方法创建 Schedule,包括 split、tile、fuse、reorder 和 bind 等操作。

Schedule 中的 split 操作有什么作用?

split 操作可以根据 factor 将指定的 axis 拆分为两个 axis,以便更灵活地调度计算。

TVM 中如何优化计算性能?

通过使用 Schedule 原语调度计算、编译并运行程序,观察性能差异后调整调度策略,可以优化计算性能。

compute_at 和 compute_inline 的区别是什么?

compute_at 将计算移动到特定的 axis 中,而 compute_inline 则将计算体插入到需要张量的地址中。

如何在 TVM 中使用 bind 操作?

bind 操作可以将指定的 axis 与线程 axis 绑定,常用于 GPU 编程,以提高并行计算效率。

🏷️

标签

➡️

继续阅读