From 3e9cb04f709c01eb53148191edf62334b924e9ca Mon Sep 17 00:00:00 2001 From: Stephane Del Pino <stephane.delpino44@gmail.com> Date: Thu, 14 Nov 2024 01:31:12 +0100 Subject: [PATCH] Improve parallel checker data file format --- src/dev/ParallelChecker.hpp | 36 +++++++++++++++++++++------- tests/test_ParallelChecker_read.cpp | 33 +++++++++++++------------ tests/test_ParallelChecker_write.cpp | 4 ++-- 3 files changed, 47 insertions(+), 26 deletions(-) diff --git a/src/dev/ParallelChecker.hpp b/src/dev/ParallelChecker.hpp index 97729f38a..ab9f092fb 100644 --- a/src/dev/ParallelChecker.hpp +++ b/src/dev/ParallelChecker.hpp @@ -461,7 +461,10 @@ class ParallelChecker << rang::fg::reset << ")\n"; is_comparable = false; } - std::vector reference_data_shape = group.getDataSet(reference_name).getSpace().getDimensions(); + + auto data_group = group.getGroup("data"); + + std::vector reference_data_shape = data_group.getDataSet(reference_name).getSpace().getDimensions(); if (reference_data_shape.size() != data_shape.size()) { std::cout << rang::fg::cyan << " | " << rang::fgB::red << "different data shape kind: reference (" << rang::fgB::yellow << reference_data_shape.size() << "d array" << rang::fgB::red << ") / target (" @@ -583,7 +586,9 @@ class ParallelChecker group.createAttribute("item_type", std::string{itemName(item_type)}); group.createAttribute("data_type", demangle<DataType>()); - this->_writeArray(group, name, item_value.arrayView()); + auto data_group = group.createGroup("data"); + + this->_writeArray(data_group, name, item_value.arrayView()); this->_writeItemNumbers<item_type>(i_connectivity, file, group); @@ -622,7 +627,8 @@ class ParallelChecker group.createAttribute("item_type", std::string{itemName(item_type)}); group.createAttribute("data_type", demangle<DataType>()); - this->_writeTable(group, name, item_array.tableView()); + auto data_group = group.createGroup("data"); + this->_writeTable(data_group, name, item_array.tableView()); this->_writeItemNumbers<item_type>(i_connectivity, file, group); @@ -666,7 +672,8 @@ class ParallelChecker group.createAttribute("data_type", demangle<DataType>()); - this->_writeArray(group, name, subitem_value_per_item.arrayView()); + auto data_group = group.createGroup("data"); + this->_writeArray(data_group, name, subitem_value_per_item.arrayView()); this->_writeItemNumbers<item_type>(i_connectivity, file, group); this->_writeItemNumbers<sub_item_type>(i_connectivity, file, group); @@ -712,7 +719,8 @@ class ParallelChecker group.createAttribute("data_type", demangle<DataType>()); - this->_writeTable(group, name, subitem_value_per_item.tableView()); + auto data_group = group.createGroup("data"); + this->_writeTable(data_group, name, subitem_value_per_item.tableView()); this->_writeItemNumbers<item_type>(i_connectivity, file, group); this->_writeItemNumbers<sub_item_type>(i_connectivity, file, group); @@ -753,7 +761,10 @@ class ParallelChecker Array<const int> reference_item_numbers = this->_readArray<int>(group, std::string{itemName(item_type)} + "_numbers"); - Array<const DataType> reference_item_value = this->_readArray<DataType>(group, reference_name); + + auto data_group = group.getGroup("data"); + + Array<const DataType> reference_item_value = this->_readArray<DataType>(data_group, reference_name); Array<const int> item_numbers = this->_getItemNumber<item_type>(i_connectivity); @@ -880,7 +891,10 @@ class ParallelChecker Array<const int> reference_item_numbers = this->_readArray<int>(group, std::string{itemName(item_type)} + "_numbers"); - Table<const DataType> reference_item_array = this->_readTable<DataType>(group, reference_name); + + auto data_group = group.getGroup("data"); + + Table<const DataType> reference_item_array = this->_readTable<DataType>(data_group, reference_name); Array<const int> item_numbers = this->_getItemNumber<item_type>(i_connectivity); @@ -1020,7 +1034,9 @@ class ParallelChecker Array<const IndexType> reference_subitem_rows_map = this->_readArray<IndexType>(group, "rows_map"); Array<const IndexType> reference_subitem_index = this->_readArray<IndexType>(group, "sub_item_index"); - Array<const DataType> reference_subitem_value_per_item = this->_readArray<DataType>(group, reference_name); + auto data_group = group.getGroup("data"); + + Array<const DataType> reference_subitem_value_per_item = this->_readArray<DataType>(data_group, reference_name); Array<const int> item_numbers = this->_getItemNumber<item_type>(i_connectivity); Array<const int> sub_item_numbers = this->_getItemNumber<sub_item_type>(i_connectivity); @@ -1211,7 +1227,9 @@ class ParallelChecker Array<const IndexType> reference_subitem_rows_map = this->_readArray<IndexType>(group, "rows_map"); Array<const IndexType> reference_subitem_index = this->_readArray<IndexType>(group, "sub_item_index"); - Table<const DataType> reference_subitem_array_per_item = this->_readTable<DataType>(group, reference_name); + auto data_group = group.getGroup("data"); + + Table<const DataType> reference_subitem_array_per_item = this->_readTable<DataType>(data_group, reference_name); Array<const int> item_numbers = this->_getItemNumber<item_type>(i_connectivity); Array<const int> sub_item_numbers = this->_getItemNumber<sub_item_type>(i_connectivity); diff --git a/tests/test_ParallelChecker_read.cpp b/tests/test_ParallelChecker_read.cpp index 40628382f..0bb1d5566 100644 --- a/tests/test_ParallelChecker_read.cpp +++ b/tests/test_ParallelChecker_read.cpp @@ -331,7 +331,7 @@ TEST_CASE("ParallelChecker_read", "[dev]") for (size_t i = 0; i < cell_numbers.size(); ++i) { values[i] = std::sin(cell_numbers[i]); } - group.createDataSet<double>(name, HighFive::DataSpace{std::vector<size_t>{cell_numbers.size()}}) + group.createDataSet<double>("data/" + name, HighFive::DataSpace{std::vector<size_t>{cell_numbers.size()}}) .write_raw<double>(&(values[0])); group.createAttribute("filename", source_location.filename()); @@ -512,8 +512,9 @@ TEST_CASE("ParallelChecker_read", "[dev]") } } group - .createDataSet<double>(name, HighFive::DataSpace{std::vector<size_t>{double_table.numberOfRows(), - double_table.numberOfColumns()}}) + .createDataSet<double>("data/" + name, + HighFive::DataSpace{ + std::vector<size_t>{double_table.numberOfRows(), double_table.numberOfColumns()}}) .write_raw<double>(&(double_table(0, 0))); group.createAttribute("filename", source_location.filename()); @@ -654,7 +655,7 @@ TEST_CASE("ParallelChecker_read", "[dev]") } } group - .createDataSet(name, HighFive::DataSpace{std::vector<size_t>{node_numbers.size()}}, + .createDataSet("data/" + name, HighFive::DataSpace{std::vector<size_t>{node_numbers.size()}}, test_TinyVectorDataType<DataType>{}) .template write_raw<double>(&(values[0][0]), test_TinyVectorDataType<DataType>{}); @@ -751,7 +752,7 @@ TEST_CASE("ParallelChecker_read", "[dev]") } } group - .createDataSet(name, + .createDataSet("data/" + name, HighFive::DataSpace{std::vector<size_t>{dt_table.numberOfRows(), dt_table.numberOfColumns()}}, test_TinyMatrixDataType<DataType>{}) .template write_raw<double>(&(dt_table[0][0](0, 0)), test_TinyMatrixDataType<DataType>{}); @@ -900,7 +901,7 @@ TEST_CASE("ParallelChecker_read", "[dev]") } } group - .createDataSet(name, HighFive::DataSpace{std::vector<size_t>{node_numbers.size()}}, + .createDataSet("data/" + name, HighFive::DataSpace{std::vector<size_t>{node_numbers.size()}}, test_TinyMatrixDataType<DataType>{}) .template write_raw<double>(&(values[0](0, 0)), test_TinyMatrixDataType<DataType>{}); @@ -997,7 +998,7 @@ TEST_CASE("ParallelChecker_read", "[dev]") } } group - .createDataSet(name, + .createDataSet("data/" + name, HighFive::DataSpace{std::vector<size_t>{dt_table.numberOfRows(), dt_table.numberOfColumns()}}, test_TinyVectorDataType<DataType>{}) .template write_raw<double>(&(dt_table[0][0][0]), test_TinyVectorDataType<DataType>{}); @@ -1158,7 +1159,7 @@ TEST_CASE("ParallelChecker_read", "[dev]") } } - group.createDataSet<double>(name, HighFive::DataSpace{std::vector<size_t>{values.size()}}) + group.createDataSet<double>("data/" + name, HighFive::DataSpace{std::vector<size_t>{values.size()}}) .write_raw<double>(&(values[0])); group.createAttribute("filename", source_location.filename()); @@ -1376,8 +1377,9 @@ TEST_CASE("ParallelChecker_read", "[dev]") } } group - .createDataSet<double>(name, HighFive::DataSpace{std::vector<size_t>{double_table.numberOfRows(), - double_table.numberOfColumns()}}) + .createDataSet<double>("data/" + name, + HighFive::DataSpace{ + std::vector<size_t>{double_table.numberOfRows(), double_table.numberOfColumns()}}) .write_raw<double>(&(double_table(0, 0))); group.createAttribute("filename", source_location.filename()); @@ -1527,7 +1529,7 @@ TEST_CASE("ParallelChecker_read", "[dev]") } } group - .createDataSet(name, + .createDataSet("data/" + name, HighFive::DataSpace{std::vector<size_t>{dt_table.numberOfRows(), dt_table.numberOfColumns()}}, test_TinyMatrixDataType<DataType>{}) .template write_raw<double>(&(dt_table[0][0](0, 0)), test_TinyMatrixDataType<DataType>{}); @@ -1688,7 +1690,7 @@ TEST_CASE("ParallelChecker_read", "[dev]") } } - group.createDataSet<double>(name, HighFive::DataSpace{std::vector<size_t>{values.size()}}) + group.createDataSet<double>("data/" + name, HighFive::DataSpace{std::vector<size_t>{values.size()}}) .write_raw<double>(&(values[0])); group.createAttribute("filename", source_location.filename()); @@ -1891,7 +1893,7 @@ TEST_CASE("ParallelChecker_read", "[dev]") } } group - .createDataSet(name, + .createDataSet("data/" + name, HighFive::DataSpace{std::vector<size_t>{dt_table.numberOfRows(), dt_table.numberOfColumns()}}, test_TinyVectorDataType<DataType>{}) .template write_raw<double>(&(dt_table[0][0][0]), test_TinyVectorDataType<DataType>{}); @@ -2052,8 +2054,9 @@ TEST_CASE("ParallelChecker_read", "[dev]") } } group - .createDataSet<double>(name, HighFive::DataSpace{std::vector<size_t>{double_table.numberOfRows(), - double_table.numberOfColumns()}}) + .createDataSet<double>("data/" + name, + HighFive::DataSpace{ + std::vector<size_t>{double_table.numberOfRows(), double_table.numberOfColumns()}}) .write_raw<double>(&(double_table(0, 0))); group.createAttribute("filename", source_location.filename()); diff --git a/tests/test_ParallelChecker_write.cpp b/tests/test_ParallelChecker_write.cpp index 460d77dad..e1463d00b 100644 --- a/tests/test_ParallelChecker_write.cpp +++ b/tests/test_ParallelChecker_write.cpp @@ -109,7 +109,7 @@ TEST_CASE("ParallelChecker_write", "[dev]") REQUIRE(group_var0.getNumberObjects() == 2); REQUIRE(group_var0.exist(std::string{itemName(item_type)} + "_numbers")); - REQUIRE(group_var0.exist(var_name)); + REQUIRE(group_var0.exist("data/" + var_name)); REQUIRE(group_var0.getNumberAttributes() == 7); REQUIRE(group_var0.hasAttribute("filename")); @@ -372,7 +372,7 @@ TEST_CASE("ParallelChecker_write", "[dev]") REQUIRE(group_var0.exist(std::string{itemName(sub_item_type)} + "_numbers")); REQUIRE(group_var0.exist("sub_item_index")); REQUIRE(group_var0.exist("rows_map")); - REQUIRE(group_var0.exist(var_name)); + REQUIRE(group_var0.exist("data/" + var_name)); REQUIRE(group_var0.getNumberAttributes() == 8); REQUIRE(group_var0.hasAttribute("filename")); -- GitLab