Add dram_and_fsdax example #734
Workflow file for this run
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
| # Builds project (with various compilers, CMake options, etc.) and runs tests | |
| name: BasicBuilds | |
| on: | |
| push: | |
| branches-ignore: | |
| - 'dependabot/**' | |
| pull_request: | |
| permissions: | |
| contents: read | |
| env: | |
| # for installation testing - it should match with version set in CMake | |
| UMF_VERSION: 0.10.0 | |
| BUILD_DIR : "${{github.workspace}}/build" | |
| INSTL_DIR : "${{github.workspace}}/../install-dir" | |
| jobs: | |
| ubuntu-build: | |
| name: Ubuntu | |
| strategy: | |
| matrix: | |
| os: ['ubuntu-20.04', 'ubuntu-22.04'] | |
| build_type: [Debug, Release] | |
| compiler: [{c: gcc, cxx: g++}] | |
| shared_library: ['OFF'] | |
| level_zero_provider: ['ON'] | |
| cuda_provider: ['ON'] | |
| install_tbb: ['ON'] | |
| disable_hwloc: ['OFF'] | |
| link_hwloc_statically: ['OFF'] | |
| include: | |
| # test icx compiler | |
| - os: 'ubuntu-22.04' | |
| build_type: Release | |
| compiler: {c: icx, cxx: icpx} | |
| shared_library: 'ON' | |
| level_zero_provider: 'ON' | |
| cuda_provider: 'ON' | |
| install_tbb: 'ON' | |
| disable_hwloc: 'OFF' | |
| link_hwloc_statically: 'OFF' | |
| # test without installing TBB | |
| - os: 'ubuntu-22.04' | |
| build_type: Release | |
| compiler: {c: gcc, cxx: g++} | |
| shared_library: 'ON' | |
| level_zero_provider: 'ON' | |
| cuda_provider: 'ON' | |
| install_tbb: 'OFF' | |
| disable_hwloc: 'OFF' | |
| link_hwloc_statically: 'OFF' | |
| runs-on: ${{matrix.os}} | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 | |
| with: | |
| fetch-depth: 0 | |
| - name: Install apt packages | |
| run: | | |
| sudo apt-get update | |
| sudo apt-get install -y clang cmake libnuma-dev libjemalloc-dev | |
| - name: Install TBB apt package | |
| if: matrix.install_tbb == 'ON' | |
| run: | | |
| sudo apt-get install -y libtbb-dev | |
| - name: Install oneAPI basekit | |
| if: matrix.compiler.cxx == 'icpx' | |
| run: | | |
| sudo apt-get install -y gpg-agent wget | |
| wget -O- https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB | gpg --dearmor | sudo tee /usr/share/keyrings/oneapi-archive-keyring.gpg > /dev/null | |
| echo "deb [signed-by=/usr/share/keyrings/oneapi-archive-keyring.gpg] https://apt.repos.intel.com/oneapi all main" | sudo tee /etc/apt/sources.list.d/oneAPI.list | |
| sudo apt-get update | |
| sudo apt-get install -y intel-oneapi-ippcp-devel intel-oneapi-ipp-devel intel-oneapi-common-oneapi-vars intel-oneapi-compiler-dpcpp-cpp | |
| - name: Install g++-7 | |
| if: matrix.compiler.cxx == 'g++-7' | |
| run: sudo apt-get install -y ${{matrix.compiler.cxx}} | |
| - name: Install libhwloc | |
| run: .github/scripts/install_hwloc.sh | |
| - name: Set ptrace value for IPC test | |
| run: sudo bash -c "echo 0 > /proc/sys/kernel/yama/ptrace_scope" | |
| - name: Configure build | |
| run: > | |
| ${{ matrix.compiler.cxx == 'icpx' && '. /opt/intel/oneapi/setvars.sh &&' || ''}} | |
| cmake | |
| -B ${{env.BUILD_DIR}} | |
| -DCMAKE_INSTALL_PREFIX="${{env.INSTL_DIR}}" | |
| -DCMAKE_BUILD_TYPE=${{matrix.build_type}} | |
| -DUMF_BUILD_SHARED_LIBRARY=${{matrix.shared_library}} | |
| -DCMAKE_C_COMPILER=${{matrix.compiler.c}} | |
| -DCMAKE_CXX_COMPILER=${{matrix.compiler.cxx}} | |
| -DUMF_BUILD_LEVEL_ZERO_PROVIDER=${{matrix.level_zero_provider}} | |
| -DUMF_BUILD_CUDA_PROVIDER=${{matrix.cuda_provider}} | |
| -DUMF_FORMAT_CODE_STYLE=OFF | |
| -DUMF_DEVELOPER_MODE=ON | |
| -DUMF_BUILD_LIBUMF_POOL_JEMALLOC=ON | |
| -DUMF_BUILD_LIBUMF_POOL_DISJOINT=ON | |
| -DUMF_TESTS_FAIL_ON_SKIP=ON | |
| -DUMF_DISABLE_HWLOC=${{matrix.disable_hwloc}} | |
| -DUMF_LINK_HWLOC_STATICALLY=${{matrix.link_hwloc_statically}} | |
| - name: Build UMF | |
| run: | | |
| ${{ matrix.compiler.cxx == 'icpx' && '. /opt/intel/oneapi/setvars.sh' || true }} | |
| cmake --build ${{env.BUILD_DIR}} -j $(nproc) | |
| - name: Run tests | |
| working-directory: ${{env.BUILD_DIR}} | |
| run: | | |
| ${{ matrix.compiler.cxx == 'icpx' && '. /opt/intel/oneapi/setvars.sh' || true }} | |
| ctest --output-on-failure --test-dir test | |
| - name: Remove the installation directory | |
| run: rm -rf ${{env.INSTL_DIR}} | |
| - name: Test UMF installation and uninstallation | |
| # The '--shared-library' parameter is added to the installation test when the UMF is built as a shared library | |
| run: > | |
| python3 ${{github.workspace}}/test/test_installation.py | |
| --build-dir ${{env.BUILD_DIR}} | |
| --install-dir ${{env.INSTL_DIR}} | |
| --build-type ${{matrix.build_type}} | |
| --disjoint-pool | |
| --jemalloc-pool | |
| ${{ matrix.install_tbb == 'ON' && matrix.disable_hwloc != 'ON' && matrix.link_hwloc_statically != 'ON' && '--proxy' || '' }} | |
| --umf-version ${{env.UMF_VERSION}} | |
| ${{ matrix.shared_library == 'ON' && '--shared-library' || '' }} | |
| windows-build: | |
| name: Windows | |
| env: | |
| VCPKG_PATH: "${{github.workspace}}/build/vcpkg/packages/hwloc_x64-windows;${{github.workspace}}/build/vcpkg/packages/tbb_x64-windows;${{github.workspace}}/build/vcpkg/packages/jemalloc_x64-windows" | |
| strategy: | |
| matrix: | |
| os: ['windows-2019', 'windows-2022'] | |
| build_type: [Debug, Release] | |
| compiler: [{c: cl, cxx: cl}] | |
| shared_library: ['ON', 'OFF'] | |
| level_zero_provider: ['ON'] | |
| cuda_provider: ['ON'] | |
| include: | |
| - os: 'windows-2022' | |
| build_type: Release | |
| compiler: {c: clang-cl, cxx: clang-cl} | |
| shared_library: 'ON' | |
| level_zero_provider: 'ON' | |
| cuda_provider: 'ON' | |
| toolset: "-T ClangCL" | |
| - os: 'windows-2022' | |
| build_type: Release | |
| compiler: {c: cl, cxx: cl} | |
| shared_library: 'ON' | |
| level_zero_provider: 'ON' | |
| cuda_provider: 'ON' | |
| - os: 'windows-2022' | |
| build_type: Release | |
| compiler: {c: cl, cxx: cl} | |
| shared_library: 'ON' | |
| level_zero_provider: 'OFF' | |
| cuda_provider: 'OFF' | |
| runs-on: ${{matrix.os}} | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 | |
| with: | |
| fetch-depth: 0 | |
| - name: Initialize vcpkg | |
| uses: lukka/run-vcpkg@5e0cab206a5ea620130caf672fce3e4a6b5666a1 # v11.5 | |
| with: | |
| vcpkgGitCommitId: 3dd44b931481d7a8e9ba412621fa810232b66289 | |
| vcpkgDirectory: ${{env.BUILD_DIR}}/vcpkg | |
| vcpkgJsonGlob: '**/vcpkg.json' | |
| - name: Install dependencies | |
| run: vcpkg install | |
| shell: pwsh # Specifies PowerShell as the shell for running the script. | |
| - name: Configure build | |
| run: > | |
| cmake | |
| -B ${{env.BUILD_DIR}} | |
| ${{matrix.toolset}} | |
| -DCMAKE_INSTALL_PREFIX="${{env.INSTL_DIR}}" | |
| -DCMAKE_PREFIX_PATH="${{env.VCPKG_PATH}}" | |
| -DCMAKE_C_COMPILER=${{matrix.compiler.c}} | |
| -DCMAKE_CXX_COMPILER=${{matrix.compiler.cxx}} | |
| -DUMF_BUILD_SHARED_LIBRARY=${{matrix.shared_library}} | |
| -DUMF_FORMAT_CODE_STYLE=OFF | |
| -DUMF_DEVELOPER_MODE=ON | |
| -DUMF_BUILD_LIBUMF_POOL_DISJOINT=ON | |
| -DUMF_BUILD_LIBUMF_POOL_JEMALLOC=ON | |
| -DUMF_BUILD_LEVEL_ZERO_PROVIDER=${{matrix.level_zero_provider}} | |
| -DUMF_BUILD_CUDA_PROVIDER=${{matrix.cuda_provider}} | |
| -DUMF_TESTS_FAIL_ON_SKIP=ON | |
| - name: Build UMF | |
| run: cmake --build ${{env.BUILD_DIR}} --config ${{matrix.build_type}} -j $Env:NUMBER_OF_PROCESSORS | |
| - name: Run tests | |
| working-directory: ${{env.BUILD_DIR}} | |
| run: ctest -C ${{matrix.build_type}} --output-on-failure --test-dir test | |
| - name: Test UMF installation and uninstallation | |
| # The '--shared-library' parameter is added to the installation test when the UMF is built as a shared library | |
| run: > | |
| python3 ${{github.workspace}}/test/test_installation.py | |
| --build-dir ${{env.BUILD_DIR}} | |
| --install-dir ${{env.INSTL_DIR}} | |
| --build-type ${{matrix.build_type}} | |
| --disjoint-pool | |
| --jemalloc-pool | |
| --proxy | |
| --umf-version ${{env.UMF_VERSION}} | |
| ${{ matrix.shared_library == 'ON' && '--shared-library' || ''}} | |
| - name: check /DEPENDENTLOADFLAG in umf.dll | |
| if: ${{matrix.shared_library == 'ON' && matrix.compiler.cxx == 'cl'}} | |
| run: ${{github.workspace}}/.github/scripts/check_dll_flags.ps1 ${{env.BUILD_DIR}}/bin/${{matrix.build_type}}/umf.dll | |
| shell: pwsh | |
| - name: check /DEPENDENTLOADFLAG in umf_proxy.dll | |
| if: ${{matrix.compiler.cxx == 'cl'}} | |
| run: ${{github.workspace}}/.github/scripts/check_dll_flags.ps1 ${{env.BUILD_DIR}}/src/proxy_lib/${{matrix.build_type}}/umf_proxy.dll | |
| shell: pwsh | |
| windows-dynamic_build_hwloc: | |
| name: "Windows dynamic UMF + static hwloc" | |
| strategy: | |
| matrix: | |
| build_type: [Release] | |
| runs-on: 'windows-2022' | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 | |
| with: | |
| fetch-depth: 0 | |
| - name: Configure build | |
| run: > | |
| cmake | |
| -B ${{env.BUILD_DIR}} | |
| -DCMAKE_INSTALL_PREFIX="${{env.INSTL_DIR}}" | |
| -DUMF_BUILD_SHARED_LIBRARY=ON | |
| -DUMF_BUILD_EXAMPLES=OFF | |
| -DUMF_FORMAT_CODE_STYLE=OFF | |
| -DUMF_DEVELOPER_MODE=ON | |
| -DUMF_BUILD_LIBUMF_POOL_DISJOINT=ON | |
| -DUMF_BUILD_LIBUMF_POOL_JEMALLOC=OFF | |
| -DUMF_BUILD_LEVEL_ZERO_PROVIDER=ON | |
| -DUMF_BUILD_CUDA_PROVIDER=ON | |
| -DUMF_TESTS_FAIL_ON_SKIP=ON | |
| -DUMF_LINK_HWLOC_STATICALLY=ON | |
| - name: Build UMF | |
| run: cmake --build ${{env.BUILD_DIR}} --config ${{matrix.build_type}} -j $Env:NUMBER_OF_PROCESSORS | |
| - name: Run tests | |
| working-directory: ${{env.BUILD_DIR}} | |
| run: ctest -C ${{matrix.build_type}} --output-on-failure --test-dir test | |
| # we check umf.dll only here - note that the proxy library is disabled in | |
| # this configuration | |
| - name: check /DEPENDENTLOADFLAG in umf.dll | |
| run: ${{github.workspace}}/.github/scripts/check_dll_flags.ps1 ${{env.BUILD_DIR}}/bin/${{matrix.build_type}}/umf.dll | |
| shell: pwsh | |
| windows-static_build_hwloc: | |
| name: "Windows static UMF + static hwloc" | |
| strategy: | |
| matrix: | |
| build_type: [Release] | |
| runs-on: 'windows-2022' | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 | |
| with: | |
| fetch-depth: 0 | |
| - name: Configure build | |
| run: > | |
| cmake | |
| -B ${{env.BUILD_DIR}} | |
| -DCMAKE_INSTALL_PREFIX="${{env.INSTL_DIR}}" | |
| -DUMF_BUILD_SHARED_LIBRARY=OFF | |
| -DUMF_BUILD_EXAMPLES=OFF | |
| -DUMF_FORMAT_CODE_STYLE=OFF | |
| -DUMF_DEVELOPER_MODE=ON | |
| -DUMF_BUILD_LIBUMF_POOL_DISJOINT=ON | |
| -DUMF_BUILD_LIBUMF_POOL_JEMALLOC=OFF | |
| -DUMF_BUILD_LEVEL_ZERO_PROVIDER=ON | |
| -DUMF_BUILD_CUDA_PROVIDER=ON | |
| -DUMF_TESTS_FAIL_ON_SKIP=ON | |
| -DUMF_LINK_HWLOC_STATICALLY=ON | |
| - name: Build UMF | |
| run: cmake --build ${{env.BUILD_DIR}} --config ${{matrix.build_type}} -j $Env:NUMBER_OF_PROCESSORS -v | |
| - name: Run tests | |
| working-directory: ${{env.BUILD_DIR}} | |
| run: ctest -C ${{matrix.build_type}} --output-on-failure --test-dir test | |
| windows-dynamic_mingw_hwloc: | |
| env: | |
| HWLOC_PACKAGE_NAME: hwloc-win64-build-2.10.0 | |
| TBB_PACKAGE_NAME: oneapi-tbb-2021.12.0 | |
| TBB_LIB_DIR: lib\intel64\vc14 | |
| TBB_BIN_DIR: redist\intel64\vc14 | |
| name: "Windows dynamic UMF + mingw libhwloc" | |
| strategy: | |
| matrix: | |
| build_type: [Release] | |
| runs-on: 'windows-2022' | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 | |
| with: | |
| fetch-depth: 0 | |
| - name: Get hwloc from official repo (mingw version) | |
| run: | | |
| Invoke-WebRequest -Uri https://download.open-mpi.org/release/hwloc/v2.10/${{env.HWLOC_PACKAGE_NAME}}.zip -OutFile ${{github.workspace}}\${{env.HWLOC_PACKAGE_NAME}}.zip -TimeoutSec 360 | |
| Expand-Archive ${{github.workspace}}\${{env.HWLOC_PACKAGE_NAME}}.zip -DestinationPath ${{github.workspace}} | |
| - name: Get TBB from github | |
| run: | | |
| Invoke-WebRequest -Uri https://github.com/oneapi-src/oneTBB/releases/download/v2021.12.0/${{env.TBB_PACKAGE_NAME}}-win.zip -OutFile "${{github.workspace}}\${{env.TBB_PACKAGE_NAME}}-win.zip" -TimeoutSec 360 | |
| Expand-Archive "${{github.workspace}}\${{env.TBB_PACKAGE_NAME}}-win.zip" -DestinationPath ${{github.workspace}} | |
| - name: Configure build | |
| run: > | |
| cmake | |
| -B ${{env.BUILD_DIR}} | |
| -DCMAKE_INSTALL_PREFIX="${{env.INSTL_DIR}}" | |
| -DCMAKE_PREFIX_PATH="${{github.workspace}}\${{env.HWLOC_PACKAGE_NAME}};${{github.workspace}}\${{env.TBB_PACKAGE_NAME}};${{github.workspace}}\${{env.TBB_PACKAGE_NAME}}\${{env.TBB_LIB_DIR}};${{github.workspace}}\${{env.TBB_PACKAGE_NAME}}\${{env.TBB_BIN_DIR}}" | |
| -DUMF_BUILD_SHARED_LIBRARY=ON | |
| -DUMF_BUILD_EXAMPLES=ON | |
| -DUMF_FORMAT_CODE_STYLE=OFF | |
| -DUMF_DEVELOPER_MODE=ON | |
| -DUMF_TESTS_FAIL_ON_SKIP=ON | |
| -DUMF_HWLOC_NAME=libhwloc | |
| - name: Build UMF | |
| run: cmake --build ${{env.BUILD_DIR}} --config ${{matrix.build_type}} -j $Env:NUMBER_OF_PROCESSORS | |
| - name: Run tests | |
| working-directory: ${{env.BUILD_DIR}} | |
| run: ctest -C ${{matrix.build_type}} --output-on-failure --test-dir test | |
| macos-build: | |
| name: MacOS | |
| strategy: | |
| matrix: | |
| os: ['macos-12', 'macos-13'] | |
| env: | |
| BUILD_TYPE : "Release" | |
| runs-on: ${{matrix.os}} | |
| steps: | |
| - name: Checkout | |
| uses: actions/checkout@b4ffde65f46336ab88eb53be808477a3936bae11 # v4.1.1 | |
| with: | |
| fetch-depth: 0 | |
| - name: Install Python requirements | |
| run: python3 -m pip install -r third_party/requirements.txt | |
| - name: Install hwloc | |
| run: brew install hwloc jemalloc tbb | |
| - name: Configure build | |
| run: > | |
| cmake | |
| -B ${{env.BUILD_DIR}} | |
| -DCMAKE_INSTALL_PREFIX="${{env.INSTL_DIR}}" | |
| -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} | |
| -DUMF_FORMAT_CODE_STYLE=OFF | |
| -DUMF_DEVELOPER_MODE=ON | |
| -DUMF_BUILD_LEVEL_ZERO_PROVIDER=OFF | |
| -DUMF_BUILD_LIBUMF_POOL_DISJOINT=ON | |
| -DUMF_BUILD_LIBUMF_POOL_JEMALLOC=ON | |
| -DUMF_BUILD_SHARED_LIBRARY=ON | |
| -DUMF_TESTS_FAIL_ON_SKIP=ON | |
| - name: Build UMF | |
| run: cmake --build ${{env.BUILD_DIR}} -j $(sysctl -n hw.logicalcpu) | |
| - name: Test UMF installation and uninstallation | |
| run: > | |
| python3 ${{github.workspace}}/test/test_installation.py | |
| --build-dir ${{env.BUILD_DIR}} | |
| --install-dir ${{env.INSTL_DIR}} | |
| --build-type ${{env.BUILD_TYPE}} | |
| --disjoint-pool | |
| --jemalloc-pool | |
| --proxy | |
| --umf-version ${{env.UMF_VERSION}} | |
| --shared-library |