FForwardRewrite

FForwardRewrite#

源码:tvm/include/tvm/relay/op_attr_types.h

/*!
 * \brief Forward rewriting rule for a specific op.
 *
 * \param ref_call The reference old call type to be rewritten.
 *                 We can make use of the op and type information.
 * \param new_args The new arguments (some of them could be TempExpr).
 * \param ctx  Optional context information about ref_call.
 * \return The rewriten result call, can also return nullptr,
 *         which indicate the rewriter should use the default fallback
 *         rule that realizes all its input and compose the call.
 *
 * \note When we register the function, we can register
 *       a different signature with ctx to be a specific node type.
 */
using FForwardRewrite = runtime::TypedPackedFunc<Expr(
    const Call& ref_call, const Array<Expr>& new_args, const ObjectRef& ctx)>;

FForwardRewrite 是类型别名,它是一个带有类型的打包函数对象类型。这个函数对象的签名如下:

Expr(const Call& ref_call, const Array<Expr>& new_args, const ObjectRef& ctx)

其中,ref_call 是一个引用类型的旧调用类型,用于被重写;new_args 是新的参数列表,其中一些可以是 TempExprctx 是关于 ref_call 的可选的上下文信息。

该函数返回一个重写后的结果调用,也可以返回空指针,表示重写器应该使用默认的回退规则来实现所有输入并组合调用。

在注册此函数时,我们可以使用不同的签名和上下文信息来注册特定节点类型。