diff --git a/tf_adapter/tests/st/util/testcase/npu_attrs_test.cc b/tf_adapter/tests/st/util/testcase/npu_attrs_test.cc index 408580c90225854e35e93fe2a6d89a94c5fdb096..032af061056c682fac42b8e0e52008af94b49bc1 100644 --- a/tf_adapter/tests/st/util/testcase/npu_attrs_test.cc +++ b/tf_adapter/tests/st/util/testcase/npu_attrs_test.cc @@ -150,6 +150,22 @@ TEST_F(NpuAttrTest, CheckPrecisionModeV2) { EXPECT_EQ(s.ok(), false); } +TEST_F(NpuAttrTest, CheckVariableUse1gHugePageInvalid) { + GraphOptimizationPassOptions options; + SessionOptions session_options; + session_options.config.mutable_graph_options()->mutable_optimizer_options()->set_do_function_inlining(true); + auto *custom_config = + session_options.config.mutable_graph_options()->mutable_rewrite_options()->add_custom_optimizers(); + custom_config->set_name("NpuOptimizer"); + options.session_options = &session_options; + + AttrValue precision_mode_v2 = AttrValue(); + precision_mode_v2.set_i(3); + (*custom_config->mutable_parameter_map())["variable_use_1g_huge_page"] = precision_mode_v2; + Status s = NpuAttrs::SetNpuOptimizerAttr(options, reinterpret_cast(1)); + EXPECT_EQ(s.ok(), false); +} + TEST_F(NpuAttrTest, CheckModifyMixList_Failed) { GraphOptimizationPassOptions options; SessionOptions session_options; diff --git a/tf_adapter/tests/ut/util/testcase/npu_attrs_test.cc b/tf_adapter/tests/ut/util/testcase/npu_attrs_test.cc index 58494d316bd3233e96f72ac8ef324424b3f399eb..0f4001651ff8ab09dd33169e64526a24fac654c7 100644 --- a/tf_adapter/tests/ut/util/testcase/npu_attrs_test.cc +++ b/tf_adapter/tests/ut/util/testcase/npu_attrs_test.cc @@ -241,6 +241,22 @@ TEST_F(NpuAttrTest, CheckPrecisionModeV2) { EXPECT_EQ(s.ok(), false); } +TEST_F(NpuAttrTest, CheckVariableUse1gHugePageInvalid) { + GraphOptimizationPassOptions options; + SessionOptions session_options; + session_options.config.mutable_graph_options()->mutable_optimizer_options()->set_do_function_inlining(true); + auto *custom_config = + session_options.config.mutable_graph_options()->mutable_rewrite_options()->add_custom_optimizers(); + custom_config->set_name("NpuOptimizer"); + options.session_options = &session_options; + + AttrValue precision_mode_v2 = AttrValue(); + precision_mode_v2.set_i(3); + (*custom_config->mutable_parameter_map())["variable_use_1g_huge_page"] = precision_mode_v2; + Status s = NpuAttrs::SetNpuOptimizerAttr(options, reinterpret_cast(1)); + EXPECT_EQ(s.ok(), false); +} + TEST_F(NpuAttrTest, CheckPrecisionModeV2_Failed_WhenAssignedBoth) { GraphOptimizationPassOptions options; SessionOptions session_options; diff --git a/tf_adapter/util/npu_attrs.cc b/tf_adapter/util/npu_attrs.cc index 8e580ab6e13f401a822df89e468f2c8a245121f1..f1e23afb0bd80f51c1c36dd4e7bf0286eacfdcd1 100644 --- a/tf_adapter/util/npu_attrs.cc +++ b/tf_adapter/util/npu_attrs.cc @@ -2383,6 +2383,8 @@ Status NpuAttrs::SetNpuOptimizerAttr(const GraphOptimizationPassOptions &options } if (params.count("variable_use_1g_huge_page") > 0) { variable_use_1g_huge_page = std::to_string(params.at("variable_use_1g_huge_page").i()); + const static std::vector kAllowList = {0, 1, 2}; + NPU_REQUIRES_OK(CheckValueAllowed(params.at("variable_use_1g_huge_page").i(), kAllowList)); } if (params.count("memory_optimization_policy") > 0) { memory_optimization_policy = params.at("memory_optimization_policy").s();