diff options
-rw-r--r-- | reference_model/src/ops/reduction.cc | 8 | ||||
-rw-r--r-- | verif/conformance/tosa_base_profile_ops_info.json | 138 | ||||
-rw-r--r-- | verif/conformance/tosa_main_profile_ops_info.json | 128 | ||||
-rw-r--r-- | verif/generator/tosa_test_gen.py | 6 |
4 files changed, 263 insertions, 17 deletions
diff --git a/reference_model/src/ops/reduction.cc b/reference_model/src/ops/reduction.cc index 2eb764a..c9b85af 100644 --- a/reference_model/src/ops/reduction.cc +++ b/reference_model/src/ops/reduction.cc @@ -1,5 +1,5 @@ -// Copyright (c) 2020-2023, ARM Limited. +// Copyright (c) 2020-2024, ARM Limited. // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. @@ -25,7 +25,7 @@ ReduceNode<Rank, Dtype>::ReduceNode(SubgraphTraverser* sgt_, const Op& op_, Tosa : GraphNode(sgt_, op_, id_) { setRequiredOperands(1, 1); - setRequiredRank(1, 4); + setRequiredRank(1); INIT_ATTRIBUTE(Axis); } @@ -40,6 +40,10 @@ ReduceNode<Rank, Dtype>::~ReduceNode() template <int Rank, TOSA_REF_TYPE Dtype> int ReduceNode<Rank, Dtype>::checkTensorAttributes() { + // Check Tosa Level + auto tosa_level = g_func_config.tosa_level; + LEVEL_CHECK(Rank <= tosa_level.MAX_RANK, "Rank should be smaller than or equal to MAX_RANK"); + if (validateRequiredOperands()) return 1; diff --git a/verif/conformance/tosa_base_profile_ops_info.json b/verif/conformance/tosa_base_profile_ops_info.json index 54bce21..01f78d6 100644 --- a/verif/conformance/tosa_base_profile_ops_info.json +++ b/verif/conformance/tosa_base_profile_ops_info.json @@ -2879,7 +2879,15 @@ "--target-dtype", "bool", "--tensor-dim-range", - "1,32" + "1,32", + "--target-rank", + "1", + "--target-rank", + "2", + "--target-rank", + "3", + "--target-rank", + "4" ], [ "--target-dtype", @@ -2890,6 +2898,22 @@ "2,65538,1,1" ] ] + }, + "8k_level": { + "from_version": "v0.80.0", + "no_negative_tests": "true", + "generator_args": [ + [ + "--target-dtype", + "bool", + "--tensor-dim-range", + "1,10", + "--target-rank", + "5", + "--target-rank", + "6" + ] + ] } }, "selection": { @@ -2916,7 +2940,15 @@ "--target-dtype", "bool", "--tensor-dim-range", - "1,32" + "1,32", + "--target-rank", + "1", + "--target-rank", + "2", + "--target-rank", + "3", + "--target-rank", + "4" ], [ "--target-dtype", @@ -2927,6 +2959,22 @@ "2,65538,1,1" ] ] + }, + "8k_level": { + "from_version": "v0.80.0", + "no_negative_tests": "true", + "generator_args": [ + [ + "--target-dtype", + "bool", + "--tensor-dim-range", + "1,9", + "--target-rank", + "5", + "--target-rank", + "6" + ] + ] } }, "selection": { @@ -2957,7 +3005,15 @@ "--target-dtype", "int32", "--tensor-dim-range", - "1,32" + "1,32", + "--target-rank", + "1", + "--target-rank", + "2", + "--target-rank", + "3", + "--target-rank", + "4" ], [ "--target-dtype", @@ -2968,6 +3024,26 @@ "2,65538,1,1" ] ] + }, + "8k_level": { + "from_version": "v0.80.0", + "no_negative_tests": "true", + "generator_args": [ + [ + "--target-dtype", + "int8", + "--target-dtype", + "int16", + "--target-dtype", + "int32", + "--tensor-dim-range", + "1,11", + "--target-rank", + "5", + "--target-rank", + "6" + ] + ] } }, "selection": { @@ -2998,7 +3074,15 @@ "--target-dtype", "int32", "--tensor-dim-range", - "1,24" + "1,24", + "--target-rank", + "1", + "--target-rank", + "2", + "--target-rank", + "3", + "--target-rank", + "4" ], [ "--target-dtype", @@ -3009,6 +3093,26 @@ "2,65535,1,1" ] ] + }, + "8k_level": { + "from_version": "v0.80.0", + "no_negative_tests": "true", + "generator_args": [ + [ + "--target-dtype", + "int8", + "--target-dtype", + "int16", + "--target-dtype", + "int32", + "--tensor-dim-range", + "2,10", + "--target-rank", + "5", + "--target-rank", + "6" + ] + ] } }, "selection": { @@ -3035,7 +3139,15 @@ "--target-dtype", "int32", "--tensor-dim-range", - "1,32" + "1,32", + "--target-rank", + "1", + "--target-rank", + "2", + "--target-rank", + "3", + "--target-rank", + "4" ], [ "--target-dtype", @@ -3046,6 +3158,22 @@ "65536,1,1,2" ] ] + }, + "8k_level": { + "from_version": "v0.80.0", + "no_negative_tests": "true", + "generator_args": [ + [ + "--target-dtype", + "int32", + "--tensor-dim-range", + "1,12", + "--target-rank", + "5", + "--target-rank", + "6" + ] + ] } }, "selection": { diff --git a/verif/conformance/tosa_main_profile_ops_info.json b/verif/conformance/tosa_main_profile_ops_info.json index dc28bef..7792417 100644 --- a/verif/conformance/tosa_main_profile_ops_info.json +++ b/verif/conformance/tosa_main_profile_ops_info.json @@ -2450,7 +2450,15 @@ "--fp-values-range", "-max,max", "--tensor-dim-range", - "1,32" + "1,32", + "--target-rank", + "1", + "--target-rank", + "2", + "--target-rank", + "3", + "--target-rank", + "4" ], [ "--target-dtype", @@ -2463,6 +2471,28 @@ "1,1,65539,2" ] ] + }, + "8k_level": { + "from_version": "v0.80.0", + "no_negative_tests": "true", + "generator_args": [ + [ + "--target-dtype", + "fp32", + "--target-dtype", + "fp16", + "--target-dtype", + "bf16", + "--fp-values-range", + "-max,max", + "--tensor-dim-range", + "1,10", + "--target-rank", + "5", + "--target-rank", + "6" + ] + ] } }, "selection": { @@ -2496,7 +2526,15 @@ "--fp-values-range", "-max,max", "--tensor-dim-range", - "1,32" + "1,32", + "--target-rank", + "1", + "--target-rank", + "2", + "--target-rank", + "3", + "--target-rank", + "4" ], [ "--target-dtype", @@ -2509,6 +2547,28 @@ "1,65539,2,1" ] ] + }, + "8k_level": { + "from_version": "v0.80.0", + "no_negative_tests": "true", + "generator_args": [ + [ + "--target-dtype", + "fp32", + "--target-dtype", + "fp16", + "--target-dtype", + "bf16", + "--fp-values-range", + "-max,max", + "--tensor-dim-range", + "1,9", + "--target-rank", + "5", + "--target-rank", + "6" + ] + ] } }, "selection": { @@ -2541,7 +2601,15 @@ "--fp-values-range", "-max,max", "--tensor-dim-range", - "1,34" + "1,34", + "--target-rank", + "1", + "--target-rank", + "2", + "--target-rank", + "3", + "--target-rank", + "4" ], [ "--target-dtype", @@ -2554,6 +2622,28 @@ "1,3,2,65541" ] ] + }, + "8k_level": { + "from_version": "v0.80.0", + "no_negative_tests": "true", + "generator_args": [ + [ + "--target-dtype", + "fp32", + "--target-dtype", + "fp16", + "--target-dtype", + "bf16", + "--fp-values-range", + "-max,max", + "--tensor-dim-range", + "1,11", + "--target-rank", + "5", + "--target-rank", + "6" + ] + ] } }, "selection": { @@ -2590,7 +2680,15 @@ "--target-rank", "4", "--tensor-dim-range", - "10,37" + "10,37", + "--target-rank", + "1", + "--target-rank", + "2", + "--target-rank", + "3", + "--target-rank", + "4" ], [ "--target-dtype", @@ -2627,6 +2725,28 @@ "1,65537,1,1" ] ] + }, + "8k_level": { + "from_version": "v0.80.0", + "no_negative_tests": "true", + "generator_args": [ + [ + "--target-dtype", + "fp32", + "--target-dtype", + "fp16", + "--target-dtype", + "bf16", + "--fp-values-range", + "-max,max", + "--tensor-dim-range", + "5,12", + "--target-rank", + "5", + "--target-rank", + "6" + ] + ] } }, "selection": { diff --git a/verif/generator/tosa_test_gen.py b/verif/generator/tosa_test_gen.py index ae689b4..f5eca18 100644 --- a/verif/generator/tosa_test_gen.py +++ b/verif/generator/tosa_test_gen.py @@ -4201,7 +4201,6 @@ class TosaTestGen: "reduce_all": { "op": Op.REDUCE_ALL, "operands": (1, 0), - "rank": (1, 4), "build_fcn": ( build_reduce, TosaTensorGen.tgBasic, @@ -4223,7 +4222,6 @@ class TosaTestGen: "reduce_any": { "op": Op.REDUCE_ANY, "operands": (1, 0), - "rank": (1, 4), "build_fcn": ( build_reduce, TosaTensorGen.tgBasic, @@ -4245,7 +4243,6 @@ class TosaTestGen: "reduce_max": { "op": Op.REDUCE_MAX, "operands": (1, 0), - "rank": (1, 4), "build_fcn": ( build_reduce, TosaTensorGen.tgBasic, @@ -4270,7 +4267,6 @@ class TosaTestGen: "reduce_min": { "op": Op.REDUCE_MIN, "operands": (1, 0), - "rank": (1, 4), "build_fcn": ( build_reduce, TosaTensorGen.tgBasic, @@ -4295,7 +4291,6 @@ class TosaTestGen: "reduce_product": { "op": Op.REDUCE_PRODUCT, "operands": (1, 0), - "rank": (1, 4), "build_fcn": ( build_reduce, TosaTensorGen.tgBasic, @@ -4320,7 +4315,6 @@ class TosaTestGen: "reduce_sum": { "op": Op.REDUCE_SUM, "operands": (1, 0), - "rank": (1, 4), "build_fcn": ( build_reduce, TosaTensorGen.tgBasic, |