58 po::options_description options{};
60 (
"image-start", po::value<int>()->default_value(100),
"Image start size")
61 (
"image-step-size", po::value<int>()->default_value(3),
"Image step size")
62 (
"image-nsteps", po::value<int>()->default_value(1),
"Number of steps for the image")
63 (
"kernel-start", po::value<int>()->default_value(3),
"Kernel start size")
64 (
"kernel-step-size", po::value<int>()->default_value(4),
"Kernel step size")
65 (
"kernel-nsteps", po::value<int>()->default_value(2),
"Number of steps for the kernel")
66 (
"repeat", po::value<int>()->default_value(5),
"Repeat")
67 (
"measures", po::value<int>()->default_value(10),
"Number of measures");
83 auto img_start = args[
"image-start"].as<
int>();
84 auto img_step_size = args[
"image-step-size"].as<
int>();
85 auto img_nsteps = args[
"image-nsteps"].as<
int>();
86 auto krn_start = args[
"kernel-start"].as<
int>();
87 auto krn_step_size = args[
"kernel-step-size"].as<
int>();
88 auto krn_nsteps = args[
"kernel-nsteps"].as<
int>();
89 auto repeat = args[
"repeat"].as<
int>();
90 auto measures = args[
"measures"].as<
int>();
94 for (
int img_step = 0; img_step < img_nsteps; ++img_step) {
95 auto img_size = img_start + img_step * img_step_size;
99 for (
int krn_step = 0; krn_step < krn_nsteps; ++krn_step) {
100 auto krn_size = krn_start + krn_step * krn_step_size;
102 logger.info() <<
"Using an image of " << img_size <<
"x" << img_size;
103 logger.info() <<
"Using a kernel of " << krn_size <<
"x" << krn_size;
107 logger.info() <<
"Timing Direct implementation";
110 logger.info() <<
"Timing DFT implementation";
113 logger.info() <<
"Comparing results";