Skip to content

Commit 1e9e8ca

Browse files
committed
ProgressBar: fix number of prints if number of iterations is lower than
the wanted number of information prints
1 parent ca32f09 commit 1e9e8ca

4 files changed

Lines changed: 16 additions & 12 deletions

File tree

src/Pink/main_generic.h

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -56,7 +56,7 @@ void main_generic(InputData const& input_data)
5656
auto&& iter_data_cur = DataIteratorShuffled<DataLayout, T>(ifs, static_cast<uint64_t>(input_data.seed), input_data.shuffle_data_input);
5757
auto&& iter_data_end = DataIteratorShuffled<DataLayout, T>(ifs, true);
5858

59-
ProgressBar progress_bar(iter_data_cur.get_number_of_entries() * input_data.numIter, 70, input_data.number_of_progress_prints);
59+
ProgressBar progress_bar(iter_data_cur.get_number_of_entries() * input_data.numIter, 70, input_data.max_number_of_progress_prints);
6060
uint32_t count = 0;
6161
for (int i = 0; i < input_data.numIter; ++i)
6262
{
@@ -154,7 +154,7 @@ void main_generic(InputData const& input_data)
154154
#endif
155155
);
156156

157-
ProgressBar progress_bar(iter_data_cur.get_number_of_entries(), 70, input_data.number_of_progress_prints);
157+
ProgressBar progress_bar(iter_data_cur.get_number_of_entries(), 70, input_data.max_number_of_progress_prints);
158158
for (; iter_data_cur != iter_data_end; ++iter_data_cur, ++progress_bar)
159159
{
160160
auto result = mapper(*iter_data_cur);

src/UtilitiesLib/InputData.cpp

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ InputData::InputData()
3333
number_of_threads(-1),
3434
init(SOMInitialization::ZERO),
3535
numIter(1),
36-
number_of_progress_prints(10),
36+
max_number_of_progress_prints(10),
3737
use_flip(true),
3838
use_gpu(true),
3939
number_of_data_entries(0),
@@ -153,7 +153,7 @@ InputData::InputData(int argc, char **argv)
153153
}
154154
case 'p':
155155
{
156-
number_of_progress_prints = atof(optarg);
156+
max_number_of_progress_prints = atof(optarg);
157157
break;
158158
}
159159
case 'n':
@@ -461,7 +461,7 @@ void InputData::print_parameters() const
461461
<< " Number of iterations = " << numIter << "\n"
462462
<< " Neuron dimension = " << neuron_dim << "x" << neuron_dim << "\n"
463463
<< " Euclidean distance dimension = " << euclidean_distance_dim << "x" << euclidean_distance_dim << "\n"
464-
<< " Number of progress information prints = " << number_of_progress_prints << "\n"
464+
<< " Maximal number of progress information prints = " << max_number_of_progress_prints << "\n"
465465
<< " Intermediate storage of SOM = " << intermediate_storage << "\n"
466466
<< " Layout = " << layout << "\n"
467467
<< " Initialization type = " << init;
@@ -524,7 +524,7 @@ void InputData::print_usage() const
524524
" --numthreads, -t <int> Number of CPU threads (default = auto).\n"
525525
" --num-iter <int> Number of iterations (default = 1).\n"
526526
" --pbc Use periodic boundary conditions for SOM.\n"
527-
" --progress, -p <int> Number of progress information prints (default = 10).\n"
527+
" --progress, -p <int> Maximal number of progress information prints (default = 10).\n"
528528
" --seed, -s <int> Seed for random number generator (default = 1234).\n"
529529
" --store-rot-flip <string> Store the rotation and flip information of the best match of mapping.\n"
530530
" --som-width <int> Width dimension of SOM (default = 10).\n"

src/UtilitiesLib/InputData.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ struct InputData
6363
int number_of_threads;
6464
SOMInitialization init;
6565
int numIter;
66-
int number_of_progress_prints;
66+
int max_number_of_progress_prints;
6767
bool use_flip;
6868
bool use_gpu;
6969
uint32_t number_of_data_entries;

src/UtilitiesLib/ProgressBar.h

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -17,10 +17,11 @@ class ProgressBar
1717
{
1818
public:
1919

20-
ProgressBar(int number_of_iterations, int width, int number_of_progress_prints = 10, std::ostream& os = std::cout)
20+
ProgressBar(int number_of_iterations, int width, int max_number_of_progress_prints, std::ostream& os = std::cout)
2121
: number_of_iterations(number_of_iterations < 1 ? throw pink::exception("ProgressBar: number_of_iterations must be larger than 0") : number_of_iterations),
22+
max_number_of_progress_prints(max_number_of_progress_prints < 1 ? throw pink::exception("ProgressBar: max number of progress prints must be larger than 0") : max_number_of_progress_prints),
23+
number_of_progress_prints(std::min(number_of_iterations, max_number_of_progress_prints)),
2224
width(width < number_of_progress_prints ? throw pink::exception("ProgressBar: width must be equal or larger than number of progress prints") : width),
23-
number_of_progress_prints(number_of_progress_prints < 1 ? throw pink::exception("ProgressBar: number of progress prints must be larger than 0") : number_of_progress_prints),
2425
number_of_ticks_in_section(number_of_iterations / number_of_progress_prints),
2526
remaining_ticks_in_section(number_of_iterations % number_of_progress_prints),
2627
os(os),
@@ -74,12 +75,15 @@ class ProgressBar
7475
/// Number_of_iterations
7576
int number_of_iterations;
7677

77-
/// Number of characters of progress bar
78-
int width;
78+
/// Maximal number of progress information prints, must be larger than 0
79+
int max_number_of_progress_prints;
7980

80-
/// Number of progress informations should be printed
81+
/// Number of progress informations prints
8182
int number_of_progress_prints;
8283

84+
/// Number of characters of progress bar
85+
int width;
86+
8387
/// Number of ticks between progress stages
8488
int number_of_ticks_in_section;
8589

0 commit comments

Comments
 (0)