tvm.dlight
DLight 包为深度学习工作负载提供高效的开箱即用调度。
- class tvm.dlight.BlockInfo(name: str, iters: List[IterInfo], block_rv: BlockRV, reduction_block: bool = False)
关于 TIR 块的信息。
- class tvm.dlight.IterInfo(kind: typing_extensions.Literal[S, R, O], var: Var, dom: PrimExpr, loop_rv: LoopRV)
关于循环/迭代变量的信息。
- class tvm.dlight.ApplyDefaultSchedule(*rules: ScheduleRule)
一个 IRModule pass,它将 ScheduleRule 列表应用于模块中的所有 PrimFunc。
- class tvm.dlight.ScheduleRule
一个任意函数的薄封装,可用于调度 TIR PrimFunc。
给定一个 PrimFunc、一个目标和一个可调标志,ScheduleRule 的 apply 方法返回一个 Schedule、一个 Schedule 列表或 None,其中 None 表示该规则不适用于给定的 PrimFunc。如果 tunable 标志为 True,则允许 ScheduleRule 返回一个 Schedule 或一个 Schedule 列表,并且允许 Schedule 包含可调指令。如果 tunable 标志为 False,则 ScheduleRule 仅允许返回一个 Schedule,并且 Schedule 不允许包含可调指令。
- apply(func: PrimFunc, target: Target, tunable: bool) None | Schedule | List[Schedule]
将 ScheduleRule 应用于给定的 PrimFunc。
- 参数:
func (tir.PrimFunc) – 要应用 ScheduleRule 的 PrimFunc。
target (Target) – 计划为其构建调度的编译目标。
tunable (bool) – 调度是否允许包含可调指令。
- 返回:
results – Schedule、Schedule 列表或 None,其中 None 表示该规则不适用于给定的 PrimFunc。
- 返回类型:
Union[None, tir.Schedule, List[tir.Schedule]]
- static from_callable(name) Callable[[Callable[[PrimFunc, Target, bool], None | Schedule | List[Schedule]]], ScheduleRule]
从可调用对象创建 ScheduleRule。
- 参数:
name (str)
- 返回:
decorator – 一个装饰器,它接受一个可调用对象并返回一个 ScheduleRule。
- 返回类型:
Callable
示例
@ScheduleRule.from_callable("MyRule") def my_rule(func: tir.PrimFunc, target: Target, tunable: bool) -> Union[None, Schedule] # Do something with func and target