Source code for afe.ir.transform_ir_generator
#########################################################
# Copyright (C) 2022 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
#########################################################
"""
Generation of AwesomeNodes from a tensor transform.
"""
from typing import Optional, List, Tuple
from afe.ir.defines import NodeName
from afe.ir.node import AwesomeNode
from afe.ir.tensor_type import TensorType
[docs]
class TransformIRGenerationContext:
"""
Context for generating AwesomeNodes for a tensor transform.
"""
# To be implemented
pass
[docs]
class TransformIRGenerator:
"""
Generator of AwesomeNodes for a tensor transform. Class instances
are produced from tensor transforms.
"""
[docs]
def generate(self, generation_info: TransformIRGenerationContext,
input_type: TensorType,
input_name: Optional[NodeName], output_name: Optional[NodeName]) \
-> Tuple[NodeName, NodeName, TensorType, List[AwesomeNode]]:
"""
Generate AwesomeNodes for the transform.
A caller must pass None for at least one of input_name and output_name.
:param generation_info: The context where generation occurs
:param input_type: Type of the input node.
:param input_name: Name of the input node. If not given, and a name is needed,
a name will be created.
:param output_name: Name of the output node. If not given, and a name is needed,
a name will be created.
:return: Tuple of input node name, output node name, output type, and
newly created nodes. The nodes should be inserted into an AwesomeNet.
"""
raise NotImplementedError("Method is abstract")