From 6f6d7659326c5f8e53a0f38a596abd74c41949be Mon Sep 17 00:00:00 2001 From: Filip Leonarski Date: Sun, 6 Aug 2023 22:19:21 +0200 Subject: [PATCH] CompressionBenchmark: Increase number of images --- tools/CompressionBenchmark.cpp | 35 ++++++++++++++++++++++------------ 1 file changed, 23 insertions(+), 12 deletions(-) diff --git a/tools/CompressionBenchmark.cpp b/tools/CompressionBenchmark.cpp index 903922d5..3dd4e101 100644 --- a/tools/CompressionBenchmark.cpp +++ b/tools/CompressionBenchmark.cpp @@ -91,15 +91,24 @@ int main(int argc, char **argv) { RegisterHDF5Filter(); - if ((argc != 2) && (argc != 3)) { + if ((argc != 2) && (argc != 3) && (argc != 4)) { std::cout << "Usage: ./CompressionBenchmark {}" << std::endl; exit(EXIT_FAILURE); } uint32_t nthreads = 1; - if (argc == 3) + if (argc >= 3) nthreads = atol(argv[2]); + uint64_t nimages = 25; + if (argc == 4) + nimages = atol(argv[3]); + + if ((nthreads <= 0) || (nimages <= 0)) { + std::cerr << "Error in input parameters" << std::endl; + exit(EXIT_FAILURE); + } + HDF5ReadOnlyFile data(argv[1]); HDF5DataSet dataset(data, "/entry/data/data"); @@ -120,34 +129,36 @@ int main(int argc, char **argv) { exit(EXIT_FAILURE); } - uint64_t nimages = file_space.GetDimensions()[0]; - std::cout << "Number of images in the dataset: " << nimages << std::endl; - if (nimages > 200) { - nimages = 200; - std::cout << "Using only " << nimages << " images" << std::endl; - + uint64_t nimages_dataset = file_space.GetDimensions()[0]; + std::cout << "Number of images in the dataset: " << nimages_dataset << std::endl; + if (nimages_dataset > 200) { + nimages_dataset = 200; + std::cout << "Using only " << nimages_dataset << " images" << std::endl; } x.Mode(DetectorMode::Conversion); - std::vector image_conv ( nimages * file_space.GetDimensions()[1] * file_space.GetDimensions()[2]); + std::vector image_conv ( nimages_dataset * file_space.GetDimensions()[1] * file_space.GetDimensions()[2]); + std::vector start = {0,0,0}; - std::vector dim = {nimages, file_space.GetDimensions()[1], file_space.GetDimensions()[2]}; + std::vector dim = {nimages_dataset, file_space.GetDimensions()[1], file_space.GetDimensions()[2]}; auto start_time = std::chrono::system_clock::now(); dataset.ReadVector(image_conv, start, dim); auto end_time = std::chrono::system_clock::now(); auto elapsed = std::chrono::duration_cast(end_time - start_time); - std::cout << "Images loaded " << elapsed.count() / nimages << " ms/image " + std::cout << "Images loaded " << elapsed.count() / nimages_dataset << " ms/image " << (image_conv.size() * sizeof(uint16_t)) / (1000.0 * elapsed.count()) << " MB/s" << std::endl; + + std::cout << "Images to benchmark " << nimages << std::endl << "Threads: " << nthreads << std::endl << std::endl; std::vector image( nimages * x.GetModulesNum() * RAW_MODULE_SIZE); for (int i = 0; i < nimages; i++) { ConvertedToRawGeometry(x, image.data() + i * RAW_MODULE_SIZE * x.GetModulesNum(), - image_conv.data() + i * file_space.GetDimensions()[1] * file_space.GetDimensions()[2]); + image_conv.data() + (i % nimages_dataset) * file_space.GetDimensions()[1] * file_space.GetDimensions()[2]); } auto image_shuffled = bitshuffle(image, 4096);