chore: import upstream snapshot with attribution
This commit is contained in:
@@ -0,0 +1,11 @@
|
||||
if(WIN32)
|
||||
cc_test(
|
||||
test_op_signature
|
||||
SRCS test_op_signature.cc
|
||||
DEPS type_info common)
|
||||
else()
|
||||
cc_test(
|
||||
test_op_signature
|
||||
SRCS test_op_signature.cc
|
||||
DEPS phi common)
|
||||
endif()
|
||||
@@ -0,0 +1,636 @@
|
||||
/* Copyright (c) 2022 PaddlePaddle Authors. All Rights Reserved.
|
||||
|
||||
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. */
|
||||
|
||||
#include "test/cpp/phi/ops/test_op_signature.h"
|
||||
|
||||
#include <gtest/gtest.h>
|
||||
|
||||
#include <memory>
|
||||
#include <unordered_set>
|
||||
|
||||
#include "paddle/fluid/operators/ops_signature/signatures.h"
|
||||
#include "paddle/phi/core/compat/op_utils.h"
|
||||
|
||||
namespace phi {
|
||||
namespace tests {
|
||||
|
||||
// The unittests in this file are just order to pass the CI-Coverage,
|
||||
// so it isn't necessary to check the all cases.
|
||||
|
||||
TEST(ARG_MAP, fill_constant) {
|
||||
TestArgumentMappingContext arg_case1(
|
||||
{"ShapeTensor", "ValueTensor"}, {}, {}, {}, {"Out"});
|
||||
auto signature1 = (*OpUtilsMap::Instance().GetArgumentMappingFn(
|
||||
"fill_constant"))(arg_case1);
|
||||
EXPECT_STREQ(signature1.name, "full_sr");
|
||||
|
||||
TestArgumentMappingContext arg_case2(
|
||||
{"ShapeTensor"},
|
||||
{},
|
||||
{{"str_value", paddle::any{std::string{"10"}}}},
|
||||
{},
|
||||
{"Out"});
|
||||
auto signature2 = (*OpUtilsMap::Instance().GetArgumentMappingFn(
|
||||
"fill_constant"))(arg_case2);
|
||||
EXPECT_STREQ(signature2.name, "full_sr");
|
||||
|
||||
TestArgumentMappingContext arg_case3(
|
||||
{"ShapeTensor"},
|
||||
{},
|
||||
{{"value", paddle::any{0}}, {"str_value", paddle::any{std::string{""}}}},
|
||||
{},
|
||||
{"Out"});
|
||||
auto signature3 = (*OpUtilsMap::Instance().GetArgumentMappingFn(
|
||||
"fill_constant"))(arg_case3);
|
||||
EXPECT_STREQ(signature3.name, "full_sr");
|
||||
|
||||
TestArgumentMappingContext arg_case4(
|
||||
{"ShapeTensorList", "ValueTensor"}, {}, {}, {}, {"Out"});
|
||||
auto signature4 = (*OpUtilsMap::Instance().GetArgumentMappingFn(
|
||||
"fill_constant"))(arg_case4);
|
||||
EXPECT_STREQ(signature4.name, "full_sr");
|
||||
|
||||
TestArgumentMappingContext arg_case5(
|
||||
{"ShapeTensorList"},
|
||||
{},
|
||||
{{"str_value", paddle::any{std::string{"10"}}}},
|
||||
{},
|
||||
{"Out"});
|
||||
auto signature5 = (*OpUtilsMap::Instance().GetArgumentMappingFn(
|
||||
"fill_constant"))(arg_case5);
|
||||
EXPECT_STREQ(signature5.name, "full_sr");
|
||||
|
||||
TestArgumentMappingContext arg_case6(
|
||||
{"ShapeTensorList"},
|
||||
{},
|
||||
{{"value", paddle::any{0}}, {"str_value", paddle::any{std::string{""}}}},
|
||||
{},
|
||||
{"Out"});
|
||||
auto signature6 = (*OpUtilsMap::Instance().GetArgumentMappingFn(
|
||||
"fill_constant"))(arg_case6);
|
||||
EXPECT_STREQ(signature6.name, "full_sr");
|
||||
|
||||
TestArgumentMappingContext arg_case7(
|
||||
{"ValueTensor"},
|
||||
{},
|
||||
{{"shape", paddle::any{std::vector<int64_t>{2, 3}}}},
|
||||
{},
|
||||
{"Out"});
|
||||
auto signature7 = (*OpUtilsMap::Instance().GetArgumentMappingFn(
|
||||
"fill_constant"))(arg_case7);
|
||||
EXPECT_STREQ(signature7.name, "full_sr");
|
||||
|
||||
TestArgumentMappingContext arg_case8(
|
||||
{},
|
||||
{},
|
||||
{{"shape", paddle::any{std::vector<int64_t>{2, 3}}},
|
||||
{"value", paddle::any{0}},
|
||||
{"str_value", paddle::any{std::string{""}}}},
|
||||
{},
|
||||
{"Out"});
|
||||
auto signature8 = (*OpUtilsMap::Instance().GetArgumentMappingFn(
|
||||
"fill_constant"))(arg_case8);
|
||||
EXPECT_STREQ(signature8.name, "full_sr");
|
||||
|
||||
TestArgumentMappingContext arg_case9(
|
||||
{},
|
||||
{},
|
||||
{{"shape", paddle::any{std::vector<int64_t>{2, 3}}},
|
||||
{"str_value", paddle::any{std::string{"10"}}}},
|
||||
{},
|
||||
{"Out"});
|
||||
auto signature9 = (*OpUtilsMap::Instance().GetArgumentMappingFn(
|
||||
"fill_constant"))(arg_case9);
|
||||
EXPECT_STREQ(signature9.name, "full_sr");
|
||||
}
|
||||
|
||||
TEST(ARG_MAP, set_value) {
|
||||
TestArgumentMappingContext arg_case(
|
||||
{"Input", "StartsTensorList", "EndsTensorList", "StepsTensorList"},
|
||||
{},
|
||||
{{"fp32_values", paddle::any{std::vector<float>{1}}}},
|
||||
{"Out"},
|
||||
{});
|
||||
EXPECT_STREQ(
|
||||
(*OpUtilsMap::Instance().GetArgumentMappingFn("set_value"))(arg_case)
|
||||
.name,
|
||||
"set_value");
|
||||
|
||||
TestArgumentMappingContext arg_case1(
|
||||
{"Input", "StartsTensorList", "EndsTensorList", "StepsTensorList"},
|
||||
{},
|
||||
{{"fp64_values", paddle::any{std::vector<double>{1}}}},
|
||||
{"Out"},
|
||||
{});
|
||||
EXPECT_STREQ(
|
||||
(*OpUtilsMap::Instance().GetArgumentMappingFn("set_value"))(arg_case1)
|
||||
.name,
|
||||
"set_value");
|
||||
|
||||
TestArgumentMappingContext arg_case2(
|
||||
{"Input", "StartsTensorList", "EndsTensorList", "StepsTensorList"},
|
||||
{},
|
||||
{{"int32_values", paddle::any{std::vector<int>{1}}}},
|
||||
{"Out"},
|
||||
{});
|
||||
EXPECT_STREQ(
|
||||
(*OpUtilsMap::Instance().GetArgumentMappingFn("set_value"))(arg_case2)
|
||||
.name,
|
||||
"set_value");
|
||||
|
||||
TestArgumentMappingContext arg_case3(
|
||||
{"Input", "StartsTensorList", "EndsTensorList", "StepsTensorList"},
|
||||
{},
|
||||
{{"int64_values", paddle::any{std::vector<int64_t>{1}}}},
|
||||
{"Out"},
|
||||
{});
|
||||
EXPECT_STREQ(
|
||||
(*OpUtilsMap::Instance().GetArgumentMappingFn("set_value"))(arg_case3)
|
||||
.name,
|
||||
"set_value");
|
||||
|
||||
TestArgumentMappingContext arg_case4(
|
||||
{"Input", "StartsTensorList", "EndsTensorList", "StepsTensorList"},
|
||||
{},
|
||||
{{"bool_values", paddle::any{std::vector<int>{1}}}},
|
||||
{"Out"},
|
||||
{});
|
||||
EXPECT_STREQ(
|
||||
(*OpUtilsMap::Instance().GetArgumentMappingFn("set_value"))(arg_case4)
|
||||
.name,
|
||||
"set_value");
|
||||
|
||||
TestArgumentMappingContext arg_case5(
|
||||
{"Input", "StartsTensorList", "EndsTensorList", "ValueTensor"},
|
||||
{},
|
||||
{},
|
||||
{"Out"},
|
||||
{});
|
||||
EXPECT_STREQ(
|
||||
(*OpUtilsMap::Instance().GetArgumentMappingFn("set_value"))(arg_case5)
|
||||
.name,
|
||||
"set_value_with_tensor");
|
||||
|
||||
TestArgumentMappingContext arg_case6(
|
||||
{"Input", "StartsTensorList", "EndsTensorList"},
|
||||
{},
|
||||
{{"fp64_values", paddle::any{std::vector<double>{1}}}},
|
||||
{"Out"},
|
||||
{});
|
||||
EXPECT_STREQ(
|
||||
(*OpUtilsMap::Instance().GetArgumentMappingFn("set_value"))(arg_case6)
|
||||
.name,
|
||||
"set_value");
|
||||
|
||||
TestArgumentMappingContext arg_case7(
|
||||
{"Input", "StartsTensorList", "EndsTensorList"},
|
||||
{},
|
||||
{{"int32_values", paddle::any{std::vector<int>{1}}}},
|
||||
{"Out"},
|
||||
{});
|
||||
EXPECT_STREQ(
|
||||
(*OpUtilsMap::Instance().GetArgumentMappingFn("set_value"))(arg_case7)
|
||||
.name,
|
||||
"set_value");
|
||||
|
||||
TestArgumentMappingContext arg_case8(
|
||||
{"Input", "StartsTensorList", "EndsTensorList"},
|
||||
{},
|
||||
{{"int64_values", paddle::any{std::vector<int64_t>{1}}}},
|
||||
{"Out"},
|
||||
{});
|
||||
EXPECT_STREQ(
|
||||
(*OpUtilsMap::Instance().GetArgumentMappingFn("set_value"))(arg_case8)
|
||||
.name,
|
||||
"set_value");
|
||||
|
||||
TestArgumentMappingContext arg_case9(
|
||||
{"Input", "StartsTensorList", "EndsTensorList"},
|
||||
{},
|
||||
{{"bool_values", paddle::any{std::vector<int>{1}}}},
|
||||
{"Out"},
|
||||
{});
|
||||
EXPECT_STREQ(
|
||||
(*OpUtilsMap::Instance().GetArgumentMappingFn("set_value"))(arg_case9)
|
||||
.name,
|
||||
"set_value");
|
||||
|
||||
TestArgumentMappingContext arg_case10(
|
||||
{"Input", "StartsTensorList", "StepsTensorList", "ValueTensor"},
|
||||
{},
|
||||
{},
|
||||
{"Out"},
|
||||
{});
|
||||
EXPECT_STREQ(
|
||||
(*OpUtilsMap::Instance().GetArgumentMappingFn("set_value"))(arg_case10)
|
||||
.name,
|
||||
"set_value_with_tensor");
|
||||
|
||||
TestArgumentMappingContext arg_case11(
|
||||
{"Input", "StartsTensorList", "StepsTensorList"},
|
||||
{},
|
||||
{{"fp64_values", paddle::any{std::vector<double>{1}}}},
|
||||
{"Out"},
|
||||
{});
|
||||
EXPECT_STREQ(
|
||||
(*OpUtilsMap::Instance().GetArgumentMappingFn("set_value"))(arg_case11)
|
||||
.name,
|
||||
"set_value");
|
||||
|
||||
TestArgumentMappingContext arg_case12(
|
||||
{"Input", "StartsTensorList", "StepsTensorList"},
|
||||
{},
|
||||
{{"int32_values", paddle::any{std::vector<int>{1}}}},
|
||||
{"Out"},
|
||||
{});
|
||||
EXPECT_STREQ(
|
||||
(*OpUtilsMap::Instance().GetArgumentMappingFn("set_value"))(arg_case12)
|
||||
.name,
|
||||
"set_value");
|
||||
|
||||
TestArgumentMappingContext arg_case13(
|
||||
{"Input", "StartsTensorList", "StepsTensorList"},
|
||||
{},
|
||||
{{"int64_values", paddle::any{std::vector<int64_t>{1}}}},
|
||||
{"Out"},
|
||||
{});
|
||||
EXPECT_STREQ(
|
||||
(*OpUtilsMap::Instance().GetArgumentMappingFn("set_value"))(arg_case13)
|
||||
.name,
|
||||
"set_value");
|
||||
|
||||
TestArgumentMappingContext arg_case14(
|
||||
{"Input", "StartsTensorList", "StepsTensorList"},
|
||||
{},
|
||||
{{"bool_values", paddle::any{std::vector<int>{1}}}},
|
||||
{"Out"},
|
||||
{});
|
||||
EXPECT_STREQ(
|
||||
(*OpUtilsMap::Instance().GetArgumentMappingFn("set_value"))(arg_case14)
|
||||
.name,
|
||||
"set_value");
|
||||
|
||||
TestArgumentMappingContext arg_case15(
|
||||
{"Input", "StartsTensorList", "ValueTensor"}, {}, {}, {"Out"}, {});
|
||||
EXPECT_STREQ(
|
||||
(*OpUtilsMap::Instance().GetArgumentMappingFn("set_value"))(arg_case15)
|
||||
.name,
|
||||
"set_value_with_tensor");
|
||||
|
||||
TestArgumentMappingContext arg_case16(
|
||||
{"Input", "StartsTensorList", "StepsTensorList"},
|
||||
{},
|
||||
{{"fp32_values", paddle::any{std::vector<float>{1}}}},
|
||||
{"Out"},
|
||||
{});
|
||||
EXPECT_STREQ(
|
||||
(*OpUtilsMap::Instance().GetArgumentMappingFn("set_value"))(arg_case16)
|
||||
.name,
|
||||
"set_value");
|
||||
|
||||
TestArgumentMappingContext arg_case17(
|
||||
{"Input", "StartsTensorList", "StepsTensorList"},
|
||||
{},
|
||||
{{"fp64_values", paddle::any{std::vector<double>{1}}}},
|
||||
{"Out"},
|
||||
{});
|
||||
EXPECT_STREQ(
|
||||
(*OpUtilsMap::Instance().GetArgumentMappingFn("set_value"))(arg_case17)
|
||||
.name,
|
||||
"set_value");
|
||||
|
||||
TestArgumentMappingContext arg_case18(
|
||||
{"Input", "StartsTensorList", "StepsTensorList"},
|
||||
{},
|
||||
{{"int32_values", paddle::any{std::vector<int>{1}}}},
|
||||
{"Out"},
|
||||
{});
|
||||
EXPECT_STREQ(
|
||||
(*OpUtilsMap::Instance().GetArgumentMappingFn("set_value"))(arg_case18)
|
||||
.name,
|
||||
"set_value");
|
||||
|
||||
TestArgumentMappingContext arg_case19(
|
||||
{"Input", "StartsTensorList", "StepsTensorList"},
|
||||
{},
|
||||
{{"int64_values", paddle::any{std::vector<int64_t>{1}}}},
|
||||
{"Out"},
|
||||
{});
|
||||
EXPECT_STREQ(
|
||||
(*OpUtilsMap::Instance().GetArgumentMappingFn("set_value"))(arg_case19)
|
||||
.name,
|
||||
"set_value");
|
||||
|
||||
TestArgumentMappingContext arg_case20(
|
||||
{"Input", "StartsTensorList", "StepsTensorList"},
|
||||
{},
|
||||
{{"bool_values", paddle::any{std::vector<int>{1}}}},
|
||||
{"Out"},
|
||||
{});
|
||||
EXPECT_STREQ(
|
||||
(*OpUtilsMap::Instance().GetArgumentMappingFn("set_value"))(arg_case20)
|
||||
.name,
|
||||
"set_value");
|
||||
|
||||
TestArgumentMappingContext arg_case21(
|
||||
{"Input", "EndsTensorList", "StepsTensorList", "ValueTensor"},
|
||||
{},
|
||||
{},
|
||||
{"Out"},
|
||||
{});
|
||||
EXPECT_STREQ(
|
||||
(*OpUtilsMap::Instance().GetArgumentMappingFn("set_value"))(arg_case21)
|
||||
.name,
|
||||
"set_value_with_tensor");
|
||||
|
||||
TestArgumentMappingContext arg_case22(
|
||||
{"Input", "EndsTensorList", "StepsTensorList"},
|
||||
{},
|
||||
{{"fp64_values", paddle::any{std::vector<double>{1}}}},
|
||||
{"Out"},
|
||||
{});
|
||||
EXPECT_STREQ(
|
||||
(*OpUtilsMap::Instance().GetArgumentMappingFn("set_value"))(arg_case22)
|
||||
.name,
|
||||
"set_value");
|
||||
|
||||
TestArgumentMappingContext arg_case23(
|
||||
{"Input", "EndsTensorList", "StepsTensorList"},
|
||||
{},
|
||||
{{"int32_values", paddle::any{std::vector<int>{1}}}},
|
||||
{"Out"},
|
||||
{});
|
||||
EXPECT_STREQ(
|
||||
(*OpUtilsMap::Instance().GetArgumentMappingFn("set_value"))(arg_case23)
|
||||
.name,
|
||||
"set_value");
|
||||
|
||||
TestArgumentMappingContext arg_case24(
|
||||
{"Input", "EndsTensorList", "StepsTensorList"},
|
||||
{},
|
||||
{{"int64_values", paddle::any{std::vector<int64_t>{1}}}},
|
||||
{"Out"},
|
||||
{});
|
||||
EXPECT_STREQ(
|
||||
(*OpUtilsMap::Instance().GetArgumentMappingFn("set_value"))(arg_case24)
|
||||
.name,
|
||||
"set_value");
|
||||
|
||||
TestArgumentMappingContext arg_case25(
|
||||
{"Input", "EndsTensorList", "StepsTensorList"},
|
||||
{},
|
||||
{{"bool_values", paddle::any{std::vector<int>{1}}}},
|
||||
{"Out"},
|
||||
{});
|
||||
EXPECT_STREQ(
|
||||
(*OpUtilsMap::Instance().GetArgumentMappingFn("set_value"))(arg_case25)
|
||||
.name,
|
||||
"set_value");
|
||||
|
||||
TestArgumentMappingContext arg_case26(
|
||||
{"Input", "EndsTensorList", "ValueTensor"}, {}, {}, {"Out"}, {});
|
||||
EXPECT_STREQ(
|
||||
(*OpUtilsMap::Instance().GetArgumentMappingFn("set_value"))(arg_case26)
|
||||
.name,
|
||||
"set_value_with_tensor");
|
||||
|
||||
TestArgumentMappingContext arg_case27(
|
||||
{"Input", "EndsTensorList"},
|
||||
{},
|
||||
{{"fp32_values", paddle::any{std::vector<float>{1}}}},
|
||||
{"Out"},
|
||||
{});
|
||||
EXPECT_STREQ(
|
||||
(*OpUtilsMap::Instance().GetArgumentMappingFn("set_value"))(arg_case27)
|
||||
.name,
|
||||
"set_value");
|
||||
|
||||
TestArgumentMappingContext arg_case28(
|
||||
{"Input", "EndsTensorList"},
|
||||
{},
|
||||
{{"fp64_values", paddle::any{std::vector<double>{1}}}},
|
||||
{"Out"},
|
||||
{});
|
||||
EXPECT_STREQ(
|
||||
(*OpUtilsMap::Instance().GetArgumentMappingFn("set_value"))(arg_case28)
|
||||
.name,
|
||||
"set_value");
|
||||
|
||||
TestArgumentMappingContext arg_case29(
|
||||
{"Input", "EndsTensorList"},
|
||||
{},
|
||||
{{"int32_values", paddle::any{std::vector<int>{1}}}},
|
||||
{"Out"},
|
||||
{});
|
||||
EXPECT_STREQ(
|
||||
(*OpUtilsMap::Instance().GetArgumentMappingFn("set_value"))(arg_case29)
|
||||
.name,
|
||||
"set_value");
|
||||
|
||||
TestArgumentMappingContext arg_case30(
|
||||
{"Input", "EndsTensorList"},
|
||||
{},
|
||||
{{"int64_values", paddle::any{std::vector<int64_t>{1}}}},
|
||||
{"Out"},
|
||||
{});
|
||||
EXPECT_STREQ(
|
||||
(*OpUtilsMap::Instance().GetArgumentMappingFn("set_value"))(arg_case30)
|
||||
.name,
|
||||
"set_value");
|
||||
|
||||
TestArgumentMappingContext arg_case31(
|
||||
{"Input", "EndsTensorList"},
|
||||
{},
|
||||
{{"bool_values", paddle::any{std::vector<int>{1}}}},
|
||||
{"Out"},
|
||||
{});
|
||||
EXPECT_STREQ(
|
||||
(*OpUtilsMap::Instance().GetArgumentMappingFn("set_value"))(arg_case31)
|
||||
.name,
|
||||
"set_value");
|
||||
|
||||
TestArgumentMappingContext arg_case32(
|
||||
{"Input", "StepsTensorList", "ValueTensor"}, {}, {}, {"Out"}, {});
|
||||
EXPECT_STREQ(
|
||||
(*OpUtilsMap::Instance().GetArgumentMappingFn("set_value"))(arg_case32)
|
||||
.name,
|
||||
"set_value_with_tensor");
|
||||
|
||||
TestArgumentMappingContext arg_case33(
|
||||
{"Input", "StepsTensorList"},
|
||||
{},
|
||||
{{"fp32_values", paddle::any{std::vector<float>{1}}}},
|
||||
{"Out"},
|
||||
{});
|
||||
EXPECT_STREQ(
|
||||
(*OpUtilsMap::Instance().GetArgumentMappingFn("set_value"))(arg_case33)
|
||||
.name,
|
||||
"set_value");
|
||||
|
||||
TestArgumentMappingContext arg_case34(
|
||||
{"Input", "StepsTensorList"},
|
||||
{},
|
||||
{{"fp64_values", paddle::any{std::vector<double>{1}}}},
|
||||
{"Out"},
|
||||
{});
|
||||
EXPECT_STREQ(
|
||||
(*OpUtilsMap::Instance().GetArgumentMappingFn("set_value"))(arg_case34)
|
||||
.name,
|
||||
"set_value");
|
||||
|
||||
TestArgumentMappingContext arg_case35(
|
||||
{"Input", "StepsTensorList"},
|
||||
{},
|
||||
{{"int32_values", paddle::any{std::vector<int>{1}}}},
|
||||
{"Out"},
|
||||
{});
|
||||
EXPECT_STREQ(
|
||||
(*OpUtilsMap::Instance().GetArgumentMappingFn("set_value"))(arg_case35)
|
||||
.name,
|
||||
"set_value");
|
||||
|
||||
TestArgumentMappingContext arg_case36(
|
||||
{"Input", "StepsTensorList"},
|
||||
{},
|
||||
{{"int64_values", paddle::any{std::vector<int64_t>{1}}}},
|
||||
{"Out"},
|
||||
{});
|
||||
EXPECT_STREQ(
|
||||
(*OpUtilsMap::Instance().GetArgumentMappingFn("set_value"))(arg_case36)
|
||||
.name,
|
||||
"set_value");
|
||||
|
||||
TestArgumentMappingContext arg_case37(
|
||||
{"Input", "StepsTensorList"},
|
||||
{},
|
||||
{{"bool_values", paddle::any{std::vector<int>{1}}}},
|
||||
{"Out"},
|
||||
{});
|
||||
EXPECT_STREQ(
|
||||
(*OpUtilsMap::Instance().GetArgumentMappingFn("set_value"))(arg_case37)
|
||||
.name,
|
||||
"set_value");
|
||||
}
|
||||
|
||||
TEST(ARG_MAP, set_value_grad) {
|
||||
TestArgumentMappingContext arg_case(
|
||||
{"Out@GRAD", "StartsTensorList", "EndsTensorList"},
|
||||
{},
|
||||
{},
|
||||
{"Input@GRAD", "ValueTensor@GRAD"},
|
||||
{});
|
||||
EXPECT_STREQ(
|
||||
(*OpUtilsMap::Instance().GetArgumentMappingFn("set_value_grad"))(arg_case)
|
||||
.name,
|
||||
"set_value_grad");
|
||||
|
||||
TestArgumentMappingContext arg_case1(
|
||||
{"Out@GRAD", "StartsTensorList", "StepsTensorList"},
|
||||
{},
|
||||
{},
|
||||
{"Input@GRAD", "ValueTensor@GRAD"},
|
||||
{});
|
||||
EXPECT_STREQ((*OpUtilsMap::Instance().GetArgumentMappingFn("set_value_grad"))(
|
||||
arg_case1)
|
||||
.name,
|
||||
"set_value_grad");
|
||||
|
||||
TestArgumentMappingContext arg_case2({"Out@GRAD", "StartsTensorList"},
|
||||
{},
|
||||
{},
|
||||
{"Input@GRAD", "ValueTensor@GRAD"},
|
||||
{});
|
||||
EXPECT_STREQ((*OpUtilsMap::Instance().GetArgumentMappingFn("set_value_grad"))(
|
||||
arg_case2)
|
||||
.name,
|
||||
"set_value_grad");
|
||||
|
||||
TestArgumentMappingContext arg_case3(
|
||||
{"Out@GRAD", "EndsTensorList", "StepsTensorList"},
|
||||
{},
|
||||
{},
|
||||
{"Input@GRAD", "ValueTensor@GRAD"},
|
||||
{});
|
||||
EXPECT_STREQ((*OpUtilsMap::Instance().GetArgumentMappingFn("set_value_grad"))(
|
||||
arg_case3)
|
||||
.name,
|
||||
"set_value_grad");
|
||||
|
||||
TestArgumentMappingContext arg_case4({"Out@GRAD", "EndsTensorList"},
|
||||
{},
|
||||
{},
|
||||
{"Input@GRAD", "ValueTensor@GRAD"},
|
||||
{});
|
||||
EXPECT_STREQ((*OpUtilsMap::Instance().GetArgumentMappingFn("set_value_grad"))(
|
||||
arg_case4)
|
||||
.name,
|
||||
"set_value_grad");
|
||||
|
||||
TestArgumentMappingContext arg_case5({"Out@GRAD", "StepsTensorList"},
|
||||
{},
|
||||
{},
|
||||
{"Input@GRAD", "ValueTensor@GRAD"},
|
||||
{});
|
||||
EXPECT_STREQ((*OpUtilsMap::Instance().GetArgumentMappingFn("set_value_grad"))(
|
||||
arg_case5)
|
||||
.name,
|
||||
"set_value_grad");
|
||||
}
|
||||
|
||||
TEST(ARG_MAP, allclose) {
|
||||
TestArgumentMappingContext arg_case1(
|
||||
{"Input", "Other", "Rtol"},
|
||||
{},
|
||||
{{"atol", paddle::any(std::string{"1e-8"})},
|
||||
{"equal_nan", paddle::any(false)}},
|
||||
{"Out"},
|
||||
{});
|
||||
auto signature1 =
|
||||
(*OpUtilsMap::Instance().GetArgumentMappingFn("allclose"))(arg_case1);
|
||||
EXPECT_STREQ(signature1.name, "allclose");
|
||||
EXPECT_STREQ(signature1.attr_names[0], "Rtol");
|
||||
|
||||
TestArgumentMappingContext arg_case2(
|
||||
{"Input", "Other", "Atol"},
|
||||
{},
|
||||
{{"rtol", paddle::any(std::string{"1e-5"})},
|
||||
{"equal_nan", paddle::any(false)}},
|
||||
{"Out"},
|
||||
{});
|
||||
auto signature2 =
|
||||
(*OpUtilsMap::Instance().GetArgumentMappingFn("allclose"))(arg_case2);
|
||||
EXPECT_STREQ(signature2.name, "allclose");
|
||||
EXPECT_STREQ(signature2.attr_names[1], "Atol");
|
||||
}
|
||||
|
||||
TEST(ARG_MAP, reshape) {
|
||||
TestArgumentMappingContext arg_case1({"X", "ShapeTensor"}, {}, {}, {"Out"});
|
||||
auto signature1 =
|
||||
(*OpUtilsMap::Instance().GetArgumentMappingFn("reshape2"))(arg_case1);
|
||||
EXPECT_STREQ(signature1.name, "reshape");
|
||||
|
||||
TestArgumentMappingContext arg_case2({"X", "Shape"}, {}, {}, {"Out"});
|
||||
auto signature2 =
|
||||
(*OpUtilsMap::Instance().GetArgumentMappingFn("reshape2"))(arg_case2);
|
||||
EXPECT_STREQ(signature2.name, "reshape");
|
||||
|
||||
TestArgumentMappingContext arg_case3(
|
||||
{"X"}, {}, {{"shape", paddle::any(std::vector<int>({1, 2}))}}, {"Out"});
|
||||
auto signature3 =
|
||||
(*OpUtilsMap::Instance().GetArgumentMappingFn("reshape2"))(arg_case3);
|
||||
EXPECT_STREQ(signature3.name, "reshape");
|
||||
}
|
||||
|
||||
} // namespace tests
|
||||
} // namespace phi
|
||||
@@ -0,0 +1,120 @@
|
||||
/* Copyright (c) 2022 PaddlePaddle Authors. All Rights Reserved.
|
||||
|
||||
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. */
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <gtest/gtest.h>
|
||||
|
||||
#include <memory>
|
||||
#include <unordered_map>
|
||||
#include <unordered_set>
|
||||
|
||||
#include "paddle/phi/core/compat/op_utils.h"
|
||||
|
||||
namespace phi {
|
||||
namespace tests {
|
||||
|
||||
class TestArgumentMappingContext : public phi::ArgumentMappingContext {
|
||||
public:
|
||||
TestArgumentMappingContext(
|
||||
std::unordered_set<std::string> dense_tensor_ins,
|
||||
std::unordered_set<std::string> sr_ins,
|
||||
std::unordered_map<std::string, paddle::any> op_attrs,
|
||||
std::unordered_set<std::string> dense_tensor_outs,
|
||||
std::unordered_set<std::string> sr_outs = {})
|
||||
: dense_tensor_inputs(dense_tensor_ins),
|
||||
selected_rows_inputs(sr_ins),
|
||||
attrs(op_attrs),
|
||||
dense_tensor_outputs(dense_tensor_outs),
|
||||
selected_rows_outputs(sr_outs) {}
|
||||
|
||||
bool HasInput(const std::string& name) const override {
|
||||
return dense_tensor_inputs.count(name) > 0 ||
|
||||
selected_rows_inputs.count(name) > 0;
|
||||
}
|
||||
|
||||
bool HasOutput(const std::string& name) const override {
|
||||
return dense_tensor_outputs.count(name) > 0 ||
|
||||
selected_rows_outputs.count(name) > 0;
|
||||
}
|
||||
|
||||
bool HasAttr(const std::string& name) const override {
|
||||
return attrs.count(name) > 0;
|
||||
}
|
||||
|
||||
paddle::any Attr(const std::string& name) const override {
|
||||
return attrs.at(name);
|
||||
}
|
||||
|
||||
size_t InputSize(const std::string& name) const override {
|
||||
return dense_tensor_inputs.count(name) + selected_rows_inputs.count(name);
|
||||
}
|
||||
|
||||
size_t OutputSize(const std::string& name) const override {
|
||||
return dense_tensor_outputs.size() + selected_rows_outputs.size();
|
||||
}
|
||||
|
||||
bool IsDenseTensorInput(const std::string& name) const override {
|
||||
return dense_tensor_inputs.count(name) > 0;
|
||||
}
|
||||
|
||||
bool IsDenseTensorInputs(const std::string& name) const override {
|
||||
return dense_tensor_inputs.count(name) > 0;
|
||||
}
|
||||
|
||||
bool IsSelectedRowsInput(const std::string& name) const override {
|
||||
return selected_rows_inputs.count(name) > 0;
|
||||
}
|
||||
|
||||
bool IsSelectedRowsInputs(const std::string& name) const override {
|
||||
return selected_rows_inputs.count(name) > 0;
|
||||
}
|
||||
|
||||
// add member if needed
|
||||
bool IsDenseTensorVectorInput(const std::string& name) const override {
|
||||
return false;
|
||||
}
|
||||
|
||||
bool IsSparseCooTensorInput(const std::string& name) const override {
|
||||
return false;
|
||||
}
|
||||
|
||||
bool IsSparseCsrTensorInput(const std::string& name) const override {
|
||||
return false;
|
||||
}
|
||||
|
||||
bool IsSparseCooTensorOutput(const std::string& name) const override {
|
||||
return false;
|
||||
}
|
||||
|
||||
bool IsDenseTensorOutput(const std::string& name) const override {
|
||||
return dense_tensor_outputs.count(name) > 0;
|
||||
}
|
||||
|
||||
bool IsSelectedRowsOutput(const std::string& name) const override {
|
||||
return selected_rows_outputs.count(name) > 0;
|
||||
}
|
||||
|
||||
bool IsForInferShape() const override { return false; }
|
||||
|
||||
private:
|
||||
const std::unordered_set<std::string> dense_tensor_inputs;
|
||||
const std::unordered_set<std::string> selected_rows_inputs;
|
||||
const std::unordered_map<std::string, paddle::any> attrs;
|
||||
const std::unordered_set<std::string> dense_tensor_outputs;
|
||||
const std::unordered_set<std::string> selected_rows_outputs;
|
||||
};
|
||||
|
||||
} // namespace tests
|
||||
} // namespace phi
|
||||
Reference in New Issue
Block a user