From b166f8f2091c71b81a1a058178f55e2557ac0354 Mon Sep 17 00:00:00 2001 From: Tuomas Koskela Date: Fri, 17 Jan 2025 15:45:23 +0000 Subject: [PATCH 01/14] Add image sizes for testing --- cpp/benchmarks/algorithms_mpi.cc | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/cpp/benchmarks/algorithms_mpi.cc b/cpp/benchmarks/algorithms_mpi.cc index cf97b72d5..8a2f06bbc 100644 --- a/cpp/benchmarks/algorithms_mpi.cc +++ b/cpp/benchmarks/algorithms_mpi.cc @@ -203,6 +203,14 @@ BENCHMARK_DEFINE_F(AlgoFixtureMPI, FbOnnxDistributeImage)(benchmark::State &stat BENCHMARK_REGISTER_F(AlgoFixtureMPI, FbOnnxDistributeImage) //->Apply(b_utilities::Arguments) ->Args({128, 10000, 4, 10, 1}) + ->Args({256, static_cast(1e6), 4, 10, 1}) + ->Args({256, static_cast(1e7), 4, 10, 1}) + ->Args({256, static_cast(1e8), 4, 10, 1}) + ->Args({256, static_cast(1e9), 4, 10, 1}) + ->Args({512, static_cast(1e6), 4, 10, 1}) + ->Args({512, static_cast(1e7), 4, 10, 1}) + ->Args({512, static_cast(1e8), 4, 10, 1}) + ->Args({512, static_cast(1e9), 4, 10, 1}) ->Args({1024, static_cast(1e6), 4, 10, 1}) ->Args({1024, static_cast(1e7), 4, 10, 1}) ->Args({1024, static_cast(1e8), 4, 10, 1}) From 20cc25b1c6afed6f72180c010f5432f5082dc685 Mon Sep 17 00:00:00 2001 From: Tuomas Koskela Date: Fri, 24 Jan 2025 09:58:12 +0000 Subject: [PATCH 02/14] update with img sizes --- cmake_files/dependencies.cmake | 10 ++--- cpp/benchmarks/algorithms_mpi.cc | 64 ++++++++++++++++++++------------ 2 files changed, 46 insertions(+), 28 deletions(-) diff --git a/cmake_files/dependencies.cmake b/cmake_files/dependencies.cmake index 7df76fa9c..146ea9c87 100644 --- a/cmake_files/dependencies.cmake +++ b/cmake_files/dependencies.cmake @@ -18,14 +18,14 @@ else() endif() find_package(CFitsIO REQUIRED) +find_package(yaml-cpp REQUIRED) +find_package(benchmark REQUIRED) if(CMAKE_VERSION VERSION_GREATER_EQUAL "3.30.0") cmake_policy(SET CMP0167 NEW) endif() find_package(Boost COMPONENTS system filesystem REQUIRED) -find_package(yaml-cpp REQUIRED) - find_package(sopt REQUIRED) set(PURIFY_ONNXRT FALSE) if (onnxrt) @@ -69,10 +69,10 @@ if(tests OR examples) file(COPY data DESTINATION .) endif() -if(benchmarks) - find_package(benchmark REQUIRED) +#if(benchmarks) +#find_package(benchmark REQUIRED CONFIG) #include(AddBenchmark) -endif() +#endif() # Always find open-mp, since it may be used by sopt if (openmp) diff --git a/cpp/benchmarks/algorithms_mpi.cc b/cpp/benchmarks/algorithms_mpi.cc index 8a2f06bbc..3d35dbf77 100644 --- a/cpp/benchmarks/algorithms_mpi.cc +++ b/cpp/benchmarks/algorithms_mpi.cc @@ -89,7 +89,7 @@ BENCHMARK_DEFINE_F(AlgoFixtureMPI, PadmmDistributeImage)(benchmark::State &state m_padmm = factory::padmm_factory>( factory::algo_distribution::mpi_distributed, m_measurements_distribute_image, wavelets, - m_uv_data, m_sigma, m_imsizey, m_imsizex, m_sara.size(), state.range(3) + 1, true, true, + m_uv_data, m_sigma, m_imsizey, m_imsizex, m_sara.size(), state.range(3), true, true, false, 1e-3, 1e-2, 50, 1.0, 1.0); // Benchmark the application of the algorithm @@ -110,7 +110,7 @@ BENCHMARK_DEFINE_F(AlgoFixtureMPI, PadmmDistributeGrid)(benchmark::State &state) m_padmm = factory::padmm_factory>( factory::algo_distribution::mpi_distributed, m_measurements_distribute_grid, wavelets, - m_uv_data, m_sigma, m_imsizey, m_imsizex, m_sara.size(), state.range(3) + 1, true, true, + m_uv_data, m_sigma, m_imsizey, m_imsizex, m_sara.size(), state.range(3), true, true, false, 1e-3, 1e-2, 50, 1.0, 1.0); // Benchmark the application of the algorithm @@ -134,7 +134,7 @@ BENCHMARK_DEFINE_F(AlgoFixtureMPI, FbDistributeImage)(benchmark::State &state) { m_fb = factory::fb_factory>( factory::algo_distribution::mpi_serial, m_measurements_distribute_image, wavelets, m_uv_data, - m_sigma, beta, gamma, m_imsizey, m_imsizex, m_sara.size(), state.range(3) + 1, true, true, + m_sigma, beta, gamma, m_imsizey, m_imsizex, m_sara.size(), state.range(3), true, true, false, 1e-3, 1e-2, 50, 1.0); // Benchmark the application of the algorithm @@ -158,7 +158,7 @@ BENCHMARK_DEFINE_F(AlgoFixtureMPI, FbDistributeGrid)(benchmark::State &state) { m_fb = factory::fb_factory>( factory::algo_distribution::mpi_serial, m_measurements_distribute_grid, wavelets, m_uv_data, - m_sigma, beta, gamma, m_imsizey, m_imsizex, m_sara.size(), state.range(3) + 1, true, true, + m_sigma, beta, gamma, m_imsizey, m_imsizex, m_sara.size(), state.range(3), true, true, false, 1e-3, 1e-2, 50, 1.0); // Benchmark the application of the algorithm @@ -187,7 +187,7 @@ BENCHMARK_DEFINE_F(AlgoFixtureMPI, FbOnnxDistributeImage)(benchmark::State &stat m_fb = factory::fb_factory>( factory::algo_distribution::mpi_serial, m_measurements_distribute_image, wavelets, m_uv_data, - m_sigma, beta, gamma, m_imsizey, m_imsizex, m_sara.size(), state.range(3) + 1, true, true, + m_sigma, beta, gamma, m_imsizey, m_imsizex, m_sara.size(), state.range(3), true, true, false, 1e-3, 1e-2, 50, 1.0, tf_model_path, factory::g_proximal_type::TFGProximal); // Benchmark the application of the algorithm @@ -203,24 +203,34 @@ BENCHMARK_DEFINE_F(AlgoFixtureMPI, FbOnnxDistributeImage)(benchmark::State &stat BENCHMARK_REGISTER_F(AlgoFixtureMPI, FbOnnxDistributeImage) //->Apply(b_utilities::Arguments) ->Args({128, 10000, 4, 10, 1}) - ->Args({256, static_cast(1e6), 4, 10, 1}) - ->Args({256, static_cast(1e7), 4, 10, 1}) - ->Args({256, static_cast(1e8), 4, 10, 1}) - ->Args({256, static_cast(1e9), 4, 10, 1}) - ->Args({512, static_cast(1e6), 4, 10, 1}) - ->Args({512, static_cast(1e7), 4, 10, 1}) - ->Args({512, static_cast(1e8), 4, 10, 1}) - ->Args({512, static_cast(1e9), 4, 10, 1}) ->Args({1024, static_cast(1e6), 4, 10, 1}) ->Args({1024, static_cast(1e7), 4, 10, 1}) - ->Args({1024, static_cast(1e8), 4, 10, 1}) - ->Args({1024, static_cast(1e9), 4, 10, 1}) + ->Args({2048, static_cast(1e6), 4, 10, 1}) + ->Args({2048, static_cast(1e7), 4, 10, 1}) + ->Args({4096, static_cast(1e6), 4, 10, 1}) + ->Args({4096, static_cast(1e7), 4, 10, 1}) ->UseManualTime() ->MinTime(120.0) ->MinWarmUpTime(10.0) ->Repetitions(3) //->ReportAggregatesOnly(true) ->Unit(benchmark::kMillisecond); +BENCHMARK_REGISTER_F(AlgoFixtureMPI, FbOnnxDistributeGrid) + //->Apply(b_utilities::Arguments) + ->Args({128, 10000, 4, 10, 1}) + ->Args({1024, static_cast(1e6), 4, 10, 2}) + ->Args({1024, static_cast(1e7), 4, 10, 2}) + ->Args({2048, static_cast(1e6), 4, 10, 2}) + ->Args({2048, static_cast(1e7), 4, 10, 2}) + ->Args({4096, static_cast(1e6), 4, 10, 2}) + ->Args({4096, static_cast(1e7), 4, 10, 2}) + ->UseManualTime() + ->MinTime(9.0) + ->MinWarmUpTime(1.0) + ->Repetitions(3) //->ReportAggregatesOnly(true) + ->Unit(benchmark::kMillisecond); + + #endif BENCHMARK_REGISTER_F(AlgoFixtureMPI, FbDistributeImage) @@ -228,8 +238,10 @@ BENCHMARK_REGISTER_F(AlgoFixtureMPI, FbDistributeImage) ->Args({128, 10000, 4, 10, 1}) ->Args({1024, static_cast(1e6), 4, 10, 1}) ->Args({1024, static_cast(1e7), 4, 10, 1}) - ->Args({1024, static_cast(1e8), 4, 10, 1}) - ->Args({1024, static_cast(1e9), 4, 10, 1}) + ->Args({2048, static_cast(1e6), 4, 10, 1}) + ->Args({2048, static_cast(1e7), 4, 10, 1}) + ->Args({4096, static_cast(1e6), 4, 10, 1}) + ->Args({4096, static_cast(1e7), 4, 10, 1}) ->UseManualTime() ->MinTime(120.0) ->MinWarmUpTime(10.0) @@ -241,8 +253,10 @@ BENCHMARK_REGISTER_F(AlgoFixtureMPI, FbDistributeGrid) ->Args({128, 10000, 4, 10, 2}) ->Args({1024, static_cast(1e6), 4, 10, 2}) ->Args({1024, static_cast(1e7), 4, 10, 2}) - ->Args({1024, static_cast(1e8), 4, 10, 1}) - ->Args({1024, static_cast(1e9), 4, 10, 1}) + ->Args({2048, static_cast(1e6), 4, 10, 2}) + ->Args({2048, static_cast(1e7), 4, 10, 2}) + ->Args({4096, static_cast(1e6), 4, 10, 2}) + ->Args({4096, static_cast(1e7), 4, 10, 2}) ->UseManualTime() ->MinTime(120.0) ->MinWarmUpTime(10.0) @@ -254,8 +268,10 @@ BENCHMARK_REGISTER_F(AlgoFixtureMPI, PadmmDistributeImage) ->Args({128, 10000, 4, 10, 1}) ->Args({1024, static_cast(1e6), 4, 10, 1}) ->Args({1024, static_cast(1e7), 4, 10, 1}) - ->Args({1024, static_cast(1e8), 4, 10, 1}) - ->Args({1024, static_cast(1e9), 4, 10, 1}) + ->Args({2048, static_cast(1e6), 4, 10, 2}) + ->Args({2048, static_cast(1e7), 4, 10, 2}) + ->Args({4096, static_cast(1e6), 4, 10, 2}) + ->Args({4096, static_cast(1e7), 4, 10, 2}) ->UseManualTime() ->MinTime(120.0) ->MinWarmUpTime(10.0) @@ -267,8 +283,10 @@ BENCHMARK_REGISTER_F(AlgoFixtureMPI, PadmmDistributeGrid) ->Args({128, 10000, 4, 10, 2}) ->Args({1024, static_cast(1e6), 4, 10, 2}) ->Args({1024, static_cast(1e7), 4, 10, 2}) - ->Args({1024, static_cast(1e8), 4, 10, 1}) - ->Args({1024, static_cast(1e9), 4, 10, 1}) + ->Args({2048, static_cast(1e6), 4, 10, 2}) + ->Args({2048, static_cast(1e7), 4, 10, 2}) + ->Args({4096, static_cast(1e6), 4, 10, 2}) + ->Args({4096, static_cast(1e7), 4, 10, 2}) ->UseManualTime() ->MinTime(120.0) ->MinWarmUpTime(10.0) From 2092017fcd1a2411b93db20aab8a657f621773d5 Mon Sep 17 00:00:00 2001 From: Tuomas Koskela Date: Fri, 24 Jan 2025 10:13:26 +0000 Subject: [PATCH 03/14] Add missing benchmark definition --- cpp/benchmarks/algorithms_mpi.cc | 29 +++++++++++++++++++++++++++++ 1 file changed, 29 insertions(+) diff --git a/cpp/benchmarks/algorithms_mpi.cc b/cpp/benchmarks/algorithms_mpi.cc index 3d35dbf77..b2dbfb7a3 100644 --- a/cpp/benchmarks/algorithms_mpi.cc +++ b/cpp/benchmarks/algorithms_mpi.cc @@ -200,6 +200,35 @@ BENCHMARK_DEFINE_F(AlgoFixtureMPI, FbOnnxDistributeImage)(benchmark::State &stat } } +BENCHMARK_DEFINE_F(AlgoFixtureMPI, FbOnnxDistributeGrid)(benchmark::State &state) { + // Create the algorithm - has to be done there to reset the internal state. + // If done in the fixture repeats would start at the solution and converge immediately. + + // TODO: Wavelets are constructed but not used in the factory method + auto const wavelets = factory::wavelet_operator_factory>( + factory::distributed_wavelet_operator::serial, m_sara, m_imsizey, m_imsizex); + + t_real const beta = m_sigma * m_sigma; + t_real const gamma = 0.0001; + + std::string tf_model_path = purify::models_directory() + "/snr_15_model_dynamic.onnx"; + + m_fb = factory::fb_factory>( + factory::algo_distribution::mpi_serial, m_measurements_distribute_grid, wavelets, m_uv_data, + m_sigma, beta, gamma, m_imsizey, m_imsizex, m_sara.size(), state.range(3), true, true, + false, 1e-3, 1e-2, 50, 1.0, tf_model_path, factory::g_proximal_type::TFGProximal); + + // Benchmark the application of the algorithm + while (state.KeepRunning()) { + auto start = std::chrono::high_resolution_clock::now(); + auto result = (*m_fb)(); + auto end = std::chrono::high_resolution_clock::now(); + std::cout << "Converged? " << result.good << " , niters = " << result.niters << std::endl; + state.SetIterationTime(b_utilities::duration(start, end, m_world)); + } +} + + BENCHMARK_REGISTER_F(AlgoFixtureMPI, FbOnnxDistributeImage) //->Apply(b_utilities::Arguments) ->Args({128, 10000, 4, 10, 1}) From e697291629a15a31bc039d3c5ee4af8f28cd4341 Mon Sep 17 00:00:00 2001 From: Tuomas Koskela Date: Fri, 31 Jan 2025 12:47:02 +0000 Subject: [PATCH 04/14] Always generate visibilities to avoid filesystem problems --- cpp/benchmarks/utilities.cc | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/cpp/benchmarks/utilities.cc b/cpp/benchmarks/utilities.cc index e43c8898d..13f5aeb5e 100644 --- a/cpp/benchmarks/utilities.cc +++ b/cpp/benchmarks/utilities.cc @@ -101,16 +101,16 @@ utilities::vis_params random_measurements(t_int size, const t_real max_w, const std::ifstream vis_file_str(vis_file); utilities::vis_params uv_data; - if (vis_file_str.good()) { + if (false) { PURIFY_INFO("Reading random visibilities from file {}", vis_file); uv_data = utilities::read_visibility(vis_file, true); uv_data.units = utilities::vis_units::radians; } else { - PURIFY_INFO("Generating random visibilities and writing to {}", vis_file); + PURIFY_INFO("Generating random visibilities"); t_real const sigma_m = constant::pi / 3; uv_data = utilities::random_sample_density(size, 0, sigma_m, max_w); uv_data.units = utilities::vis_units::radians; - utilities::write_visibility(uv_data, vis_file, true); + // utilities::write_visibility(uv_data, vis_file, true); } return uv_data; } From 515887707c8f77ac148848b02f0374880a0fdca1 Mon Sep 17 00:00:00 2001 From: Tuomas Koskela Date: Mon, 10 Feb 2025 15:17:32 +0000 Subject: [PATCH 05/14] Fix finding google benchmark --- cmake_files/dependencies.cmake | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/cmake_files/dependencies.cmake b/cmake_files/dependencies.cmake index 146ea9c87..caf09c556 100644 --- a/cmake_files/dependencies.cmake +++ b/cmake_files/dependencies.cmake @@ -19,7 +19,6 @@ endif() find_package(CFitsIO REQUIRED) find_package(yaml-cpp REQUIRED) -find_package(benchmark REQUIRED) if(CMAKE_VERSION VERSION_GREATER_EQUAL "3.30.0") cmake_policy(SET CMP0167 NEW) @@ -69,10 +68,9 @@ if(tests OR examples) file(COPY data DESTINATION .) endif() -#if(benchmarks) -#find_package(benchmark REQUIRED CONFIG) - #include(AddBenchmark) -#endif() +if(benchmarks) + find_package(benchmark REQUIRED CONFIG) +endif() # Always find open-mp, since it may be used by sopt if (openmp) From bf03a19d490165c3b4800a654ee1357872d387e4 Mon Sep 17 00:00:00 2001 From: Tuomas Koskela Date: Tue, 11 Feb 2025 14:39:14 +0000 Subject: [PATCH 06/14] fix cmake --- cpp/benchmarks/CMakeLists.txt | 24 ++++++++++++++---------- 1 file changed, 14 insertions(+), 10 deletions(-) diff --git a/cpp/benchmarks/CMakeLists.txt b/cpp/benchmarks/CMakeLists.txt index c67699831..a25787350 100644 --- a/cpp/benchmarks/CMakeLists.txt +++ b/cpp/benchmarks/CMakeLists.txt @@ -1,15 +1,19 @@ -include_directories("${PROJECT_SOURCE_DIR}/cpp" "${CMAKE_CURRENT_BINARY_DIR}/include") +include_directories("${PROJECT_SOURCE_DIR}/cpp" "${CMAKE_CURRENT_BINARY_DIR}/include" "${benchmark_DIR}/include") add_executable(measurement_operator utilities.cc measurement_operator.cc) -target_link_libraries(measurement_operator benchmark libpurify) +target_link_libraries(measurement_operator benchmark::benchmark libpurify) + add_executable(algorithms utilities.cc algorithms.cc) -target_link_libraries(algorithms benchmark libpurify) +target_link_libraries(algorithms benchmark::benchmark libpurify) + add_executable(wavelet_operator utilities.cc wavelet_operator.cc) -target_link_libraries(wavelet_operator benchmark libpurify) +target_link_libraries(wavelet_operator benchmark::benchmark libpurify) + add_executable(fft utilities.cc fft.cc) -target_link_libraries(fft benchmark libpurify) +target_link_libraries(fft benchmark::benchmark libpurify) + add_executable(degridding utilities.cc degridding.cc) -target_link_libraries(degridding benchmark libpurify) +target_link_libraries(degridding benchmark::benchmark libpurify) # Skip ArrayFire benchmarks for now, add back later if needed # if(doaf) @@ -20,15 +24,15 @@ target_link_libraries(degridding benchmark libpurify) if(dompi) add_executable(mpi_benchmark_MO main.cc utilities.cc measurement_operator_mpi.cc) - target_link_libraries(mpi_benchmark_MO ${MPI_LIBRARIES} benchmark libpurify) + target_link_libraries(mpi_benchmark_MO ${MPI_LIBRARIES} benchmark::benchmark libpurify) #target_include_directories(mpi_benchmark_MO PUBLIC "${PROJECT_SOURCE_DIR}/cpp" "${CMAKE_CURRENT_BINARY_DIR}/include") add_executable(mpi_benchmark_MO_wproj main.cc utilities.cc measurement_operator_wproj.cc) - target_link_libraries(mpi_benchmark_MO_wproj ${MPI_LIBRARIES} benchmark libpurify) + target_link_libraries(mpi_benchmark_MO_wproj ${MPI_LIBRARIES} benchmark::benchmark libpurify) #target_include_directories(mpi_benchmark_MO_wproj PUBLIC "${PROJECT_SOURCE_DIR}/cpp" "${CMAKE_CURRENT_BINARY_DIR}/include") add_executable(mpi_benchmark_algorithms main.cc utilities.cc algorithms_mpi.cc) - target_link_libraries(mpi_benchmark_algorithms ${MPI_LIBRARIES} benchmark libpurify) + target_link_libraries(mpi_benchmark_algorithms ${MPI_LIBRARIES} benchmark::benchmark libpurify) #target_include_directories(mpi_benchmark_PADMM PUBLIC "${PROJECT_SOURCE_DIR}/cpp" "${CMAKE_CURRENT_BINARY_DIR}/include") add_executable(mpi_benchmark_WLO main.cc utilities.cc wavelet_operator_mpi.cc) - target_link_libraries(mpi_benchmark_WLO ${MPI_LIBRARIES} benchmark libpurify) + target_link_libraries(mpi_benchmark_WLO ${MPI_LIBRARIES} benchmark::benchmark libpurify) #target_include_directories(mpi_benchmark_WLO PUBLIC "${PROJECT_SOURCE_DIR}/cpp" "${CMAKE_CURRENT_BINARY_DIR}/include") endif() From 7a3b5cbd9441d45fc11235eb2a102283978a6115 Mon Sep 17 00:00:00 2001 From: Tuomas Koskela Date: Tue, 11 Feb 2025 14:46:30 +0000 Subject: [PATCH 07/14] linting --- cpp/benchmarks/algorithms_mpi.cc | 26 ++++++++++++-------------- 1 file changed, 12 insertions(+), 14 deletions(-) diff --git a/cpp/benchmarks/algorithms_mpi.cc b/cpp/benchmarks/algorithms_mpi.cc index 027bf3541..4e0181ad7 100644 --- a/cpp/benchmarks/algorithms_mpi.cc +++ b/cpp/benchmarks/algorithms_mpi.cc @@ -89,8 +89,8 @@ BENCHMARK_DEFINE_F(AlgoFixtureMPI, PadmmDistributeImage)(benchmark::State &state m_padmm = factory::padmm_factory>( factory::algo_distribution::mpi_distributed, m_measurements_distribute_image, wavelets, - m_uv_data, m_sigma, m_imsizey, m_imsizex, m_sara.size(), state.range(3), true, true, - false, 1e-3, 1e-2, 50, 1.0, 1.0); + m_uv_data, m_sigma, m_imsizey, m_imsizex, m_sara.size(), state.range(3), true, true, false, + 1e-3, 1e-2, 50, 1.0, 1.0); // Benchmark the application of the algorithm while (state.KeepRunning()) { @@ -110,8 +110,8 @@ BENCHMARK_DEFINE_F(AlgoFixtureMPI, PadmmDistributeGrid)(benchmark::State &state) m_padmm = factory::padmm_factory>( factory::algo_distribution::mpi_distributed, m_measurements_distribute_grid, wavelets, - m_uv_data, m_sigma, m_imsizey, m_imsizex, m_sara.size(), state.range(3), true, true, - false, 1e-3, 1e-2, 50, 1.0, 1.0); + m_uv_data, m_sigma, m_imsizey, m_imsizex, m_sara.size(), state.range(3), true, true, false, + 1e-3, 1e-2, 50, 1.0, 1.0); // Benchmark the application of the algorithm while (state.KeepRunning()) { @@ -134,8 +134,8 @@ BENCHMARK_DEFINE_F(AlgoFixtureMPI, FbDistributeImage)(benchmark::State &state) { m_fb = factory::fb_factory>( factory::algo_distribution::mpi_serial, m_measurements_distribute_image, wavelets, m_uv_data, - m_sigma, beta, gamma, m_imsizey, m_imsizex, m_sara.size(), state.range(3), true, true, - false, 1e-3, 1e-2, 50, 1.0); + m_sigma, beta, gamma, m_imsizey, m_imsizex, m_sara.size(), state.range(3), true, true, false, + 1e-3, 1e-2, 50, 1.0); // Benchmark the application of the algorithm while (state.KeepRunning()) { @@ -158,8 +158,8 @@ BENCHMARK_DEFINE_F(AlgoFixtureMPI, FbDistributeGrid)(benchmark::State &state) { m_fb = factory::fb_factory>( factory::algo_distribution::mpi_serial, m_measurements_distribute_grid, wavelets, m_uv_data, - m_sigma, beta, gamma, m_imsizey, m_imsizex, m_sara.size(), state.range(3), true, true, - false, 1e-3, 1e-2, 50, 1.0); + m_sigma, beta, gamma, m_imsizey, m_imsizex, m_sara.size(), state.range(3), true, true, false, + 1e-3, 1e-2, 50, 1.0); // Benchmark the application of the algorithm while (state.KeepRunning()) { @@ -187,8 +187,8 @@ BENCHMARK_DEFINE_F(AlgoFixtureMPI, FbOnnxDistributeImage)(benchmark::State &stat m_fb = factory::fb_factory>( factory::algo_distribution::mpi_serial, m_measurements_distribute_image, wavelets, m_uv_data, - m_sigma, beta, gamma, m_imsizey, m_imsizex, m_sara.size(), state.range(3), true, true, - false, 1e-3, 1e-2, 50, 1.0, tf_model_path, nondiff_func_type::Denoiser); + m_sigma, beta, gamma, m_imsizey, m_imsizex, m_sara.size(), state.range(3), true, true, false, + 1e-3, 1e-2, 50, 1.0, tf_model_path, nondiff_func_type::Denoiser); // Benchmark the application of the algorithm while (state.KeepRunning()) { @@ -215,8 +215,8 @@ BENCHMARK_DEFINE_F(AlgoFixtureMPI, FbOnnxDistributeGrid)(benchmark::State &state m_fb = factory::fb_factory>( factory::algo_distribution::mpi_serial, m_measurements_distribute_grid, wavelets, m_uv_data, - m_sigma, beta, gamma, m_imsizey, m_imsizex, m_sara.size(), state.range(3), true, true, - false, 1e-3, 1e-2, 50, 1.0, tf_model_path, factory::g_proximal_type::TFGProximal); + m_sigma, beta, gamma, m_imsizey, m_imsizex, m_sara.size(), state.range(3), true, true, false, + 1e-3, 1e-2, 50, 1.0, tf_model_path, factory::g_proximal_type::TFGProximal); // Benchmark the application of the algorithm while (state.KeepRunning()) { @@ -228,7 +228,6 @@ BENCHMARK_DEFINE_F(AlgoFixtureMPI, FbOnnxDistributeGrid)(benchmark::State &state } } - BENCHMARK_REGISTER_F(AlgoFixtureMPI, FbOnnxDistributeImage) //->Apply(b_utilities::Arguments) ->Args({128, 10000, 4, 10, 1}) @@ -259,7 +258,6 @@ BENCHMARK_REGISTER_F(AlgoFixtureMPI, FbOnnxDistributeGrid) ->Repetitions(3) //->ReportAggregatesOnly(true) ->Unit(benchmark::kMillisecond); - #endif BENCHMARK_REGISTER_F(AlgoFixtureMPI, FbDistributeImage) From 24092be156348e9bf40d9434d320eee6cb1f7bdf Mon Sep 17 00:00:00 2001 From: Tuomas Koskela Date: Thu, 27 Feb 2025 13:01:08 +0000 Subject: [PATCH 08/14] Fix nondiff_func_type --- cpp/benchmarks/algorithms_mpi.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/cpp/benchmarks/algorithms_mpi.cc b/cpp/benchmarks/algorithms_mpi.cc index 4e0181ad7..2bce26bbb 100644 --- a/cpp/benchmarks/algorithms_mpi.cc +++ b/cpp/benchmarks/algorithms_mpi.cc @@ -216,7 +216,7 @@ BENCHMARK_DEFINE_F(AlgoFixtureMPI, FbOnnxDistributeGrid)(benchmark::State &state m_fb = factory::fb_factory>( factory::algo_distribution::mpi_serial, m_measurements_distribute_grid, wavelets, m_uv_data, m_sigma, beta, gamma, m_imsizey, m_imsizex, m_sara.size(), state.range(3), true, true, false, - 1e-3, 1e-2, 50, 1.0, tf_model_path, factory::g_proximal_type::TFGProximal); + 1e-3, 1e-2, 50, 1.0, tf_model_path, nondiff_func_type::Denoiser); // Benchmark the application of the algorithm while (state.KeepRunning()) { From fdd2a1fe40ffe9c1f0a530de63d9ccb94969cc3c Mon Sep 17 00:00:00 2001 From: Tuomas Koskela Date: Thu, 20 Mar 2025 11:13:09 +0000 Subject: [PATCH 09/14] Add argument to control caching visibilities in a file --- cpp/benchmarks/utilities.cc | 12 ++++++++---- cpp/benchmarks/utilities.h | 3 ++- 2 files changed, 10 insertions(+), 5 deletions(-) diff --git a/cpp/benchmarks/utilities.cc b/cpp/benchmarks/utilities.cc index 13f5aeb5e..437c2d1a0 100644 --- a/cpp/benchmarks/utilities.cc +++ b/cpp/benchmarks/utilities.cc @@ -93,15 +93,17 @@ std::tuple dirty_measurements( return std::make_tuple(uv_data, sigma); } -utilities::vis_params random_measurements(t_int size, const t_real max_w, const t_int id) { +utilities::vis_params random_measurements(t_int size, const t_real max_w, const t_int id, + const bool cache_visibilities) { + utilities::vis_params uv_data; + std::stringstream filename; filename << "random_" << size << "_"; filename << std::to_string(id) << ".vis"; std::string const vis_file = visibility_filename(filename.str()); std::ifstream vis_file_str(vis_file); - utilities::vis_params uv_data; - if (false) { + if (cache_visibilities and vis_file_str.good()) { PURIFY_INFO("Reading random visibilities from file {}", vis_file); uv_data = utilities::read_visibility(vis_file, true); uv_data.units = utilities::vis_units::radians; @@ -110,7 +112,9 @@ utilities::vis_params random_measurements(t_int size, const t_real max_w, const t_real const sigma_m = constant::pi / 3; uv_data = utilities::random_sample_density(size, 0, sigma_m, max_w); uv_data.units = utilities::vis_units::radians; - // utilities::write_visibility(uv_data, vis_file, true); + if (cache_visibilities) { + utilities::write_visibility(uv_data, vis_file, true); + } } return uv_data; } diff --git a/cpp/benchmarks/utilities.h b/cpp/benchmarks/utilities.h index 4f204cb5f..531b8bfb7 100644 --- a/cpp/benchmarks/utilities.h +++ b/cpp/benchmarks/utilities.h @@ -28,7 +28,8 @@ std::tuple dirty_measurements( Image const& ground_truth_image, t_uint number_of_vis, t_real snr, const t_real& cellsize); -utilities::vis_params random_measurements(t_int size, const t_real max_w = 100, const t_int id = 0); +utilities::vis_params random_measurements(t_int size, const t_real max_w = 100, const t_int id = 0, + const bool cache_visibilities = false); #ifdef PURIFY_MPI double duration(std::chrono::high_resolution_clock::time_point start, std::chrono::high_resolution_clock::time_point end, From 5a766f64be4ddbd9fe6a9bae685b64954e160e93 Mon Sep 17 00:00:00 2001 From: Tuomas Koskela Date: Mon, 24 Mar 2025 16:33:38 +0000 Subject: [PATCH 10/14] Fix choice of algorithm --- cpp/benchmarks/algorithms_mpi.cc | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/cpp/benchmarks/algorithms_mpi.cc b/cpp/benchmarks/algorithms_mpi.cc index 54528f3f3..3a3f1f6de 100644 --- a/cpp/benchmarks/algorithms_mpi.cc +++ b/cpp/benchmarks/algorithms_mpi.cc @@ -295,10 +295,10 @@ BENCHMARK_REGISTER_F(AlgoFixtureMPI, PadmmDistributeImage) ->Args({128, 10000, 4, 10, 1}) ->Args({1024, static_cast(1e6), 4, 10, 1}) ->Args({1024, static_cast(1e7), 4, 10, 1}) - ->Args({2048, static_cast(1e6), 4, 10, 2}) - ->Args({2048, static_cast(1e7), 4, 10, 2}) - ->Args({4096, static_cast(1e6), 4, 10, 2}) - ->Args({4096, static_cast(1e7), 4, 10, 2}) + ->Args({2048, static_cast(1e6), 4, 10, 1}) + ->Args({2048, static_cast(1e7), 4, 10, 1}) + ->Args({4096, static_cast(1e6), 4, 10, 1}) + ->Args({4096, static_cast(1e7), 4, 10, 1}) ->UseManualTime() ->MinTime(120.0) ->MinWarmUpTime(10.0) From aa0562bfa122c2670c0e4e67d55782bad5c052b2 Mon Sep 17 00:00:00 2001 From: Tuomas Koskela Date: Wed, 2 Apr 2025 16:03:50 +0100 Subject: [PATCH 11/14] Fix cmake version to <4.0 --- .github/workflows/ci.yml | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 0b40e553c..50512ebc7 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -63,6 +63,11 @@ jobs: steps: - uses: actions/checkout@v4 + - name: Setup cmake + uses: jwlawson/actions-setup-cmake@v2 + with: + cmake-version: '3.31.6' + # Enable tmate debugging of manually-triggered workflows if the input option was provided - name: Setup tmate session uses: mxschmitt/action-tmate@v3 @@ -203,6 +208,11 @@ jobs: with: name: dependencies-${{ matrix.os }}-${{ matrix.cxx }}-${{ matrix.mpi }}-${{ matrix.omp }} + - name: Setup cmake + uses: jwlawson/actions-setup-cmake@v2 + with: + cmake-version: '3.31.6' + - name: Unpack dependencies run: tar xfv dependencies.tar @@ -284,6 +294,11 @@ jobs: with: name: dependencies-${{ matrix.os }}-${{ matrix.cxx }}-${{ matrix.mpi }}-${{ matrix.omp }} + - name: Setup cmake + uses: jwlawson/actions-setup-cmake@v2 + with: + cmake-version: '3.31.6' + - name: Unpack dependencies run: tar xfv dependencies.tar - name: Install Dependencies on Ubunutu @@ -312,7 +327,7 @@ jobs: cmake .. --fresh -DCMAKE_INSTALL_PREFIX=${{github.workspace}}/local -Donnxrt=ON -Dhdf5=ON -Ddocasa=OFF -Ddompi=${{matrix.mpi}} -Dopenmp=${{matrix.omp}} -Dtests=OFF -Dexamples=ON -Dbenchmarks=ON make -j$(nproc --ignore 1) install - + doc: needs: dependencies @@ -341,6 +356,11 @@ jobs: with: name: dependencies-${{ matrix.os }}-${{ matrix.cxx }}-${{ matrix.mpi }}-${{ matrix.omp }} + - name: Setup cmake + uses: jwlawson/actions-setup-cmake@v2 + with: + cmake-version: '3.31.6' + - name: Unpack dependencies run: tar xfv dependencies.tar From 1518552de26ab12cd4c761fb9bfd5ceae162fb9b Mon Sep 17 00:00:00 2001 From: Tuomas Koskela Date: Wed, 2 Apr 2025 16:06:11 +0100 Subject: [PATCH 12/14] Fix cmake version to <4.0 to work around issue on github actions --- .github/workflows/ci.yml | 22 +++++++++++++++++++++- 1 file changed, 21 insertions(+), 1 deletion(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 0b40e553c..50512ebc7 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -63,6 +63,11 @@ jobs: steps: - uses: actions/checkout@v4 + - name: Setup cmake + uses: jwlawson/actions-setup-cmake@v2 + with: + cmake-version: '3.31.6' + # Enable tmate debugging of manually-triggered workflows if the input option was provided - name: Setup tmate session uses: mxschmitt/action-tmate@v3 @@ -203,6 +208,11 @@ jobs: with: name: dependencies-${{ matrix.os }}-${{ matrix.cxx }}-${{ matrix.mpi }}-${{ matrix.omp }} + - name: Setup cmake + uses: jwlawson/actions-setup-cmake@v2 + with: + cmake-version: '3.31.6' + - name: Unpack dependencies run: tar xfv dependencies.tar @@ -284,6 +294,11 @@ jobs: with: name: dependencies-${{ matrix.os }}-${{ matrix.cxx }}-${{ matrix.mpi }}-${{ matrix.omp }} + - name: Setup cmake + uses: jwlawson/actions-setup-cmake@v2 + with: + cmake-version: '3.31.6' + - name: Unpack dependencies run: tar xfv dependencies.tar - name: Install Dependencies on Ubunutu @@ -312,7 +327,7 @@ jobs: cmake .. --fresh -DCMAKE_INSTALL_PREFIX=${{github.workspace}}/local -Donnxrt=ON -Dhdf5=ON -Ddocasa=OFF -Ddompi=${{matrix.mpi}} -Dopenmp=${{matrix.omp}} -Dtests=OFF -Dexamples=ON -Dbenchmarks=ON make -j$(nproc --ignore 1) install - + doc: needs: dependencies @@ -341,6 +356,11 @@ jobs: with: name: dependencies-${{ matrix.os }}-${{ matrix.cxx }}-${{ matrix.mpi }}-${{ matrix.omp }} + - name: Setup cmake + uses: jwlawson/actions-setup-cmake@v2 + with: + cmake-version: '3.31.6' + - name: Unpack dependencies run: tar xfv dependencies.tar From 312375f97cda44634408cde970031e0d8b1e540b Mon Sep 17 00:00:00 2001 From: Tuomas Koskela Date: Wed, 2 Apr 2025 16:08:54 +0100 Subject: [PATCH 13/14] indentation --- .github/workflows/ci.yml | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 50512ebc7..52b2ca4d4 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -64,9 +64,9 @@ jobs: - uses: actions/checkout@v4 - name: Setup cmake - uses: jwlawson/actions-setup-cmake@v2 - with: - cmake-version: '3.31.6' + uses: jwlawson/actions-setup-cmake@v2 + with: + cmake-version: '3.31.6' # Enable tmate debugging of manually-triggered workflows if the input option was provided - name: Setup tmate session @@ -209,9 +209,9 @@ jobs: name: dependencies-${{ matrix.os }}-${{ matrix.cxx }}-${{ matrix.mpi }}-${{ matrix.omp }} - name: Setup cmake - uses: jwlawson/actions-setup-cmake@v2 - with: - cmake-version: '3.31.6' + uses: jwlawson/actions-setup-cmake@v2 + with: + cmake-version: '3.31.6' - name: Unpack dependencies run: tar xfv dependencies.tar @@ -295,9 +295,9 @@ jobs: name: dependencies-${{ matrix.os }}-${{ matrix.cxx }}-${{ matrix.mpi }}-${{ matrix.omp }} - name: Setup cmake - uses: jwlawson/actions-setup-cmake@v2 - with: - cmake-version: '3.31.6' + uses: jwlawson/actions-setup-cmake@v2 + with: + cmake-version: '3.31.6' - name: Unpack dependencies run: tar xfv dependencies.tar From f1361f974724ce64521031ff307174e0c8f10c98 Mon Sep 17 00:00:00 2001 From: Tuomas Koskela Date: Wed, 2 Apr 2025 16:12:05 +0100 Subject: [PATCH 14/14] One more --- .github/workflows/ci.yml | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 52b2ca4d4..6febafd4b 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -357,9 +357,9 @@ jobs: name: dependencies-${{ matrix.os }}-${{ matrix.cxx }}-${{ matrix.mpi }}-${{ matrix.omp }} - name: Setup cmake - uses: jwlawson/actions-setup-cmake@v2 - with: - cmake-version: '3.31.6' + uses: jwlawson/actions-setup-cmake@v2 + with: + cmake-version: '3.31.6' - name: Unpack dependencies run: tar xfv dependencies.tar