aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJeremy Johnson <jeremy.johnson@arm.com>2024-02-07 10:48:09 +0000
committerEric Kunze <eric.kunze@arm.com>2024-02-08 21:06:29 +0000
commit59d8f50f5b3399a6255643aad0e5857e30370761 (patch)
tree0139f98187cc15c38bf29fc5022dce514470c6b0
parent32d0b5af61d978d9932ac5576b42203e57881168 (diff)
downloadreference_model-59d8f50f5b3399a6255643aad0e5857e30370761.tar.gz
Fix REDUCE ops to support 8k MAX_RANK
Signed-off-by: Jeremy Johnson <jeremy.johnson@arm.com> Change-Id: I365da379f599e5eca1841e6d299b4005a7b0f082
-rw-r--r--reference_model/src/ops/reduction.cc8
-rw-r--r--verif/conformance/tosa_base_profile_ops_info.json138
-rw-r--r--verif/conformance/tosa_main_profile_ops_info.json128
-rw-r--r--verif/generator/tosa_test_gen.py6
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,