From 1802e94aefbd5c745596f9b654d0e505bbb6b974 Mon Sep 17 00:00:00 2001 From: Hoyong Jin Date: Fri, 22 Nov 2024 01:02:02 +0000 Subject: [PATCH] Fix MapperApp and ModelApp --- bin/timeloop-mapper.py | 11 ++++++----- bin/timeloop-model.py | 9 +++++---- bindings/applications.cpp | 19 +++++++++++-------- bindings/config.cpp | 4 ++++ 4 files changed, 26 insertions(+), 17 deletions(-) diff --git a/bin/timeloop-mapper.py b/bin/timeloop-mapper.py index f47ee28..5a41e69 100644 --- a/bin/timeloop-mapper.py +++ b/bin/timeloop-mapper.py @@ -27,7 +27,8 @@ def load_configs(input_fnames): with open(fname, 'r') as f: yaml_str += f.read() yaml_str += '\n' - config = Config.load_yaml(yaml_str) + config = Config(yaml_str, "yaml") + config.in_files = input_files return config @@ -58,7 +59,7 @@ def load_configs(input_fnames): out_stats_fname = os.path.join(out_dir, 'timeloop-mapper.stats.txt') out_mapping_fname = os.path.join(out_dir, 'timeloop-mapper.map.txt') - app = MapperApp(config, out_dir, log_level=log_level) - eval_stats, _ = app.run() - logger.info(f'Evaluation status: {eval_stats.eval_status}') - logger.info(f'Pre-evaluation status: {eval_stats.pre_eval_status}') + name = "timeloop-mapper" + app = MapperApp(config, out_dir, name) + eval_stats = app.run() + logger.info('Evaluation status: {}'.format(eval_stats.stats_string)) diff --git a/bin/timeloop-model.py b/bin/timeloop-model.py index 962b815..899849f 100644 --- a/bin/timeloop-model.py +++ b/bin/timeloop-model.py @@ -27,7 +27,8 @@ def load_configs(input_fnames): with open(fname, 'r') as f: yaml_str += f.read() yaml_str += '\n' - config = Config.load_yaml(yaml_str) + config = Config(yaml_str, "yaml") + config.in_files = input_files return config @@ -58,7 +59,7 @@ def load_configs(input_fnames): out_stats_fname = os.path.join(out_dir, 'timeloop-model.stats.txt') out_mapping_fname = os.path.join(out_dir, 'timeloop-model.map.txt') - app = ModelApp(config, out_dir, log_level=log_level) + name = "timeloop-model" + app = ModelApp(config, out_dir, name) eval_stats = app.run() - logger.info('Evaluation status: {}'.format(eval_stats.eval_status)) - logger.info('Pre-evaluation status: {}'.format(eval_stats.pre_eval_status)) + logger.info('Evaluation status: {}'.format(eval_stats.stats_string)) diff --git a/bindings/applications.cpp b/bindings/applications.cpp index 2d40d00..8d7311e 100644 --- a/bindings/applications.cpp +++ b/bindings/applications.cpp @@ -22,7 +22,10 @@ namespace pytimeloop::application_bindings py::class_(m, "ModelResult") .def_readwrite("cycles", &application::Model::Stats::cycles) .def_readwrite("energy", &application::Model::Stats::energy) - .def_readwrite("stats_string", &application::Model::Stats::stats_string); + .def_readwrite("stats_string", &application::Model::Stats::stats_string) + .def_readwrite("map_string", &application::Model::Stats::map_string) + .def_readwrite("xml_map_and_stats_string", &application::Model::Stats::xml_map_and_stats_string) + .def_readwrite("tensella_string", &application::Model::Stats::tensella_string); py::class_(m, "MapperApp") .def(py::init()) @@ -30,13 +33,13 @@ namespace pytimeloop::application_bindings .def("get_global_best", &application::Mapper::GetGlobalBest); py::class_(m, "MapperResult") - .PROPERTY(mapping_cpp_string, application::Mapper::Result) - .PROPERTY(mapping_yaml_string, application::Mapper::Result) - .PROPERTY(mapping_string, application::Mapper::Result) - .PROPERTY(stats_string, application::Mapper::Result) - .PROPERTY(tensella_string, application::Mapper::Result) - .PROPERTY(xml_mapping_stats_string, application::Mapper::Result) - .PROPERTY(orojenesis_string, application::Mapper::Result); + .def_readwrite("mapping_cpp_string", &application::Mapper::Result::mapping_cpp_string) + .def_readwrite("mapping_yaml_string", &application::Mapper::Result::mapping_yaml_string) + .def_readwrite("mapping_string", &application::Mapper::Result::mapping_string) + .def_readwrite("stats_string", &application::Mapper::Result::stats_string) + .def_readwrite("tensella_string", &application::Mapper::Result::tensella_string) + .def_readwrite("xml_mapping_stats_string", &application::Mapper::Result::xml_mapping_stats_string) + .def_readwrite("orojenesis_string", &application::Mapper::Result::orojenesis_string); // EvaluationResult in mapper-thread.cpp py::class_(m, "MapperEvaluationResult") diff --git a/bindings/config.cpp b/bindings/config.cpp index a1c7650..3424789 100644 --- a/bindings/config.cpp +++ b/bindings/config.cpp @@ -43,10 +43,14 @@ void BindConfigClasses(py::module& m) { )DOCSTRING"; config + /// @brief Initializer. Uses list of input file paths + .def(py::init &>()) /// @brief Initializer. Uses the CompoundConfig string + type constructor. .def(py::init()) /// @brief Fetches the root CompoundConfigNode. .def_property_readonly("root", &CompoundConfig::getRoot) + /// @brief Member variable. + .def_readwrite("in_files", &CompoundConfig::inFiles) /// @brief Pickling and unpickling support .def(py::pickle( [](CompoundConfig& config)