Spaces:
Sleeping
Sleeping
// Copyright (c) ONNX Project Contributors | |
/* | |
* SPDX-License-Identifier: Apache-2.0 | |
*/ | |
namespace ONNX_NAMESPACE { | |
// ONNX (model-local) function identifiers are a tuple (domain, op, overload). | |
// The pair (domain, op) represents a specification of a function, while | |
// overload is used to disambiguate between multiple (specialized) implementations of | |
// the same specification. Overload is optional and can be empty. | |
// Multiple overloads may be used to distinguish implementations specialized | |
// for a specific type or rank of input tensors or for specific attribute values. | |
// A single string representation of (domain, op) | |
using FunctionSpecId = std::string; | |
// A single string representation of (domain, op, overload) | |
using FunctionImplId = std::string; | |
FunctionImplId GetFunctionImplId(const std::string& domain, const std::string& op, const std::string& overload) { | |
if (overload.empty()) | |
return NormalizeDomain(domain) + "::" + op; | |
return NormalizeDomain(domain) + "::" + op + "::" + overload; | |
} | |
FunctionImplId GetFunctionImplId(const FunctionProto& function) { | |
return GetFunctionImplId(function.domain(), function.name(), function.overload()); | |
} | |
FunctionImplId GetCalleeId(const NodeProto& node) { | |
return GetFunctionImplId(node.domain(), node.op_type(), node.overload()); | |
} | |
} // namespace ONNX_NAMESPACE | |