Optimized Belief Propagation (CPU and GPU)
EvaluateImpResults.h
Go to the documentation of this file.
1 /*
2 Copyright (C) 2024 Scott Grauer-Gray
3 
4 This program is free software; you can redistribute it and/or modify
5 it under the terms of the GNU General Public License as published by
6 the Free Software Foundation; either version 2 of the License, or
7 (at your option) any later version.
8 
9 This program is distributed in the hope that it will be useful,
10 but WITHOUT ANY WARRANTY; without even the implied warranty of
11 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12 GNU General Public License for more details.
13 
14 You should have received a copy of the GNU General Public License
15 along with this program; if not, write to the Free Software
16 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
17 */
18 
28 #ifndef EVALUATE_IMP_RESULTS_H_
29 #define EVALUATE_IMP_RESULTS_H_
30 
31 #include <filesystem>
32 #include <unordered_map>
33 #include <vector>
34 #include <array>
35 #include <utility>
36 #include <string_view>
37 #include <optional>
40 #include "EvaluateImpAliases.h"
41 
42 #if defined(OPTIMIZED_CUDA_RUN)
44 #endif //OPTIMIZED_CUDA_RUN
45 
50 enum class BaseTargetDiff {
52 
58 public:
70  std::pair<MultRunData, std::vector<RunSpeedupAvgMedian>>
72  const MultRunData& run_results,
73  const run_environment::RunImpSettings& run_imp_settings,
74  size_t data_size) const;
75 
86  const std::unordered_map<size_t, MultRunDataWSpeedupByAcc>&
87  run_results_mult_runs,
88  const run_environment::RunImpSettings& run_imp_settings,
89  run_environment::AccSetting opt_imp_acc) const;
90 
91 private:
98  virtual std::filesystem::path GetImpResultsPath() const = 0;
99 
108  virtual std::vector<std::string> GetCombResultsTopText() const = 0;
109 
118  virtual std::vector<std::string> GetInputParamsShow() const = 0;
119 
127  std::vector<RunSpeedupAvgMedian> SpeedupsAllRuns(
128  MultRunData& run_results,
129  const run_environment::RunImpSettings& run_imp_settings) const;
130 
141  void WriteRunOutput(
142  const std::pair<MultRunData, std::vector<RunSpeedupAvgMedian>>& run_results_w_speedups,
143  const run_environment::RunImpSettings& run_imp_settings,
144  run_environment::AccSetting acceleration_setting) const;
145 
155  void WriteRunResultsForAcc(
156  const MultRunData& run_results,
157  run_environment::AccSetting acceleration_setting,
158  const run_environment::RunImpSettings& run_imp_settings) const;
159 
174  std::pair<std::vector<RunSpeedupAvgMedian>, MultRunData> GetAltAccelSpeedups(
175  MultRunDataWSpeedupByAcc& run_imp_results_by_acc_setting,
176  const run_environment::RunImpSettings& run_imp_settings,
177  size_t data_type_size,
178  run_environment::AccSetting fastest_acc) const;
179 
188  std::vector<RunSpeedupAvgMedian> GetSpeedupOverBaseline(
189  const run_environment::RunImpSettings& run_imp_settings,
190  MultRunData& run_data_all_runs,
191  size_t data_type_size) const;
192 
202  std::vector<RunSpeedupAvgMedian> GetSpeedupOverBaselineSubsets(
203  const run_environment::RunImpSettings& run_imp_settings,
204  MultRunData& run_data_all_runs,
205  size_t data_type_size) const;
206 
214  std::pair<std::string, std::map<InputSignature, std::string>>
215  GetBaselineRuntimeData(
216  const std::array<std::string_view, 2>& baseline_runtimes_path_desc,
217  std::string_view key_runtime_data) const;
218 
225  RunSpeedupAvgMedian::second_type GetAvgMedSpeedup(
226  const std::vector<double>& speedups_vect) const;
227 
239  std::vector<RunSpeedupAvgMedian> GetAvgMedSpeedupOverBaselineSubsets(
240  MultRunData& run_results,
241  std::string_view data_type_str,
242  const std::array<std::string_view, 2>& baseline_runtimes_path_desc,
243  const std::vector<std::pair<std::string, std::vector<InputSignature>>>&
244  subset_desc_input_sig =
245  std::vector<std::pair<std::string, std::vector<InputSignature>>>())
246  const;
247 
257  std::vector<RunSpeedupAvgMedian> GetAvgMedSpeedupOverBaseline(
258  MultRunData& run_results,
259  std::string_view data_type_str,
260  const std::array<std::string_view, 2>& baseline_runtimes_path_desc) const;
261 
273  std::vector<RunSpeedupAvgMedian> GetAvgMedSpeedupOptPParams(
274  MultRunData& run_results,
275  std::string_view speedup_header,
276  const std::optional<std::vector<std::pair<std::string, std::vector<InputSignature>>>>& eval_subsets =
277  std::nullopt) const;
278 
291  std::vector<RunSpeedupAvgMedian> GetAvgMedSpeedupBaseVsTarget(
292  MultRunData& run_results_base,
293  MultRunData& run_results_target,
294  std::string_view speedup_header,
295  BaseTargetDiff base_target_diff,
296  const std::optional<std::vector<std::pair<std::string, std::vector<InputSignature>>>>& eval_subsets =
297  std::nullopt) const;
298 
311  std::vector<RunSpeedupAvgMedian> GetAvgMedSpeedupLoopItersInTemplate(
312  MultRunData& run_results,
313  std::string_view speedup_header,
314  const run_environment::RunImpSettings& run_imp_settings) const;
315 };
316 
317 #endif //EVALUATE_IMP_RESULTS_H_
Header for defining aliases for storing run results and evaluating implementations.
std::unordered_map< run_environment::AccSetting, std::pair< MultRunData, std::vector< RunSpeedupAvgMedian > >> MultRunDataWSpeedupByAcc
Mapping of acceleration setting to run and speedup data.
std::map< InputSignature, std::optional< std::map< run_environment::ParallelParamsSetting, RunData > >> MultRunData
Alias mapping input signature to run data for each parallel parameters setting Run data is null if r...
BaseTargetDiff
Enum to define difference between "base" and "target" result sets when evaluating speedup.
Declares class for defining input signature for evaluation run that consists of evaluation set number...
Contains namespace with constants and functions to get CUDA device properties as well as default and ...
Declares and defines structure that stores settings for current implementation run as well as functio...
Class with operator function to evaluate implementations of the same algorithm across different data ...
void EvalAllResultsWriteOutput(const std::unordered_map< size_t, MultRunDataWSpeedupByAcc > &run_results_mult_runs, const run_environment::RunImpSettings &run_imp_settings, run_environment::AccSetting opt_imp_acc) const
Evaluate results for all implementation runs on multiple inputs with the runs potentially having diff...
std::pair< MultRunData, std::vector< RunSpeedupAvgMedian > > EvalResultsSingDataTypeAcc(const MultRunData &run_results, const run_environment::RunImpSettings &run_imp_settings, size_t data_size) const
Evaluate results for implementation runs on multiple inputs with all the runs having the same data ty...
AccSetting
Enum for acceleration setting.
Structure that stores settings for current implementation run.
Definition: RunSettings.h:84