51 int main(
int argc,
char** argv)
55 const std::array<std::string, 2> refTestImPath{argv[1], argv[2]};
58 const std::string out_disp_map_path{argv[4]};
62 const unsigned int dispMapScale = 256 / alg_settings.
num_disp_vals;
72 #if (CPU_VECTORIZATION_DEFINE == AVX_512_DEFINE)
73 std::unique_ptr<RunBpOnStereoSet<float, 0, run_environment::AccSetting::kAVX512>>
74 runOptBpNumItersNoTemplate =
75 std::make_unique<RunBpOnStereoSetOptimizedCPU<float, 0, run_environment::AccSetting::kAVX512>>();
76 #elif (CPU_VECTORIZATION_DEFINE == AVX_512_F16_DEFINE)
77 std::unique_ptr<RunBpOnStereoSet<float, 0, run_environment::AccSetting::kAVX512_F16>>
78 runOptBpNumItersNoTemplate =
79 std::make_unique<RunBpOnStereoSetOptimizedCPU<float, 0, run_environment::AccSetting::kAVX512_F16>>();
80 #elif (CPU_VECTORIZATION_DEFINE == AVX_256_DEFINE)
81 std::unique_ptr<RunBpOnStereoSet<float, 0, run_environment::AccSetting::kAVX256>>
82 runOptBpNumItersNoTemplate =
83 std::make_unique<RunBpOnStereoSetOptimizedCPU<float, 0, run_environment::AccSetting::kAVX256>>();
84 #elif (CPU_VECTORIZATION_DEFINE == AVX_256_F16_DEFINE)
85 std::unique_ptr<RunBpOnStereoSet<float, 0, run_environment::AccSetting::kAVX256_F16>>
86 runOptBpNumItersNoTemplate =
87 std::make_unique<RunBpOnStereoSetOptimizedCPU<float, 0, run_environment::AccSetting::kAVX256_F16>>();
88 #elif (CPU_VECTORIZATION_DEFINE == NEON_DEFINE)
89 std::unique_ptr<RunBpOnStereoSet<float, 0, run_environment::AccSetting::kNEON>>
90 runOptBpNumItersNoTemplate =
91 std::make_unique<RunBpOnStereoSetOptimizedCPU<float, 0, run_environment::AccSetting::kNEON>>();
96 const auto run_output = runOptBpNumItersNoTemplate->operator()(
97 {refTestImPath[0], refTestImPath[1]}, alg_settings, parallel_params);
101 std::cout <<
"BP processing runtime (optimized w/ OpenMP + SIMD on CPU): "
102 << run_output->run_time.count() << std::endl;
103 run_output->out_disparity_map.SaveDisparityMap(out_disp_map_path, dispMapScale);
104 std::cout <<
"Output disparity map saved to " << out_disp_map_path << std::endl;
Belief propagation implementation constants related to file processing.
int main(int argc, char **argv)
main() function to run optimized CPU belief propagation implementation on CPU on an input stereo set ...
Declares abstract class to set up and run belief propagation on target device using specified acceler...
Declares child class of RunBpOnStereoSet to run optimized CPU implementation of belief propagation on...
Contains namespace with CPU run defaults and constants.
Declares class to run and evaluate implementation(s) of an algorithm using multiple settings includin...
Child class of ParallelParams to store and process parallelization parameters to use in each BP kerne...
const std::array< unsigned int, 2 > kParallelParamsDefault
Default parallel parameters setting on CPU.
@ kSameParallelParamsAllKernels
Structure to store the belief propagation settings including the number of levels and iterations.
unsigned int num_disp_vals
Number of disparity values must be set for each stereo set.
float disc_k_bp
Discontinuity cost cap set to high value by default but is expected to be dependent on number of disp...