<filename>examples/lazytensor/builder.py<gh_stars>100-1000
# Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
# See https://llvm.org/LICENSE.txt for license information.
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
# Also available under a BSD-style license. See LICENSE.
"""
Translator from torch.jit.ScriptFunction to MLIR.

The following defines a function that take a torch.jit.ScriptFunction
and converts it into an MLIR module.

The expected use for this module is to use the function
`build_module(jit_function: torch.jit.ScriptFunction
              annotation: Annotation) -> ir.Module`
to convert the TorchScript function into MLIR using the `torch`
dialect.
"""

from typing import Optional

from torch.jit import ScriptFunction

from torch_mlir.dialects.torch.importer.jit_ir import ModuleBuilder
from torch_mlir.dialects.builtin import FuncOp
from torch_mlir import ir

from utils.annotator import AnnotationConverter as ac
from utils.annotator import Annotation

def _get_func_op_with_name(module: ir.Module, name: str) -> Optional[FuncOp]:
    with module.context:
        name_attr = ir.StringAttr.get(name)
    for op in module.body.operations:
        if isinstance(op, FuncOp) and op.name == name_attr:
            return op

    return None

def build_module(jit_function: ScriptFunction,
                 annotation: Annotation) -> ir.Module:
    """
    Translate input function into an MLIR module in the `torch` dialect.

    Parameters
    ----------
    jit_function: ScriptFunction
        Function in TorchScript IR to turn into MLIR.
    annotation: Annotation
        Annotation object representing the types of
        the operands of `jit_function`.

    Returns
    -------
    ir.Module
        Translation of the input module into an MLIR module
    """
    mb = ModuleBuilder()
    mb.import_function(jit_function)

    func_op = _get_func_op_with_name(mb.module, jit_function.name)
    assert func_op is not None, 'Unable to find FuncOp in new module. Make sure function was imported correctly into ModuleBuilder'

    arg_attrs = ac.to_mlir_array_attr(annotation, mb.context)
    func_op.attributes['arg_attrs'] = arg_attrs

    return mb.module

<filename>examples/lazytensor/builder.py<gh_stars>100-1000
# Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
# See https://llvm.org/LICENSE.txt for license information.
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
# Also available under a BSD-style license. See LICENSE.
"""
Translator from torch.jit.ScriptFunction to MLIR.

The following defines a function that take a torch.jit.ScriptFunction
and converts it into an MLIR module.

The expected use for this module is to use the function
`build_module(jit_function: torch.jit.ScriptFunction
              annotation: Annotation) -> ir.Module`
to convert the TorchScript function into MLIR using the `torch`
dialect.
"""

from typing import Optional

from torch.jit import ScriptFunction

from torch_mlir.dialects.torch.importer.jit_ir import ModuleBuilder
from torch_mlir.dialects.builtin import FuncOp
from torch_mlir import ir

from utils.annotator import AnnotationConverter as ac
from utils.annotator import Annotation

def _get_func_op_with_name(module: ir.Module, name: str) -> Optional[FuncOp]:
    with module.context:
        name_attr = ir.StringAttr.get(name)
    for op in module.body.operations:
        if isinstance(op, FuncOp) and op.name == name_attr:
            return op

    return None

def build_module(jit_function: ScriptFunction,
                 annotation: Annotation) -> ir.Module:
    """
    Translate input function into an MLIR module in the `torch` dialect.

    Parameters
    ----------
    jit_function: ScriptFunction
        Function in TorchScript IR to turn into MLIR.
    annotation: Annotation
        Annotation object representing the types of
        the operands of `jit_function`.

    Returns
    -------
    ir.Module
        Translation of the input module into an MLIR module
    """
    mb = ModuleBuilder()
    mb.import_function(jit_function)

    func_op = _get_func_op_with_name(mb.module, jit_function.name)
    assert func_op is not None, 'Unable to find FuncOp in new module. Make sure function was imported correctly into ModuleBuilder'

    arg_attrs = ac.to_mlir_array_attr(annotation, mb.context)
    func_op.attributes['arg_attrs'] = arg_attrs

    return mb.module

# Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions. # See https://llvm.org/LICENSE.txt for license information. # SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception # Also available under a BSD-style license. See LICENSE. Translator from torch.jit.ScriptFunction to MLIR.  The following defines a function that take a torch.jit.ScriptFunction and converts it into an MLIR module.  The expected use for this module is to use the function `build_module(jit_function: torch.jit.ScriptFunction               annotation: Annotation) -> ir.Module` to convert the TorchScript function into MLIR using the `torch` dialect. Translate input function into an MLIR module in the `torch` dialect.      Parameters     ----------     jit_function: ScriptFunction         Function in TorchScript IR to turn into MLIR.     annotation: Annotation         Annotation object representing the types of         the operands of `jit_function`.      Returns     -------     ir.Module         Translation of the input module into an MLIR module