# -*- coding: utf-8 -*- # MegEngine is Licensed under the Apache License, Version 2.0 (the "License") # # Copyright (c) 2014-2021 Megvii Inc. All rights reserved. # # Unless required by applicable law or agreed to in writing, # software distributed under the License is distributed on an # "AS IS" BASIS, WITHOUT ARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # pylint: disable=redefined-builtin from typing import Iterable, List, Sequence from ..core._imperative_rt.core2 import apply from ..core.ops import builtin def extern_opr_subgraph( inputs, output_shapes: List[tuple], dump_name: str, dump_data: bytes, output_dtypes ): r"""Load a serialized extern opr subgraph and fake execute the operator. Args: inputs: list of input tensors. output_shapes: The output shapes. dump_name: The serialized subgraph name. dump_data: The serialized subgraph. """ if not isinstance(inputs, Iterable): inputs = (inputs,) op = builtin.ExternOpr( output_shapes, dump_name, dump_data, len(dump_data), output_dtypes ) return apply(op, *inputs) def tensorrt_runtime_opr(inputs, *, data: bytes = None): # empty model will give None result if data is None: return None op = builtin.TensorRTRuntime(data, len(data)) # return sequence of outputs return apply(op, *inputs) def cambricon_runtime_opr(inputs, data, symbol, tensor_dim_mutable): r"""Load a serialized Cambricon model as a runtime operator in MegEngine. Args: inputs: list of input tensors. data: the serialized Cambricon model. symbol: name of the function in Cambricon model. tensor_dim_mutable: whether the input tensors' shapes are mutable in ``cnrtModel_t``. """ op = builtin.CambriconRuntime(data, len(data), symbol, tensor_dim_mutable) return apply(op, *inputs) def atlas_runtime_opr(inputs, data): r"""Load a serialized Atlas model as a runtime operator in MegEngine. Args: inputs: list of input tensors. data: the serialized Atlas model. """ op = builtin.AtlasRuntime(data, len(data)) return apply(op, *inputs) def magicmind_runtime_opr(inputs, data): r"""Load a serialized MagicMind model as a runtime operator in MegEngine. Args: inputs: list of input tensors. data: the serialized MagicMind model. """ op = builtin.MagicMindRuntime(data, len(data)) return apply(op, *inputs)