diff options
author | Jeremy Johnson <jeremy.johnson@arm.com> | 2023-10-24 14:45:12 +0100 |
---|---|---|
committer | Eric Kunze <eric.kunze@arm.com> | 2023-10-25 17:47:09 +0000 |
commit | fc5e34e41afc07ea5ed03e3c5d4b5be92bef7fd7 (patch) | |
tree | cbb2556e96ddf1e53dff888e54e76586f46e00fc /reference_model/src/generate | |
parent | fd8c8fe887d49223b4d4c66d38e79d6e4c648fef (diff) | |
download | reference_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')
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, |