35 const std::filesystem::path& imp_results_file_path,
36 const std::string& run_name) : run_name_{run_name}
38 std::pair<std::map<std::string, std::vector<std::string>>,
39 std::vector<std::string>>
40 run_results_header_to_data_ordered_headers;
42 if (
const auto run_results_fp =
44 (std::string(run_name_) +
'_' +
47 ((std::filesystem::exists(run_results_fp))) &&
48 (std::filesystem::is_regular_file(run_results_fp)))
50 run_results_header_to_data_ordered_headers =
51 HeaderToDataWOrderedHeadersCsv(run_results_fp);
55 if (
const auto run_speedup_fp =
57 (std::string(run_name_) +
'_' +
60 ((std::filesystem::exists(run_speedup_fp)) &&
61 (std::filesystem::is_regular_file(run_speedup_fp))))
63 speedup_header_to_result_speedup_order_ =
64 HeaderToDataWOrderedHeadersCsv(run_speedup_fp);
68 GenInputSignatureToDataMapping(
69 run_results_header_to_data_ordered_headers.first);
75 const std::filesystem::path& run_results_file_path)
78 std::pair<std::map<std::string, std::vector<std::string>>,
79 std::vector<std::string>>
80 run_results_header_to_data_ordered_headers;
81 if ((std::filesystem::exists(run_results_file_path)) &&
82 (std::filesystem::is_regular_file(run_results_file_path)))
84 run_results_header_to_data_ordered_headers =
85 HeaderToDataWOrderedHeadersCsv(run_results_file_path);
89 GenInputSignatureToDataMapping(
90 run_results_header_to_data_ordered_headers.first);
94 void RunResultsSpeedups::GenInputSignatureToDataMapping(
95 const std::optional<std::map<std::string,
96 std::vector<std::string>>>& run_results_header_to_data)
98 if (run_results_header_to_data)
101 input_sig_to_run_data_ = decltype(input_sig_to_run_data_)::value_type();
104 const unsigned int tot_num_runs =
105 run_results_header_to_data->at(
107 for (
unsigned int num_run = 0; num_run < tot_num_runs; num_run++)
113 run_results_header_to_data->at(
115 run_results_header_to_data->at(
117 run_results_header_to_data->at(
122 std::map<std::string, std::string> run_headers_to_data;
123 for (
const auto& header_data : *run_results_header_to_data) {
124 run_headers_to_data.insert(
125 {header_data.first, header_data.second.at(num_run)});
127 input_sig_to_run_data_->insert({run_input, run_headers_to_data});
135 std::string_view key)
const
137 std::map<InputSignature, std::string> input_sig_to_key_val;
138 if (input_sig_to_run_data_) {
141 for (
const auto& [input_sig, run_data] : *input_sig_to_run_data_)
144 input_sig_to_key_val.insert(
145 {input_sig, run_data.at(std::string(key))});
149 return input_sig_to_key_val;
157 std::pair<std::map<std::string, std::vector<std::string>>,
158 std::vector<std::string>>
159 RunResultsSpeedups::HeaderToDataWOrderedHeadersCsv(
160 const std::filesystem::path& csv_file_path)
const
163 std::ifstream csv_file_str(csv_file_path);
164 if (!(csv_file_str.is_open())) {
165 std::cout <<
"ERROR CREATING STREAM: " << csv_file_path << std::endl;
169 std::map<std::string, std::vector<std::string>> header_to_data;
170 std::vector<std::string> data_headers;
174 std::string headers_line;
175 std::getline(csv_file_str, headers_line);
176 std::stringstream headers_str(headers_line);
177 for (std::string header; std::getline(headers_str, header,
',');)
179 data_headers.push_back(header);
180 header_to_data.insert({header, std::vector<std::string>()});
184 for (std::string data_line; std::getline(csv_file_str, data_line);)
188 for (
auto [data_line_str, data, num_data] =
189 std::make_tuple(std::stringstream(data_line), std::string(), 0u);
190 std::getline(data_line_str, data,
',');)
192 header_to_data.at(data_headers[num_data++]).push_back(data);
197 return {header_to_data, data_headers};
Contains namespace with enums and constants for implementation run evaluation.
Declares class to load and store run results data including speedups from evaluation.
RunResultsSpeedups(const std::filesystem::path &imp_results_file_path, const std::string &run_name)
Constructor that takes in implementation file path and run name and retrieves run results and speedup...
std::map< InputSignature, std::string > InputsToKeyVal(std::string_view key) const
Get mapping of run input signature to value corresponding to input key for each run result.
constexpr std::string_view kImpResultsRunDataFolderName
constexpr std::string_view kCsvFileExtension
constexpr std::string_view kSpeedupsDescFileName
constexpr std::string_view kOptimizedRuntimeHeader
constexpr std::array< std::string_view, 3 > kRunInputSigHeaders
constexpr std::string_view kImpResultsSpeedupsFolderName