35 unsigned int num_levels,
36 const std::array<unsigned int, 2>& default_parallel_dims) :
37 opt_parallel_params_setting_{opt_parallel_params_setting},
38 num_levels_{num_levels}
46 p_params_to_run_time_each_kernel_[i] =
47 std::vector<std::map<std::array<unsigned int, 2>,
double>>(
48 parallel_dims_each_kernel_[i].size());
51 std::vector<std::map<std::array<unsigned int, 2>,
double>>(1);
56 const std::array<unsigned int, 2>& parallel_dims)
61 std::vector<std::array<unsigned int, 2>>(num_levels_, parallel_dims);
65 std::vector<std::array<unsigned int, 2>>(num_levels_, parallel_dims);
67 std::vector<std::array<unsigned int, 2>>(num_levels_, parallel_dims);
82 opt_parallel_params_setting_))));
113 return curr_run_data;
119 if (opt_parallel_params_setting_ ==
122 for (
unsigned int level=0; level < num_levels_; level++) {
152 if (opt_parallel_params_setting_ ==
155 for (
unsigned int num_kernel_set = 0;
156 num_kernel_set < parallel_dims_each_kernel_.size();
165 std::ranges::transform(p_params_to_run_time_each_kernel_[num_kernel_set],
166 parallel_dims_each_kernel_[num_kernel_set].begin(),
167 [](
const auto& p_params_to_runtime_kernel_at_level) {
168 return (std::ranges::min_element(
169 p_params_to_runtime_kernel_at_level,
171 [](
const auto& p_params_w_runtime) {
172 return p_params_w_runtime.second;
183 const auto best_parallel_params = std::ranges::min_element(
186 [](
const auto& p_params_w_runtime) {
187 return p_params_w_runtime.second;
File with namespace for enums, constants, structures, and functions specific to belief propagation pr...
Constants for timing belief propagation implementation.
Declares child class of ParallelParams to store and process parallelization parameters to use in each...
void AddTestResultsForParallelParams(const std::array< unsigned int, 2 > &p_params_curr_run, const RunData &curr_run_data)
Add results from run with same specified parallel parameters used every parallel component.
void SetParallelDims(const std::array< unsigned int, 2 > ¶llel_dims) override
Set parallel parameters for each kernel to the same input dimensions.
RunData AsRunData() const override
Retrieve current parallel parameters as RunData object.
void SetOptimizedParams() override
Retrieve optimized parameters from results across multiple runs with different parallel parameters an...
ParallelParamsBp(run_environment::OptParallelParamsSetting opt_parallel_params_setting, unsigned int num_levels, const std::array< unsigned int, 2 > &default_parallel_dims)
Constructor to set parallel parameters with default dimensions for each kernel.
Class to store headers with data corresponding to current program run and evaluation.
void AddDataWHeader(const std::string &header, const std::string &data)
Add string data with header describing added data.
std::optional< double > GetDataAsDouble(const std::string_view header) const
Get data corresponding to header as double Return null if data corresponds to a different data type.
constexpr std::string_view kCompOutputDispPDimsHeader
constexpr std::string_view kInitMValsPDimsHeader
constexpr unsigned int kNumKernels
const std::unordered_map< Runtime_Type, std::string_view > kTimingNames
Mapping of runtime segment enum to header describing timing of the segment.
constexpr std::string_view kDataCostsPDimsHeader
constexpr std::string_view kLevelText
constexpr std::string_view kCopyToNextLevelPDimsHeader
constexpr std::string_view kBlurImagesPDimsHeader
constexpr std::array< std::array< std::string_view, 3 >, 10 > kLevelDCostBpTimeCTimeNames
Constant consisting of arrays of string views for headers corresponding to timing of computation of d...
constexpr std::string_view kBpItersPDimsHeader
const std::map< OptParallelParamsSetting, std::string_view > kOptPParmsSettingToDesc
constexpr std::string_view kPParamsPerKernelSettingHeader
OptParallelParamsSetting
Enum to specify if optimizing parallel parameters per kernel or using same parallel parameters across...
@ kAllowDiffKernelParallelParamsInRun
constexpr std::string_view kMedianOfTestRunsDesc
Constant to describing timing as median across evaluation runs.
constexpr std::string_view kOptimizedRuntimeHeader