Source code for afe.ir.transform.requantization_hoisting.requantization_hoisting

#########################################################
# Copyright (C) 2024 SiMa Technologies, Inc.
#
# This material is SiMa proprietary and confidential.
#
# This material may not be copied or distributed without
# the express prior written permission of SiMa.
#
# All rights reserved.
#########################################################
# Code owner: Christopher Rodrigues
#########################################################
"""
The entry point of the requantization hoisting transformation.
"""

from afe.ir.net import AwesomeNet
from afe.ir.transform.base_transform import BaseTransform
from afe.ir.transform.requantization_hoisting.requantization_use_analysis import analyze_needs
from afe.ir.transform.requantization_hoisting.hoisting_transform import move_requantization_in_model_graph


[docs] def do_requantization_hoisting(net: AwesomeNet) -> None: needs, subgraph_inputs = analyze_needs(net) new_net = move_requantization_in_model_graph(net, needs, subgraph_inputs) # The original net must be modified in-place. # Copy all fields to the original object. net.__dict__.update(new_net.__dict__)
[docs] class HoistRequantization(BaseTransform): """ Moves requantization nodes as early as possible in the net. """ def __init__(self): pass def __call__(self, net: AwesomeNet) -> None: do_requantization_hoisting(net)