From 59d8f50f5b3399a6255643aad0e5857e30370761 Mon Sep 17 00:00:00 2001 From: Jeremy Johnson Date: Wed, 7 Feb 2024 10:48:09 +0000 Subject: Fix REDUCE ops to support 8k MAX_RANK Signed-off-by: Jeremy Johnson Change-Id: I365da379f599e5eca1841e6d299b4005a7b0f082 --- reference_model/src/ops/reduction.cc | 8 +- verif/conformance/tosa_base_profile_ops_info.json | 138 +++++++++++++++++++++- verif/conformance/tosa_main_profile_ops_info.json | 128 +++++++++++++++++++- 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::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::~ReduceNode() template int ReduceNode::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, -- cgit v1.2.1