You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
graphengine/tests/ut/ge/graph/ops_stub.h

155 lines
5.1 KiB

/**
* Copyright 2019-2020 Huawei Technologies Co., Ltd
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
#ifndef MAIN_OPS_STUB_H
#define MAIN_OPS_STUB_H
#include "external/graph/operator_reg.h"
// for ir
namespace ge {
// Data
REG_OP(Data)
.INPUT(data, TensorType::ALL())
.OUTPUT(out, TensorType::ALL())
.ATTR(index, Int, 0)
.OP_END_FACTORY_REG(Data)
// Softmax
REG_OP(Softmax)
.INPUT(x, TensorType({DT_FLOAT, DT_FLOAT16}))
.OUTPUT(y, TensorType({DT_FLOAT, DT_FLOAT16}))
.ATTR(axis, Int, 0) // which mean compute which dims
.ATTR(algo, Int, 1) // 1 means using "subtract max from every point to avoid overflow",
/// 0 means using "ubtract max from every point to avoid overflow"
/// 2 means using "perform the Log softmax operation to avoid overflow"
/// now is only support 1
.ATTR(alpha, Float, 1)
.ATTR(beta, Float, 0)
.OP_END_FACTORY_REG(Softmax)
// Flatten
REG_OP(Flatten)
.INPUT(x, TensorType::ALL())
.OUTPUT(y, TensorType::ALL())
.OP_END_FACTORY_REG(Flatten)
REG_OP(Square)
.INPUT(x, TensorType({DT_FLOAT}))
.OUTPUT(y, TensorType({DT_FLOAT}))
.ATTR(alpha, Float, 1.0)
.ATTR(beta, Float, 0.0)
.OP_END_FACTORY_REG(Square)
REG_OP(ReadVariable)
.INPUT(x, TensorType::ALL())
.OUTPUT(y, TensorType::ALL())
.OP_END_FACTORY_REG(ReadVariable)
REG_OP(Activation)
.INPUT(x, TensorType::ALL())
.OUTPUT(y, TensorType::ALL())
/// 0:sigmod, 1:relu, 2:tanh, 3:clipped ReLU, 4:Elu,
/// 5:leaky relu, 6:abs, 7:relu1, 8:softsign, 9:softplus
.ATTR(mode, Int, 1)
.ATTR(coef, Float, 0)
.ATTR(alpha, Float, 1.0)
.ATTR(beta, Float, 0)
.OP_END_FACTORY_REG(Activation)
REG_OP(Add)
.INPUT(x1, TensorType({DT_FLOAT, DT_INT32, DT_INT64, DT_FLOAT16})) // "First operand."
.INPUT(x2, TensorType({DT_FLOAT, DT_INT32, DT_INT64, DT_FLOAT16})) // "Second operand."
// "Result, has same element type as two inputs"
.OUTPUT(y, TensorType({DT_FLOAT, DT_INT32, DT_INT64, DT_FLOAT16}))
.ATTR(mode, Int, 0) // mode=0, infer mode=1, train
.ATTR(alpha, Float, 1.0)
.ATTR(beta, Float, 0.0)
.ATTR(is_input_const, ListBool, {false, false})
.ATTR(T, Int, 0)
.OP_END_FACTORY_REG(Add)
REG_OP(Variable)
.INPUT(x, TensorType::ALL())
.OUTPUT(y, TensorType::ALL())
.ATTR(index, Int, 0)
.ATTR(value, Tensor, Tensor())
.OP_END_FACTORY_REG(Variable)
REG_OP(Summary)
.INPUT(x, TensorType::ALL())
.OP_END_FACTORY_REG(Summary)
REG_OP(Const)
.OUTPUT(y, TensorType::ALL()) // TensorType({DT_FLOAT, DT_INT8, DT_INT32, DT_BOOL})
.ATTR(value, Tensor, Tensor()) // This is the value of the const op
.ATTR(dtype, Int, 0)
.OP_END_FACTORY_REG(Const)
REG_OP(HcomBroadcast)
.DYNAMIC_INPUT(x, TensorType::ALL())
.DYNAMIC_OUTPUT(y, TensorType::ALL())
.REQUIRED_ATTR(root_rank, Int)
.REQUIRED_ATTR(group, String)
.ATTR(alpha, Float, 1.0)
.ATTR(beta, Float, 0.0)
.OP_END_FACTORY_REG(HcomBroadcast)
REG_OP(Assign)
.INPUT(resource, TensorType::ALL())
.INPUT(value, TensorType::ALL())
.OUTPUT(y, TensorType::ALL())
.OP_END_FACTORY_REG(Assign) REG_OP(Sqrt)
.INPUT(x, TensorType{(DT_FLOAT.DT_FLOAT16)})
.OUTPUT(y, TensorType{(DT_FLOAT, DT_FLOAT16)})
.ATTR(T, Int, 1)
.ATTR(alpha, Float, 1.0)
.ATTR(beta, Float, 0.0)
.OP_END_FACTORY_REG(Sqrt)
REG_OP(Save)
.DYNAMIC_INPUT(tensors, TensorType
: ALL())
.OP_END_FACTORY_REG(Save)
REG_OP(PReLU)
.INPUT(x, TensorType({DT_FLOAT}))
.OUTPUT(y, TensorType({DT_FLOAT}))
.ATTR(channel_shared, Bool, false)
.ATTR(nan_opt, Int, 0)
.ATTR(alpha, Float, 1.0)
.ATTR(beta, Float, 0.0)
.OP_END_FACTORY_REG(PReLU) REG_OP(Acosh)
.INPUT(x, TensorType({DT_FLOAT16, DT_FLOAT}))
.OUTPUT(y, TensorType({DT_FLOAT16, DT_FLOAT}))
.OP_END_FACTORY_REG(Acosh)
REG_OP(GuaranteeConst)
.INPUT(x, TensorType({DT_FLOAT, DT_FLOAT16, DT_INT8, DT_INT16, DT_UINT16, DT_UINT8, DT_INT32, DT_INT64, DT_UINT32,
DT_UINT64, DT_BOOL, DT_DOUBLE}))
.OUTPUT(y, TensorType({DT_FLOAT, DT_FLOAT16, DT_INT8, DT_INT16, DT_UINT16, DT_UINT8, DT_INT32, DT_INT64, DT_UINT32,
DT_UINT64, DT_BOOL, DT_DOUBLE}))
.OP_END_FACTORY_REG(GuaranteeConst)
IMPLEMT_INFERFUNC(GuaranteeConst, GuaranteeConstInfer) {
TensorDesc tensorDesc = op.GetInputDesc("x");
(void)op.UpdateOutputDesc("y", tensorDesc);
return GRAPH_SUCCESS;
}
INFER_FUNC_REG(GuaranteeConst, GuaranteeConstInfer);
} // namespace ge
#endif // MAIN_OPS_STUB_H