From 777fd86e5a966dd03048e70425cc685fce5e085b Mon Sep 17 00:00:00 2001 From: Arseniy Obolenskiy Date: Sat, 25 Jan 2025 23:54:20 +0100 Subject: [PATCH 1/6] Implement PoC of build step cache for Ubuntu gcc --- .github/workflows/main.yml | 85 +++++++++++++++++++++++++++----------- .gitignore | 1 + modules/ref/CMakeLists.txt | 9 ++++ scripts/run_mpi.sh | 16 +++---- scripts/run_threads.sh | 24 +++++------ tasks/CMakeLists.txt | 6 +++ 6 files changed, 96 insertions(+), 45 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index a91735539..116192bab 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -61,7 +61,7 @@ jobs: -D CMAKE_C_COMPILER_LAUNCHER=ccache -D CMAKE_CXX_COMPILER_LAUNCHER=ccache -G Ninja -D USE_SEQ=ON -D USE_MPI=ON -D USE_OMP=ON -D USE_TBB=ON -D USE_STL=ON -D USE_FUNC_TESTS=ON -D USE_PERF_TESTS=ON - -D CMAKE_BUILD_TYPE=RELEASE + -D CMAKE_BUILD_TYPE=RELEASE -DCMAKE_INSTALL_PREFIX=install env: CC: gcc-14 CXX: g++-14 @@ -76,6 +76,39 @@ jobs: env: CC: gcc-14 CXX: g++-14 + - name: Install project + run: | + cmake --build build --target install + - name: Upload installed package + uses: actions/upload-artifact@v4.3.0 + with: + name: ubuntu-gcc-install + path: install + ubuntu-gcc-test: + needs: + - ubuntu-gcc-build + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + with: + submodules: recursive + - name: Setup environment + run: | + sudo add-apt-repository ppa:ubuntu-toolchain-r/test + sudo apt-get update + sudo apt-get install gcc-14 g++-14 + sudo apt-get install ninja-build + sudo apt-get install mpich + sudo apt-get install libomp-dev + sudo apt-get install valgrind + python3 -m pip install -r requirements.txt + - name: Download installed package + uses: actions/download-artifact@v4 + with: + name: ubuntu-gcc-install + path: install + - name: Add install/bin to PATH + run: echo "$(pwd)/install/bin" >> $GITHUB_PATH - name: Run func tests (MPI, num_proc=1) run: | source scripts/run_mpi.sh @@ -116,9 +149,9 @@ jobs: run: source scripts/run_threads.sh env: OMP_NUM_THREADS: 4 - ubuntu-gcc-build-extended: + ubuntu-gcc-test-extended: needs: - - ubuntu-gcc-build + - ubuntu-gcc-test runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 @@ -134,28 +167,14 @@ jobs: sudo apt-get install libomp-dev sudo apt-get install valgrind python3 -m pip install -r requirements.txt - - name: ccache - uses: hendrikmuhs/ccache-action@v1.2 + + - name: Download installed package + uses: actions/download-artifact@v4 with: - key: ${{ github.job }} - create-symlink: true - max-size: 1G - - name: CMake configure - run: > - cmake -S . -B build - -D CMAKE_C_COMPILER_LAUNCHER=ccache -D CMAKE_CXX_COMPILER_LAUNCHER=ccache - -G Ninja -D USE_SEQ=ON -D USE_MPI=ON -D USE_OMP=ON -D USE_TBB=ON -D USE_STL=ON - -D USE_FUNC_TESTS=ON -D USE_PERF_TESTS=ON - -D CMAKE_BUILD_TYPE=RELEASE - env: - CC: gcc-14 - CXX: g++-14 - - name: Build project - run: | - cmake --build build --parallel - env: - CC: gcc-14 - CXX: g++-14 + name: ubuntu-gcc-install + path: install + - name: Add install/bin to PATH + run: echo "$(pwd)/install/bin" >> $GITHUB_PATH - name: Run func tests (threads, num_threads=5) run: source scripts/run_threads.sh env: @@ -229,6 +248,8 @@ jobs: env: CC: clang-19 CXX: clang++-19 + - name: Add build/bin to PATH + run: echo "$(pwd)/build/bin" >> $GITHUB_PATH - name: Run func tests (MPI, num_proc=1) run: | source scripts/run_mpi.sh @@ -309,6 +330,8 @@ jobs: env: CC: clang-19 CXX: clang++-19 + - name: Add build/bin to PATH + run: echo "$(pwd)/build/bin" >> $GITHUB_PATH - name: Run tests (threads, num_threads=5) run: source scripts/run_threads.sh env: @@ -381,6 +404,8 @@ jobs: env: CC: clang-19 CXX: clang++-19 + - name: Add build/bin to PATH + run: echo "$(pwd)/build/bin" >> $GITHUB_PATH - name: Run tests (MPI) run: | source scripts/run_mpi.sh "--oversubscribe" @@ -458,6 +483,8 @@ jobs: env: CC: clang-19 CXX: clang++-19 + - name: Add build/bin to PATH + run: echo "$(pwd)/build/bin" >> $GITHUB_PATH - name: Run tests (threads, num_threads=5) run: source scripts/run_threads.sh env: @@ -531,6 +558,8 @@ jobs: - name: Build project run: | cmake --build build --parallel + - name: Add build/bin to PATH + run: echo "$(pwd)/build/bin" >> $GITHUB_PATH - name: Run func tests (MPI, num_proc=1) run: | source scripts/run_mpi.sh @@ -603,6 +632,8 @@ jobs: - name: Build project run: | cmake --build build --parallel + - name: Add build/bin to PATH + run: echo "$(pwd)/build/bin" >> $GITHUB_PATH - name: Run tests (threads, num_threads=5) run: source scripts/run_threads.sh env: @@ -899,7 +930,7 @@ jobs: CLANG_BUILD: 1 ubuntu-gcc-build-codecov: needs: - - ubuntu-gcc-build-extended + - ubuntu-gcc-test-extended - ubuntu-clang-build-extended - macos-clang-build-extended runs-on: ubuntu-latest @@ -934,6 +965,8 @@ jobs: - name: Build project run: | cmake --build build --parallel + - name: Add build/bin to PATH + run: echo "$(pwd)/build/bin" >> $GITHUB_PATH - name: Run tests (MPI) run: | source scripts/run_mpi.sh @@ -1025,6 +1058,8 @@ jobs: env: CC: gcc-14 CXX: g++-14 + - name: Add build/bin to PATH + run: echo "$(pwd)/build/bin" >> $GITHUB_PATH - name: Run perf count checker run: | source scripts/run_perf_count_checker.sh diff --git a/.gitignore b/.gitignore index 6e473f43e..d8b266179 100644 --- a/.gitignore +++ b/.gitignore @@ -12,3 +12,4 @@ sln/ CMakeSettings.json .DS_Store .cache +install diff --git a/modules/ref/CMakeLists.txt b/modules/ref/CMakeLists.txt index 4b10cc49a..3887641b1 100644 --- a/modules/ref/CMakeLists.txt +++ b/modules/ref/CMakeLists.txt @@ -42,3 +42,12 @@ target_link_libraries(${exec_func_tests} PUBLIC ${exec_func_lib}) enable_testing() add_test(NAME ${exec_func_tests} COMMAND ${exec_func_tests}) + +# Installation rules +install(TARGETS ${exec_func_lib} + ARCHIVE DESTINATION lib + LIBRARY DESTINATION lib + RUNTIME DESTINATION bin) + +install(TARGETS ${exec_func_tests} + RUNTIME DESTINATION bin) diff --git a/scripts/run_mpi.sh b/scripts/run_mpi.sh index 92d2835a9..d6aac47ea 100644 --- a/scripts/run_mpi.sh +++ b/scripts/run_mpi.sh @@ -2,17 +2,17 @@ source build/ppc_opencv/install/bin/setup_vars_opencv4.sh if [[ $OSTYPE == "linux-gnu" && -z "$ASAN_RUN" ]]; then - valgrind --error-exitcode=1 --leak-check=full --show-leak-kinds=all ./build/bin/core_func_tests - valgrind --error-exitcode=1 --leak-check=full --show-leak-kinds=all ./build/bin/ref_func_tests + valgrind --error-exitcode=1 --leak-check=full --show-leak-kinds=all core_func_tests + valgrind --error-exitcode=1 --leak-check=full --show-leak-kinds=all ref_func_tests -# valgrind --error-exitcode=1 --leak-check=full --show-leak-kinds=all ./build/bin/all_func_tests -# valgrind --error-exitcode=1 --leak-check=full --show-leak-kinds=all ./build/bin/mpi_func_tests +# valgrind --error-exitcode=1 --leak-check=full --show-leak-kinds=all all_func_tests +# valgrind --error-exitcode=1 --leak-check=full --show-leak-kinds=all mpi_func_tests fi -./build/bin/core_func_tests --gtest_also_run_disabled_tests --gtest_repeat=10 --gtest_recreate_environments_when_repeating -./build/bin/ref_func_tests --gtest_also_run_disabled_tests --gtest_repeat=10 --gtest_recreate_environments_when_repeating +core_func_tests --gtest_also_run_disabled_tests --gtest_repeat=10 --gtest_recreate_environments_when_repeating +ref_func_tests --gtest_also_run_disabled_tests --gtest_repeat=10 --gtest_recreate_environments_when_repeating if [[ -z "$ASAN_RUN" ]]; then - mpirun $1 -np $PROC_COUNT ./build/bin/all_func_tests --gtest_also_run_disabled_tests --gtest_repeat=10 --gtest_recreate_environments_when_repeating - mpirun $1 -np $PROC_COUNT ./build/bin/mpi_func_tests --gtest_also_run_disabled_tests --gtest_repeat=10 --gtest_recreate_environments_when_repeating + mpirun $1 -np $PROC_COUNT all_func_tests --gtest_also_run_disabled_tests --gtest_repeat=10 --gtest_recreate_environments_when_repeating + mpirun $1 -np $PROC_COUNT mpi_func_tests --gtest_also_run_disabled_tests --gtest_repeat=10 --gtest_recreate_environments_when_repeating fi diff --git a/scripts/run_threads.sh b/scripts/run_threads.sh index 731276bc8..ff82751ff 100644 --- a/scripts/run_threads.sh +++ b/scripts/run_threads.sh @@ -2,19 +2,19 @@ source build/ppc_opencv/install/bin/setup_vars_opencv4.sh if [[ $OSTYPE == "linux-gnu" && -z "$ASAN_RUN" ]]; then - valgrind --error-exitcode=1 --leak-check=full --show-leak-kinds=all ./build/bin/core_func_tests - valgrind --error-exitcode=1 --leak-check=full --show-leak-kinds=all ./build/bin/ref_func_tests + valgrind --error-exitcode=1 --leak-check=full --show-leak-kinds=all core_func_tests + valgrind --error-exitcode=1 --leak-check=full --show-leak-kinds=all ref_func_tests -# valgrind --error-exitcode=1 --leak-check=full --show-leak-kinds=all ./build/bin/omp_func_tests - valgrind --error-exitcode=1 --leak-check=full --show-leak-kinds=all ./build/bin/seq_func_tests - valgrind --error-exitcode=1 --leak-check=full --show-leak-kinds=all ./build/bin/stl_func_tests -# valgrind --error-exitcode=1 --leak-check=full --show-leak-kinds=all ./build/bin/tbb_func_tests +# valgrind --error-exitcode=1 --leak-check=full --show-leak-kinds=all omp_func_tests + valgrind --error-exitcode=1 --leak-check=full --show-leak-kinds=all seq_func_tests + valgrind --error-exitcode=1 --leak-check=full --show-leak-kinds=all stl_func_tests +# valgrind --error-exitcode=1 --leak-check=full --show-leak-kinds=all tbb_func_tests fi -./build/bin/core_func_tests --gtest_also_run_disabled_tests --gtest_repeat=3 --gtest_recreate_environments_when_repeating -./build/bin/ref_func_tests --gtest_also_run_disabled_tests --gtest_repeat=3 --gtest_recreate_environments_when_repeating +core_func_tests --gtest_also_run_disabled_tests --gtest_repeat=3 --gtest_recreate_environments_when_repeating +ref_func_tests --gtest_also_run_disabled_tests --gtest_repeat=3 --gtest_recreate_environments_when_repeating -./build/bin/omp_func_tests --gtest_also_run_disabled_tests --gtest_repeat=3 --gtest_recreate_environments_when_repeating -./build/bin/seq_func_tests --gtest_also_run_disabled_tests --gtest_repeat=3 --gtest_recreate_environments_when_repeating -./build/bin/stl_func_tests --gtest_also_run_disabled_tests --gtest_repeat=3 --gtest_recreate_environments_when_repeating -./build/bin/tbb_func_tests --gtest_also_run_disabled_tests --gtest_repeat=3 --gtest_recreate_environments_when_repeating +omp_func_tests --gtest_also_run_disabled_tests --gtest_repeat=3 --gtest_recreate_environments_when_repeating +seq_func_tests --gtest_also_run_disabled_tests --gtest_repeat=3 --gtest_recreate_environments_when_repeating +stl_func_tests --gtest_also_run_disabled_tests --gtest_repeat=3 --gtest_recreate_environments_when_repeating +tbb_func_tests --gtest_also_run_disabled_tests --gtest_repeat=3 --gtest_recreate_environments_when_repeating diff --git a/tasks/CMakeLists.txt b/tasks/CMakeLists.txt index 2b49fc830..b539bbf72 100644 --- a/tasks/CMakeLists.txt +++ b/tasks/CMakeLists.txt @@ -169,8 +169,14 @@ foreach(TASK_TYPE ${LIST_OF_TASKS}) target_link_libraries(${EXEC_FUNC} PUBLIC gtest gtest_main) enable_testing() add_test(NAME ${EXEC_FUNC} COMMAND ${EXEC_FUNC}) + + # Install the executable + install(TARGETS ${EXEC_FUNC} RUNTIME DESTINATION bin) endforeach () + # Install the library + install(TARGETS ${exec_func_lib} ARCHIVE DESTINATION lib LIBRARY DESTINATION lib) + set(LIST_OF_EXEC_TESTS "") set(LIB_SOURCE_FILES "") set(SRC_RES "") From 56e41ab34d4310a7bbe7a7c54fa08f429eaee42e Mon Sep 17 00:00:00 2001 From: Arseniy Obolenskiy Date: Sun, 26 Jan 2025 12:12:45 +0100 Subject: [PATCH 2/6] opencv sh --- .github/workflows/main.yml | 53 ++++++++++++++++---------------------- cmake/onetbb.cmake | 5 ++++ cmake/opencv.cmake | 5 ++++ scripts/run_mpi.sh | 24 ++++++++++------- scripts/run_threads.sh | 32 +++++++++++++---------- 5 files changed, 66 insertions(+), 53 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 116192bab..b954a175c 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -79,11 +79,14 @@ jobs: - name: Install project run: | cmake --build build --target install + - name: Archive installed package + run: | + tar -czvf ubuntu-gcc-install.tar.gz -C install . - name: Upload installed package - uses: actions/upload-artifact@v4.3.0 + uses: actions/upload-artifact@v4 with: name: ubuntu-gcc-install - path: install + path: ubuntu-gcc-install.tar.gz ubuntu-gcc-test: needs: - ubuntu-gcc-build @@ -106,9 +109,13 @@ jobs: uses: actions/download-artifact@v4 with: name: ubuntu-gcc-install - path: install - - name: Add install/bin to PATH - run: echo "$(pwd)/install/bin" >> $GITHUB_PATH + - name: Extract installed package + run: | + mkdir -p install + tar -xzvf ubuntu-gcc-install.tar.gz -C install + - run: ls -la . + - run: ls -la ./install + - run: ls -la ./install/bin - name: Run func tests (MPI, num_proc=1) run: | source scripts/run_mpi.sh @@ -167,14 +174,14 @@ jobs: sudo apt-get install libomp-dev sudo apt-get install valgrind python3 -m pip install -r requirements.txt - - name: Download installed package uses: actions/download-artifact@v4 with: name: ubuntu-gcc-install - path: install - - name: Add install/bin to PATH - run: echo "$(pwd)/install/bin" >> $GITHUB_PATH + - name: Extract installed package + run: | + mkdir -p install + tar -xzvf ubuntu-gcc-install.tar.gz -C install - name: Run func tests (threads, num_threads=5) run: source scripts/run_threads.sh env: @@ -238,7 +245,7 @@ jobs: cmake -S . -B build -G Ninja -D USE_SEQ=ON -D USE_MPI=ON -D USE_OMP=ON -D USE_TBB=ON -D USE_STL=ON -D USE_FUNC_TESTS=ON -D USE_PERF_TESTS=ON - -D CMAKE_BUILD_TYPE=RELEASE + -D CMAKE_BUILD_TYPE=RELEASE -DCMAKE_INSTALL_PREFIX=install env: CC: clang-19 CXX: clang++-19 @@ -248,8 +255,6 @@ jobs: env: CC: clang-19 CXX: clang++-19 - - name: Add build/bin to PATH - run: echo "$(pwd)/build/bin" >> $GITHUB_PATH - name: Run func tests (MPI, num_proc=1) run: | source scripts/run_mpi.sh @@ -320,7 +325,7 @@ jobs: cmake -S . -B build -G Ninja -D USE_SEQ=ON -D USE_MPI=ON -D USE_OMP=ON -D USE_TBB=ON -D USE_STL=ON -D USE_FUNC_TESTS=ON -D USE_PERF_TESTS=ON - -D CMAKE_BUILD_TYPE=RELEASE + -D CMAKE_BUILD_TYPE=RELEASE -DCMAKE_INSTALL_PREFIX=install env: CC: clang-19 CXX: clang++-19 @@ -330,8 +335,6 @@ jobs: env: CC: clang-19 CXX: clang++-19 - - name: Add build/bin to PATH - run: echo "$(pwd)/build/bin" >> $GITHUB_PATH - name: Run tests (threads, num_threads=5) run: source scripts/run_threads.sh env: @@ -394,7 +397,7 @@ jobs: -D CMAKE_C_COMPILER_LAUNCHER=ccache -D CMAKE_CXX_COMPILER_LAUNCHER=ccache -G Ninja -D USE_SEQ=ON -D USE_MPI=ON -D USE_OMP=ON -D USE_TBB=ON -D USE_STL=ON -D USE_FUNC_TESTS=ON -D USE_PERF_TESTS=ON - -D CMAKE_BUILD_TYPE=RELEASE -D ENABLE_ADDRESS_SANITIZER=ON -D ENABLE_UB_SANITIZER=ON + -D CMAKE_BUILD_TYPE=RELEASE -D ENABLE_ADDRESS_SANITIZER=ON -D ENABLE_UB_SANITIZER=ON -DCMAKE_INSTALL_PREFIX=install env: CC: clang-19 CXX: clang++-19 @@ -404,8 +407,6 @@ jobs: env: CC: clang-19 CXX: clang++-19 - - name: Add build/bin to PATH - run: echo "$(pwd)/build/bin" >> $GITHUB_PATH - name: Run tests (MPI) run: | source scripts/run_mpi.sh "--oversubscribe" @@ -473,7 +474,7 @@ jobs: -D CMAKE_C_COMPILER_LAUNCHER=ccache -D CMAKE_CXX_COMPILER_LAUNCHER=ccache -G Ninja -D USE_SEQ=ON -D USE_MPI=ON -D USE_OMP=ON -D USE_TBB=ON -D USE_STL=ON -D USE_FUNC_TESTS=ON -D USE_PERF_TESTS=ON - -D CMAKE_BUILD_TYPE=RELEASE -D ENABLE_ADDRESS_SANITIZER=ON -D ENABLE_UB_SANITIZER=ON + -D CMAKE_BUILD_TYPE=RELEASE -D ENABLE_ADDRESS_SANITIZER=ON -D ENABLE_UB_SANITIZER=ON -DCMAKE_INSTALL_PREFIX=install env: CC: clang-19 CXX: clang++-19 @@ -483,8 +484,6 @@ jobs: env: CC: clang-19 CXX: clang++-19 - - name: Add build/bin to PATH - run: echo "$(pwd)/build/bin" >> $GITHUB_PATH - name: Run tests (threads, num_threads=5) run: source scripts/run_threads.sh env: @@ -554,12 +553,10 @@ jobs: -D CMAKE_C_COMPILER_LAUNCHER=ccache -D CMAKE_CXX_COMPILER_LAUNCHER=ccache -G Ninja -D USE_SEQ=ON -D USE_MPI=ON -D USE_OMP=ON -D USE_TBB=ON -D USE_STL=ON -DCMAKE_C_FLAGS="-I$(brew --prefix)/opt/libomp/include" -DCMAKE_CXX_FLAGS="-I$(brew --prefix)/opt/libomp/include" - -D CMAKE_BUILD_TYPE=RELEASE -D USE_FUNC_TESTS=ON -D USE_PERF_TESTS=ON + -D CMAKE_BUILD_TYPE=RELEASE -D USE_FUNC_TESTS=ON -D USE_PERF_TESTS=ON -DCMAKE_INSTALL_PREFIX=install - name: Build project run: | cmake --build build --parallel - - name: Add build/bin to PATH - run: echo "$(pwd)/build/bin" >> $GITHUB_PATH - name: Run func tests (MPI, num_proc=1) run: | source scripts/run_mpi.sh @@ -628,12 +625,10 @@ jobs: -D CMAKE_C_COMPILER_LAUNCHER=ccache -D CMAKE_CXX_COMPILER_LAUNCHER=ccache -G Ninja -D USE_SEQ=ON -D USE_MPI=ON -D USE_OMP=ON -D USE_TBB=ON -D USE_STL=ON -DCMAKE_C_FLAGS="-I$(brew --prefix)/opt/libomp/include" -DCMAKE_CXX_FLAGS="-I$(brew --prefix)/opt/libomp/include" - -D CMAKE_BUILD_TYPE=RELEASE -D USE_FUNC_TESTS=ON -D USE_PERF_TESTS=ON + -D CMAKE_BUILD_TYPE=RELEASE -D USE_FUNC_TESTS=ON -D USE_PERF_TESTS=ON -DCMAKE_INSTALL_PREFIX=install - name: Build project run: | cmake --build build --parallel - - name: Add build/bin to PATH - run: echo "$(pwd)/build/bin" >> $GITHUB_PATH - name: Run tests (threads, num_threads=5) run: source scripts/run_threads.sh env: @@ -965,8 +960,6 @@ jobs: - name: Build project run: | cmake --build build --parallel - - name: Add build/bin to PATH - run: echo "$(pwd)/build/bin" >> $GITHUB_PATH - name: Run tests (MPI) run: | source scripts/run_mpi.sh @@ -1058,8 +1051,6 @@ jobs: env: CC: gcc-14 CXX: g++-14 - - name: Add build/bin to PATH - run: echo "$(pwd)/build/bin" >> $GITHUB_PATH - name: Run perf count checker run: | source scripts/run_perf_count_checker.sh diff --git a/cmake/onetbb.cmake b/cmake/onetbb.cmake index f565aed09..483a62773 100644 --- a/cmake/onetbb.cmake +++ b/cmake/onetbb.cmake @@ -28,4 +28,9 @@ if( USE_TBB ) BUILD_COMMAND "${CMAKE_COMMAND}" --build "${CMAKE_CURRENT_BINARY_DIR}/ppc_onetbb/build" --config ${CMAKE_BUILD_TYPE} --parallel INSTALL_COMMAND "${CMAKE_COMMAND}" --install "${CMAKE_CURRENT_BINARY_DIR}/ppc_onetbb/build" --prefix "${CMAKE_CURRENT_BINARY_DIR}/ppc_onetbb/install") endif() + add_custom_command(TARGET ppc_onetbb POST_BUILD + COMMAND ${CMAKE_COMMAND} -E copy_directory + "${CMAKE_CURRENT_BINARY_DIR}/ppc_onetbb/install" + "${CMAKE_INSTALL_PREFIX}" + ) endif( USE_TBB ) diff --git a/cmake/opencv.cmake b/cmake/opencv.cmake index 90d2ec1c2..222335c3e 100644 --- a/cmake/opencv.cmake +++ b/cmake/opencv.cmake @@ -28,3 +28,8 @@ else() BUILD_COMMAND "${CMAKE_COMMAND}" --build "${CMAKE_CURRENT_BINARY_DIR}/ppc_opencv/build" --config ${CMAKE_BUILD_TYPE} --parallel INSTALL_COMMAND "${CMAKE_COMMAND}" --install "${CMAKE_CURRENT_BINARY_DIR}/ppc_opencv/build" --prefix "${CMAKE_CURRENT_BINARY_DIR}/ppc_opencv/install") endif() +add_custom_command(TARGET ppc_opencv POST_BUILD + COMMAND ${CMAKE_COMMAND} -E copy_directory + "${CMAKE_CURRENT_BINARY_DIR}/ppc_opencv/install" + "${CMAKE_INSTALL_PREFIX}" +) diff --git a/scripts/run_mpi.sh b/scripts/run_mpi.sh index d6aac47ea..bbc0cb667 100644 --- a/scripts/run_mpi.sh +++ b/scripts/run_mpi.sh @@ -1,18 +1,24 @@ #!/bin/bash -source build/ppc_opencv/install/bin/setup_vars_opencv4.sh +if [[ -f build/ppc_opencv/install/bin/setup_vars_opencv4.sh ]]; then + INSTALL_BIN_DIR="build/bin" + source build/ppc_opencv/install/bin/setup_vars_opencv4.sh +else + INSTALL_BIN_DIR="install/bin" + source $INSTALL_BIN_DIR/setup_vars_opencv4.sh +fi if [[ $OSTYPE == "linux-gnu" && -z "$ASAN_RUN" ]]; then - valgrind --error-exitcode=1 --leak-check=full --show-leak-kinds=all core_func_tests - valgrind --error-exitcode=1 --leak-check=full --show-leak-kinds=all ref_func_tests + valgrind --error-exitcode=1 --leak-check=full --show-leak-kinds=all $INSTALL_BIN_DIR/core_func_tests + valgrind --error-exitcode=1 --leak-check=full --show-leak-kinds=all $INSTALL_BIN_DIR/ref_func_tests -# valgrind --error-exitcode=1 --leak-check=full --show-leak-kinds=all all_func_tests -# valgrind --error-exitcode=1 --leak-check=full --show-leak-kinds=all mpi_func_tests +# valgrind --error-exitcode=1 --leak-check=full --show-leak-kinds=all $INSTALL_BIN_DIR/all_func_tests +# valgrind --error-exitcode=1 --leak-check=full --show-leak-kinds=all $INSTALL_BIN_DIR/mpi_func_tests fi -core_func_tests --gtest_also_run_disabled_tests --gtest_repeat=10 --gtest_recreate_environments_when_repeating -ref_func_tests --gtest_also_run_disabled_tests --gtest_repeat=10 --gtest_recreate_environments_when_repeating +$INSTALL_BIN_DIR/core_func_tests --gtest_also_run_disabled_tests --gtest_repeat=10 --gtest_recreate_environments_when_repeating +$INSTALL_BIN_DIR/ref_func_tests --gtest_also_run_disabled_tests --gtest_repeat=10 --gtest_recreate_environments_when_repeating if [[ -z "$ASAN_RUN" ]]; then - mpirun $1 -np $PROC_COUNT all_func_tests --gtest_also_run_disabled_tests --gtest_repeat=10 --gtest_recreate_environments_when_repeating - mpirun $1 -np $PROC_COUNT mpi_func_tests --gtest_also_run_disabled_tests --gtest_repeat=10 --gtest_recreate_environments_when_repeating + mpirun $1 -np $PROC_COUNT $INSTALL_BIN_DIR/all_func_tests --gtest_also_run_disabled_tests --gtest_repeat=10 --gtest_recreate_environments_when_repeating + mpirun $1 -np $PROC_COUNT $INSTALL_BIN_DIR/mpi_func_tests --gtest_also_run_disabled_tests --gtest_repeat=10 --gtest_recreate_environments_when_repeating fi diff --git a/scripts/run_threads.sh b/scripts/run_threads.sh index ff82751ff..6b2d13575 100644 --- a/scripts/run_threads.sh +++ b/scripts/run_threads.sh @@ -1,20 +1,26 @@ #!/bin/bash -source build/ppc_opencv/install/bin/setup_vars_opencv4.sh +if [[ -f build/ppc_opencv/install/bin/setup_vars_opencv4.sh ]]; then + INSTALL_BIN_DIR="build/bin" + source build/ppc_opencv/install/bin/setup_vars_opencv4.sh +else + INSTALL_BIN_DIR="install/bin" + source $INSTALL_BIN_DIR/setup_vars_opencv4.sh +fi if [[ $OSTYPE == "linux-gnu" && -z "$ASAN_RUN" ]]; then - valgrind --error-exitcode=1 --leak-check=full --show-leak-kinds=all core_func_tests - valgrind --error-exitcode=1 --leak-check=full --show-leak-kinds=all ref_func_tests + valgrind --error-exitcode=1 --leak-check=full --show-leak-kinds=all $INSTALL_BIN_DIR/core_func_tests + valgrind --error-exitcode=1 --leak-check=full --show-leak-kinds=all $INSTALL_BIN_DIR/ref_func_tests -# valgrind --error-exitcode=1 --leak-check=full --show-leak-kinds=all omp_func_tests - valgrind --error-exitcode=1 --leak-check=full --show-leak-kinds=all seq_func_tests - valgrind --error-exitcode=1 --leak-check=full --show-leak-kinds=all stl_func_tests -# valgrind --error-exitcode=1 --leak-check=full --show-leak-kinds=all tbb_func_tests +# valgrind --error-exitcode=1 --leak-check=full --show-leak-kinds=all $INSTALL_BIN_DIR/omp_func_tests + valgrind --error-exitcode=1 --leak-check=full --show-leak-kinds=all $INSTALL_BIN_DIR/seq_func_tests + valgrind --error-exitcode=1 --leak-check=full --show-leak-kinds=all $INSTALL_BIN_DIR/stl_func_tests +# valgrind --error-exitcode=1 --leak-check=full --show-leak-kinds=all $INSTALL_BIN_DIR/tbb_func_tests fi -core_func_tests --gtest_also_run_disabled_tests --gtest_repeat=3 --gtest_recreate_environments_when_repeating -ref_func_tests --gtest_also_run_disabled_tests --gtest_repeat=3 --gtest_recreate_environments_when_repeating +$INSTALL_BIN_DIR/core_func_tests --gtest_also_run_disabled_tests --gtest_repeat=3 --gtest_recreate_environments_when_repeating +$INSTALL_BIN_DIR/ref_func_tests --gtest_also_run_disabled_tests --gtest_repeat=3 --gtest_recreate_environments_when_repeating -omp_func_tests --gtest_also_run_disabled_tests --gtest_repeat=3 --gtest_recreate_environments_when_repeating -seq_func_tests --gtest_also_run_disabled_tests --gtest_repeat=3 --gtest_recreate_environments_when_repeating -stl_func_tests --gtest_also_run_disabled_tests --gtest_repeat=3 --gtest_recreate_environments_when_repeating -tbb_func_tests --gtest_also_run_disabled_tests --gtest_repeat=3 --gtest_recreate_environments_when_repeating +$INSTALL_BIN_DIR/omp_func_tests --gtest_also_run_disabled_tests --gtest_repeat=3 --gtest_recreate_environments_when_repeating +$INSTALL_BIN_DIR/seq_func_tests --gtest_also_run_disabled_tests --gtest_repeat=3 --gtest_recreate_environments_when_repeating +$INSTALL_BIN_DIR/stl_func_tests --gtest_also_run_disabled_tests --gtest_repeat=3 --gtest_recreate_environments_when_repeating +$INSTALL_BIN_DIR/tbb_func_tests --gtest_also_run_disabled_tests --gtest_repeat=3 --gtest_recreate_environments_when_repeating From 06ad278ff8b1073e6a83e6eb870d6fb94106e552 Mon Sep 17 00:00:00 2001 From: Arseniy Obolenskiy Date: Sun, 26 Jan 2025 15:54:33 +0100 Subject: [PATCH 3/6] missing install --- modules/core/CMakeLists.txt | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/modules/core/CMakeLists.txt b/modules/core/CMakeLists.txt index 19c6b92e3..0237aab38 100644 --- a/modules/core/CMakeLists.txt +++ b/modules/core/CMakeLists.txt @@ -32,3 +32,12 @@ target_link_libraries(${exec_func_tests} PUBLIC ${exec_func_lib}) enable_testing() add_test(NAME ${exec_func_tests} COMMAND ${exec_func_tests}) + +# Installation rules +install(TARGETS ${exec_func_lib} + ARCHIVE DESTINATION lib + LIBRARY DESTINATION lib + RUNTIME DESTINATION bin) + +install(TARGETS ${exec_func_tests} + RUNTIME DESTINATION bin) From d10db4161eebf6b61066b6efa2d62bca43fb287f Mon Sep 17 00:00:00 2001 From: Arseniy Obolenskiy Date: Sun, 26 Jan 2025 16:27:44 +0100 Subject: [PATCH 4/6] clean up --- .github/workflows/main.yml | 15 ++++++--------- 1 file changed, 6 insertions(+), 9 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index b954a175c..870d3fd51 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -113,9 +113,6 @@ jobs: run: | mkdir -p install tar -xzvf ubuntu-gcc-install.tar.gz -C install - - run: ls -la . - - run: ls -la ./install - - run: ls -la ./install/bin - name: Run func tests (MPI, num_proc=1) run: | source scripts/run_mpi.sh @@ -245,7 +242,7 @@ jobs: cmake -S . -B build -G Ninja -D USE_SEQ=ON -D USE_MPI=ON -D USE_OMP=ON -D USE_TBB=ON -D USE_STL=ON -D USE_FUNC_TESTS=ON -D USE_PERF_TESTS=ON - -D CMAKE_BUILD_TYPE=RELEASE -DCMAKE_INSTALL_PREFIX=install + -D CMAKE_BUILD_TYPE=RELEASE env: CC: clang-19 CXX: clang++-19 @@ -325,7 +322,7 @@ jobs: cmake -S . -B build -G Ninja -D USE_SEQ=ON -D USE_MPI=ON -D USE_OMP=ON -D USE_TBB=ON -D USE_STL=ON -D USE_FUNC_TESTS=ON -D USE_PERF_TESTS=ON - -D CMAKE_BUILD_TYPE=RELEASE -DCMAKE_INSTALL_PREFIX=install + -D CMAKE_BUILD_TYPE=RELEASE env: CC: clang-19 CXX: clang++-19 @@ -397,7 +394,7 @@ jobs: -D CMAKE_C_COMPILER_LAUNCHER=ccache -D CMAKE_CXX_COMPILER_LAUNCHER=ccache -G Ninja -D USE_SEQ=ON -D USE_MPI=ON -D USE_OMP=ON -D USE_TBB=ON -D USE_STL=ON -D USE_FUNC_TESTS=ON -D USE_PERF_TESTS=ON - -D CMAKE_BUILD_TYPE=RELEASE -D ENABLE_ADDRESS_SANITIZER=ON -D ENABLE_UB_SANITIZER=ON -DCMAKE_INSTALL_PREFIX=install + -D CMAKE_BUILD_TYPE=RELEASE -D ENABLE_ADDRESS_SANITIZER=ON -D ENABLE_UB_SANITIZER=ON env: CC: clang-19 CXX: clang++-19 @@ -474,7 +471,7 @@ jobs: -D CMAKE_C_COMPILER_LAUNCHER=ccache -D CMAKE_CXX_COMPILER_LAUNCHER=ccache -G Ninja -D USE_SEQ=ON -D USE_MPI=ON -D USE_OMP=ON -D USE_TBB=ON -D USE_STL=ON -D USE_FUNC_TESTS=ON -D USE_PERF_TESTS=ON - -D CMAKE_BUILD_TYPE=RELEASE -D ENABLE_ADDRESS_SANITIZER=ON -D ENABLE_UB_SANITIZER=ON -DCMAKE_INSTALL_PREFIX=install + -D CMAKE_BUILD_TYPE=RELEASE -D ENABLE_ADDRESS_SANITIZER=ON -D ENABLE_UB_SANITIZER=ON env: CC: clang-19 CXX: clang++-19 @@ -553,7 +550,7 @@ jobs: -D CMAKE_C_COMPILER_LAUNCHER=ccache -D CMAKE_CXX_COMPILER_LAUNCHER=ccache -G Ninja -D USE_SEQ=ON -D USE_MPI=ON -D USE_OMP=ON -D USE_TBB=ON -D USE_STL=ON -DCMAKE_C_FLAGS="-I$(brew --prefix)/opt/libomp/include" -DCMAKE_CXX_FLAGS="-I$(brew --prefix)/opt/libomp/include" - -D CMAKE_BUILD_TYPE=RELEASE -D USE_FUNC_TESTS=ON -D USE_PERF_TESTS=ON -DCMAKE_INSTALL_PREFIX=install + -D CMAKE_BUILD_TYPE=RELEASE -D USE_FUNC_TESTS=ON -D USE_PERF_TESTS=ON - name: Build project run: | cmake --build build --parallel @@ -625,7 +622,7 @@ jobs: -D CMAKE_C_COMPILER_LAUNCHER=ccache -D CMAKE_CXX_COMPILER_LAUNCHER=ccache -G Ninja -D USE_SEQ=ON -D USE_MPI=ON -D USE_OMP=ON -D USE_TBB=ON -D USE_STL=ON -DCMAKE_C_FLAGS="-I$(brew --prefix)/opt/libomp/include" -DCMAKE_CXX_FLAGS="-I$(brew --prefix)/opt/libomp/include" - -D CMAKE_BUILD_TYPE=RELEASE -D USE_FUNC_TESTS=ON -D USE_PERF_TESTS=ON -DCMAKE_INSTALL_PREFIX=install + -D CMAKE_BUILD_TYPE=RELEASE -D USE_FUNC_TESTS=ON -D USE_PERF_TESTS=ON - name: Build project run: | cmake --build build --parallel From 32e6919f57e3097c6f461a81b4b73697e06e7213 Mon Sep 17 00:00:00 2001 From: Arseniy Obolenskiy Date: Sun, 26 Jan 2025 16:50:28 +0100 Subject: [PATCH 5/6] fix install --- cmake/onetbb.cmake | 7 ++----- cmake/opencv.cmake | 7 ++----- 2 files changed, 4 insertions(+), 10 deletions(-) diff --git a/cmake/onetbb.cmake b/cmake/onetbb.cmake index 483a62773..625bee1d3 100644 --- a/cmake/onetbb.cmake +++ b/cmake/onetbb.cmake @@ -28,9 +28,6 @@ if( USE_TBB ) BUILD_COMMAND "${CMAKE_COMMAND}" --build "${CMAKE_CURRENT_BINARY_DIR}/ppc_onetbb/build" --config ${CMAKE_BUILD_TYPE} --parallel INSTALL_COMMAND "${CMAKE_COMMAND}" --install "${CMAKE_CURRENT_BINARY_DIR}/ppc_onetbb/build" --prefix "${CMAKE_CURRENT_BINARY_DIR}/ppc_onetbb/install") endif() - add_custom_command(TARGET ppc_onetbb POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy_directory - "${CMAKE_CURRENT_BINARY_DIR}/ppc_onetbb/install" - "${CMAKE_INSTALL_PREFIX}" - ) + install(DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/ppc_onetbb/install/" + DESTINATION "${CMAKE_INSTALL_PREFIX}") endif( USE_TBB ) diff --git a/cmake/opencv.cmake b/cmake/opencv.cmake index 222335c3e..6904e4925 100644 --- a/cmake/opencv.cmake +++ b/cmake/opencv.cmake @@ -28,8 +28,5 @@ else() BUILD_COMMAND "${CMAKE_COMMAND}" --build "${CMAKE_CURRENT_BINARY_DIR}/ppc_opencv/build" --config ${CMAKE_BUILD_TYPE} --parallel INSTALL_COMMAND "${CMAKE_COMMAND}" --install "${CMAKE_CURRENT_BINARY_DIR}/ppc_opencv/build" --prefix "${CMAKE_CURRENT_BINARY_DIR}/ppc_opencv/install") endif() -add_custom_command(TARGET ppc_opencv POST_BUILD - COMMAND ${CMAKE_COMMAND} -E copy_directory - "${CMAKE_CURRENT_BINARY_DIR}/ppc_opencv/install" - "${CMAKE_INSTALL_PREFIX}" -) +install(DIRECTORY "${CMAKE_CURRENT_BINARY_DIR}/ppc_opencv/install/" + DESTINATION "${CMAKE_INSTALL_PREFIX}") From e66fe462a5d81b64f2eb8a828c3847a03d2fc607 Mon Sep 17 00:00:00 2001 From: Arseniy Obolenskiy Date: Sun, 26 Jan 2025 17:53:04 +0100 Subject: [PATCH 6/6] remove recursive checkout on test --- .github/workflows/main.yml | 4 ---- 1 file changed, 4 deletions(-) diff --git a/.github/workflows/main.yml b/.github/workflows/main.yml index 870d3fd51..f592c7b2a 100644 --- a/.github/workflows/main.yml +++ b/.github/workflows/main.yml @@ -93,8 +93,6 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - with: - submodules: recursive - name: Setup environment run: | sudo add-apt-repository ppa:ubuntu-toolchain-r/test @@ -159,8 +157,6 @@ jobs: runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - with: - submodules: recursive - name: Setup environment run: | sudo add-apt-repository ppa:ubuntu-toolchain-r/test