aboutsummaryrefslogtreecommitdiff
path: root/reference_model/src/generate
diff options
context:
space:
mode:
authorJeremy Johnson <jeremy.johnson@arm.com>2023-10-24 14:45:12 +0100
committerEric Kunze <eric.kunze@arm.com>2023-10-25 17:47:09 +0000
commitfc5e34e41afc07ea5ed03e3c5d4b5be92bef7fd7 (patch)
treecbb2556e96ddf1e53dff888e54e76586f46e00fc /reference_model/src/generate
parentfd8c8fe887d49223b4d4c66d38e79d6e4c648fef (diff)
downloadreference_model-fc5e34e41afc07ea5ed03e3c5d4b5be92bef7fd7.tar.gz
Improve verfiy and generate library validation
Improved libraries validation to catch unknown values. Improved verify output to match generate library. Refactored generate tests to use less code duplication. Signed-off-by: Jeremy Johnson <jeremy.johnson@arm.com> Change-Id: I9c38745fbc8e70f46c19ddae6c62ee248d33b5f1
Diffstat (limited to 'reference_model/src/generate')
-rw-r--r--reference_model/src/generate/generate_dot_product.cc2
-rw-r--r--reference_model/src/generate/generate_dot_product_states.cc2
-rw-r--r--reference_model/src/generate/generate_entry.cc1
-rw-r--r--reference_model/src/generate/generate_utils.cc15
-rw-r--r--reference_model/src/generate/generate_utils.h1
5 files changed, 17 insertions, 4 deletions
diff --git a/reference_model/src/generate/generate_dot_product.cc b/reference_model/src/generate/generate_dot_product.cc
index 90710ba..1d2325f 100644
--- a/reference_model/src/generate/generate_dot_product.cc
+++ b/reference_model/src/generate/generate_dot_product.cc
@@ -91,7 +91,7 @@ bool generateDotProduct(const GenerateConfig& cfg, void* data, size_t size)
case tosa::Op_MATMUL:
return generateMatMul(cfg, *generator, data, size);
default:
- WARNING("[Generator][DP] Unsupported operator");
+ WARNING("[Generator][DP] Unsupported operator.");
return false;
}
diff --git a/reference_model/src/generate/generate_dot_product_states.cc b/reference_model/src/generate/generate_dot_product_states.cc
index d3eeb6d..649e55e 100644
--- a/reference_model/src/generate/generate_dot_product_states.cc
+++ b/reference_model/src/generate/generate_dot_product_states.cc
@@ -309,9 +309,11 @@ std::unique_ptr<IDotProductGenerator> pickDotProductGenerator(const GenerateConf
case 5:
return std::make_unique<GeneratorS5>(cfg.inputPos, dpinfo.ks, B);
default:
+ WARNING("[Generator][DP] Unsupported dot product test series for generator.");
return nullptr;
}
}
+ WARNING("[Generator][DP] Unsupported data types for generator.");
return nullptr;
}
diff --git a/reference_model/src/generate/generate_entry.cc b/reference_model/src/generate/generate_entry.cc
index 95dbe8f..e7a0044 100644
--- a/reference_model/src/generate/generate_entry.cc
+++ b/reference_model/src/generate/generate_entry.cc
@@ -56,7 +56,6 @@ extern "C"
auto cfg = TosaReference::parseGenerateConfig(config_json, tensor_name);
if (!cfg)
{
- WARNING("[Generator] Invalid json config.");
return false;
}
diff --git a/reference_model/src/generate/generate_utils.cc b/reference_model/src/generate/generate_utils.cc
index c32d0fb..da16632 100644
--- a/reference_model/src/generate/generate_utils.cc
+++ b/reference_model/src/generate/generate_utils.cc
@@ -23,6 +23,7 @@ namespace tosa
NLOHMANN_JSON_SERIALIZE_ENUM(DType,
{
+ { DType::DType_UNKNOWN, "UNKNOWN" },
{ DType::DType_BOOL, "BOOL" },
{ DType::DType_INT4, "INT4" },
{ DType::DType_INT8, "INT8" },
@@ -36,6 +37,7 @@ NLOHMANN_JSON_SERIALIZE_ENUM(DType,
NLOHMANN_JSON_SERIALIZE_ENUM(Op,
{
+ { Op::Op_UNKNOWN, "UNKNOWN" },
{ Op::Op_MATMUL, "MATMUL" },
})
@@ -46,6 +48,7 @@ namespace TosaReference
NLOHMANN_JSON_SERIALIZE_ENUM(GeneratorType,
{
+ { GeneratorType::Unknown, "UNKNOWN" },
{ GeneratorType::PseudoRandom, "PSEUDO_RANDOM" },
{ GeneratorType::DotProduct, "DOT_PRODUCT" },
{ GeneratorType::OpFullRange, "OP_FULL_RANGE" },
@@ -53,6 +56,7 @@ NLOHMANN_JSON_SERIALIZE_ENUM(GeneratorType,
{ GeneratorType::OpSpecial, "OP_SPECIAL" },
})
+// NOTE: This assumes it's VARIABLE if the InputType is not recognized
NLOHMANN_JSON_SERIALIZE_ENUM(InputType,
{
{ InputType::Variable, "VARIABLE" },
@@ -96,14 +100,21 @@ std::optional<GenerateConfig> parseGenerateConfig(const char* json, const char*
auto jsonCfg = nlohmann::json::parse(json, nullptr, /* allow exceptions */ false);
if (jsonCfg.is_discarded())
+ {
+ WARNING("[Generator] Invalid json config.");
return std::nullopt;
+ }
if (!jsonCfg.contains("tensors"))
+ {
+ WARNING("[Generator] Missing tensors in json config.");
return std::nullopt;
-
+ }
const auto& tensors = jsonCfg["tensors"];
if (!tensors.contains(tensorName))
+ {
+ WARNING("[Generator] Missing tensor %s in json config.", tensorName);
return std::nullopt;
-
+ }
const auto& namedTensor = tensors[tensorName];
return namedTensor.get<GenerateConfig>();
}
diff --git a/reference_model/src/generate/generate_utils.h b/reference_model/src/generate/generate_utils.h
index 2d5b7f8..e8e67bb 100644
--- a/reference_model/src/generate/generate_utils.h
+++ b/reference_model/src/generate/generate_utils.h
@@ -28,6 +28,7 @@ namespace TosaReference
/// \brief Supported generator types
enum class GeneratorType
{
+ Unknown,
PseudoRandom,
DotProduct,
OpFullRange,