From 5d2d38952172bd73f520dd2cd0a9bfafbfe91484 Mon Sep 17 00:00:00 2001 From: Allen Byrne <50328838+byrnHDF@users.noreply.github.com> Date: Mon, 18 Dec 2023 07:50:25 -0600 Subject: [PATCH] Add intel binaries to daily-build/release workflows (#3895) --- .github/workflows/cmake-ctest.yml | 170 ++++++++++++++++++++++- .github/workflows/release-files.yml | 28 +++- CMakePresets.json | 46 ++++++ config/cmake-presets/hidden-presets.json | 23 ++- 4 files changed, 242 insertions(+), 25 deletions(-) diff --git a/.github/workflows/cmake-ctest.yml b/.github/workflows/cmake-ctest.yml index ee4bcff4de..08f8075cee 100644 --- a/.github/workflows/cmake-ctest.yml +++ b/.github/workflows/cmake-ctest.yml @@ -72,7 +72,7 @@ jobs: Copy-Item -Path ${{ runner.workspace }}/hdf5/hdfsrc/README.md -Destination ${{ runner.workspace }}/build/hdf5/ Copy-Item -Path ${{ runner.workspace }}/hdf5/build/ci-StdShar-MSVC/* -Destination ${{ runner.workspace }}/build/hdf5/ -Include *.zip cd "${{ runner.workspace }}/build" - 7z a -tzip ${{ steps.set-file-base.outputs.FILE_BASE }}-win_vs2022.zip hdf5 + 7z a -tzip ${{ steps.set-file-base.outputs.FILE_BASE }}-win-vs2022_cl.zip hdf5 shell: pwsh - name: List files in the space (Windows) @@ -85,8 +85,8 @@ jobs: - name: Save published binary (Windows) uses: actions/upload-artifact@v3 with: - name: zip-vs2022-binary - path: ${{ runner.workspace }}/build/${{ steps.set-file-base.outputs.FILE_BASE }}-win_vs2022.zip + name: zip-vs2022_cl-binary + path: ${{ runner.workspace }}/build/${{ steps.set-file-base.outputs.FILE_BASE }}-win-vs2022_cl.zip if-no-files-found: error # 'warn' or 'ignore' are also available, defaults to `warn` build_and_test_linux: @@ -135,7 +135,7 @@ jobs: cp ${{ runner.workspace }}/hdf5/hdfsrc/README.md ${{ runner.workspace }}/build/hdf5 cp ${{ runner.workspace }}/hdf5/build/ci-StdShar-GNUC/*.tar.gz ${{ runner.workspace }}/build/hdf5 cd "${{ runner.workspace }}/build" - tar -zcvf ${{ steps.set-file-base.outputs.FILE_BASE }}-ubuntu-2204.tar.gz hdf5 + tar -zcvf ${{ steps.set-file-base.outputs.FILE_BASE }}-ubuntu-2204_gcc.tar.gz hdf5 shell: bash - name: List files in the space (Linux) @@ -147,8 +147,8 @@ jobs: - name: Save published binary (Linux) uses: actions/upload-artifact@v3 with: - name: tgz-ubuntu-2204-binary - path: ${{ runner.workspace }}/build/${{ steps.set-file-base.outputs.FILE_BASE }}-ubuntu-2204.tar.gz + name: tgz-ubuntu-2204_gcc-binary + path: ${{ runner.workspace }}/build/${{ steps.set-file-base.outputs.FILE_BASE }}-ubuntu-2204_gcc.tar.gz if-no-files-found: error # 'warn' or 'ignore' are also available, defaults to `warn` # Save doxygen files created by ctest script @@ -230,3 +230,161 @@ jobs: path: ${{ runner.workspace }}/build/${{ steps.set-file-base.outputs.FILE_BASE }}-osx12.tar.gz if-no-files-found: error # 'warn' or 'ignore' are also available, defaults to `warn` +####### intel builds + build_and_test_win_intel: + # Windows w/ OneAPI + CMake + # + name: "Windows Intel CTest" + runs-on: windows-latest + steps: + - name: Install Dependencies (Windows_intel) + run: choco install ninja + + - name: add oneAPI to env + uses: fortran-lang/setup-fortran@v1 + id: setup-fortran + with: + compiler: intel + version: '2023.2' + + - name: Enable Developer Command Prompt + uses: ilammy/msvc-dev-cmd@v1.12.1 + + - name: Set file base name (Windows_intel) + id: set-file-base + run: | + FILE_NAME_BASE=$(echo "${{ inputs.file_base }}") + echo "FILE_BASE=$FILE_NAME_BASE" >> $GITHUB_OUTPUT + shell: bash + + # Get files created by release script + - name: Get zip-tarball (Windows_intel) + uses: actions/download-artifact@v3 + with: + name: zip-tarball + path: ${{ github.workspace }} + + - name: using powershell + shell: pwsh + run: Get-Location + + - name: List files for the space (Windows_intel) + run: | + Get-ChildItem -Path ${{ github.workspace }} + Get-ChildItem -Path ${{ runner.workspace }} + shell: pwsh + + - name: Uncompress source (Windows_intel) + working-directory: ${{ github.workspace }} + run: 7z x ${{ steps.set-file-base.outputs.FILE_BASE }}.zip + shell: bash + + - name: Run ctest (Windows_intel) with oneapi + env: + FC: ${{ steps.setup-fortran.outputs.fc }} + CC: ${{ steps.setup-fortran.outputs.cc }} + CXX: ${{ steps.setup-fortran.outputs.cxx }} + run: | + cd "${{ runner.workspace }}/hdf5/hdfsrc" + cmake --workflow --preset=ci-StdShar-Intel --fresh + shell: pwsh + + - name: Publish binary (Windows_intel) + id: publish-ctest-binary + run: | + mkdir "${{ runner.workspace }}/build" + mkdir "${{ runner.workspace }}/build/hdf5" + Copy-Item -Path ${{ runner.workspace }}/hdf5/hdfsrc/COPYING -Destination ${{ runner.workspace }}/build/hdf5/ + Copy-Item -Path ${{ runner.workspace }}/hdf5/hdfsrc/COPYING_LBNL_HDF5 -Destination ${{ runner.workspace }}/build/hdf5/ + Copy-Item -Path ${{ runner.workspace }}/hdf5/hdfsrc/README.md -Destination ${{ runner.workspace }}/build/hdf5/ + Copy-Item -Path ${{ runner.workspace }}/hdf5/build/ci-StdShar-Intel/* -Destination ${{ runner.workspace }}/build/hdf5/ -Include *.zip + cd "${{ runner.workspace }}/build" + 7z a -tzip ${{ steps.set-file-base.outputs.FILE_BASE }}-win-vs2022_intel.zip hdf5 + shell: pwsh + + - name: List files in the space (Windows_intel) + run: | + Get-ChildItem -Path ${{ github.workspace }} + Get-ChildItem -Path ${{ runner.workspace }} + shell: pwsh + + # Save files created by ctest script + - name: Save published binary (Windows_intel) + uses: actions/upload-artifact@v3 + with: + name: zip-vs2022_intel-binary + path: ${{ runner.workspace }}/build/${{ steps.set-file-base.outputs.FILE_BASE }}-win-vs2022_intel.zip + if-no-files-found: error # 'warn' or 'ignore' are also available, defaults to `warn` + + build_and_test_linux_intel: + # Linux (Ubuntu) w/ OneAPI + CMake + # + name: "Ubuntu Intel CMake" + runs-on: ubuntu-latest + steps: + - name: Install CMake Dependencies (Linux_intel) + run: sudo apt-get install ninja-build doxygen graphviz + + - name: add oneAPI to env + uses: fortran-lang/setup-fortran@v1 + id: setup-fortran + with: + compiler: intel + version: '2023.2' + + - name: Set file base name (Linux_intel) + id: set-file-base + run: | + FILE_NAME_BASE=$(echo "${{ inputs.file_base }}") + echo "FILE_BASE=$FILE_NAME_BASE" >> $GITHUB_OUTPUT + + # Get files created by release script + - name: Get tgz-tarball (Linux_intel) + uses: actions/download-artifact@v3 + with: + name: tgz-tarball + path: ${{ github.workspace }} + + - name: List files for the space (Linux_intel) + run: | + ls -l ${{ github.workspace }} + ls ${{ runner.workspace }} + + - name: Uncompress source (Linux_intel) + run: tar -zxvf ${{ github.workspace }}/${{ steps.set-file-base.outputs.FILE_BASE }}.tar.gz + + - name: Run ctest (Linux_intel) + env: + FC: ${{ steps.setup-fortran.outputs.fc }} + CC: ${{ steps.setup-fortran.outputs.cc }} + CXX: ${{ steps.setup-fortran.outputs.cxx }} + run: | + cd "${{ runner.workspace }}/hdf5/hdfsrc" + cmake --workflow --preset=ci-StdShar-Intel --fresh + shell: bash + + - name: Publish binary (Linux_intel) + id: publish-ctest-binary + run: | + mkdir "${{ runner.workspace }}/build" + mkdir "${{ runner.workspace }}/build/hdf5" + cp ${{ runner.workspace }}/hdf5/hdfsrc/COPYING ${{ runner.workspace }}/build/hdf5 + cp ${{ runner.workspace }}/hdf5/hdfsrc/COPYING_LBNL_HDF5 ${{ runner.workspace }}/build/hdf5 + cp ${{ runner.workspace }}/hdf5/hdfsrc/README.md ${{ runner.workspace }}/build/hdf5 + cp ${{ runner.workspace }}/hdf5/build/ci-StdShar-Intel/*.tar.gz ${{ runner.workspace }}/build/hdf5 + cd "${{ runner.workspace }}/build" + tar -zcvf ${{ steps.set-file-base.outputs.FILE_BASE }}-ubuntu-2204_intel.tar.gz hdf5 + shell: bash + + - name: List files in the space (Linux_intel) + run: | + ls ${{ github.workspace }} + ls -l ${{ runner.workspace }} + + # Save files created by ctest script + - name: Save published binary (Linux_intel) + uses: actions/upload-artifact@v3 + with: + name: tgz-ubuntu-2204_intel-binary + path: ${{ runner.workspace }}/build/${{ steps.set-file-base.outputs.FILE_BASE }}-ubuntu-2204_intel.tar.gz + if-no-files-found: error # 'warn' or 'ignore' are also available, defaults to `warn` diff --git a/.github/workflows/release-files.yml b/.github/workflows/release-files.yml index 2505534fac..29b368f932 100644 --- a/.github/workflows/release-files.yml +++ b/.github/workflows/release-files.yml @@ -99,7 +99,7 @@ jobs: - name: Get published binary (Windows) uses: actions/download-artifact@9bc31d5ccc31df68ecc42ccf4149144866c47d8a # v3.0.2 with: - name: zip-vs2022-binary + name: zip-vs2022_cl-binary path: ${{ github.workspace }} - name: Get published binary (MacOS) @@ -111,7 +111,19 @@ jobs: - name: Get published binary (Linux) uses: actions/download-artifact@9bc31d5ccc31df68ecc42ccf4149144866c47d8a # v3.0.2 with: - name: tgz-ubuntu-2204-binary + name: tgz-ubuntu-2204_gcc-binary + path: ${{ github.workspace }} + + - name: Get published binary (Windows_intel) + uses: actions/download-artifact@9bc31d5ccc31df68ecc42ccf4149144866c47d8a # v3.0.2 + with: + name: zip-vs2022_intel-binary + path: ${{ github.workspace }} + + - name: Get published binary (Linux_intel) + uses: actions/download-artifact@9bc31d5ccc31df68ecc42ccf4149144866c47d8a # v3.0.2 + with: + name: tgz-ubuntu-2204_intel-binary path: ${{ github.workspace }} - name: Store snapshot name @@ -131,8 +143,10 @@ jobs: ${{ steps.get-file-base.outputs.FILE_BASE }}.tar.gz ${{ steps.get-file-base.outputs.FILE_BASE }}.zip ${{ steps.get-file-base.outputs.FILE_BASE }}-osx12.tar.gz - ${{ steps.get-file-base.outputs.FILE_BASE }}-ubuntu-2204.tar.gz - ${{ steps.get-file-base.outputs.FILE_BASE }}-win_vs2022.zip + ${{ steps.get-file-base.outputs.FILE_BASE }}-ubuntu-2204_gcc.tar.gz + ${{ steps.get-file-base.outputs.FILE_BASE }}-win-vs2022_cl.zip + ${{ steps.get-file-base.outputs.FILE_BASE }}-ubuntu-2204_intel.tar.gz + ${{ steps.get-file-base.outputs.FILE_BASE }}-win-vs2022_intel.zip if-no-files-found: error # 'warn' or 'ignore' are also available, defaults to `warn` - name: Release tag @@ -148,8 +162,10 @@ jobs: ${{ steps.get-file-base.outputs.FILE_BASE }}.tar.gz ${{ steps.get-file-base.outputs.FILE_BASE }}.zip ${{ steps.get-file-base.outputs.FILE_BASE }}-osx12.tar.gz - ${{ steps.get-file-base.outputs.FILE_BASE }}-ubuntu-2204.tar.gz - ${{ steps.get-file-base.outputs.FILE_BASE }}-win_vs2022.zip + ${{ steps.get-file-base.outputs.FILE_BASE }}-ubuntu-2204_gcc.tar.gz + ${{ steps.get-file-base.outputs.FILE_BASE }}-win-vs2022_cl.zip + ${{ steps.get-file-base.outputs.FILE_BASE }}-ubuntu-2204_intel.tar.gz + ${{ steps.get-file-base.outputs.FILE_BASE }}-win-vs2022_intel.zip if-no-files-found: error # 'warn' or 'ignore' are also available, defaults to `warn` - name: List files for the space (Linux) diff --git a/CMakePresets.json b/CMakePresets.json index ab4a61589d..84b4f2f38b 100644 --- a/CMakePresets.json +++ b/CMakePresets.json @@ -148,6 +148,17 @@ "ci-Java", "ci-StdShar" ] + }, + { + "name": "ci-StdShar-Intel", + "description": "Intel Standard Config for x64 (Release)", + "inherits": [ + "ci-x64-Release-Intel", + "ci-CPP", + "ci-Fortran", + "ci-Java", + "ci-StdShar" + ] } ], "buildPresets": [ @@ -175,6 +186,15 @@ "inherits": [ "ci-x64-Release-GNUC" ] + }, + { + "name": "ci-StdShar-Intel", + "description": "Intel Standard Build for x64 (Release)", + "configurePreset": "ci-StdShar-Intel", + "verbose": true, + "inherits": [ + "ci-x64-Release-Intel" + ] } ], "testPresets": [ @@ -203,6 +223,18 @@ "inherits": [ "ci-x64-Release-GNUC" ] + }, + { + "name": "ci-StdShar-Intel", + "configurePreset": "ci-StdShar-Intel", + "inherits": [ + "ci-x64-Release-Intel" + ], + "filter": { + "exclude": { + "name": "H5DUMP-tfloatsattrs" + } + } } ], "packagePresets": [ @@ -220,6 +252,11 @@ "name": "ci-StdShar-GNUC", "configurePreset": "ci-StdShar-GNUC", "inherits": "ci-x64-Release-GNUC" + }, + { + "name": "ci-StdShar-Intel", + "configurePreset": "ci-StdShar-Intel", + "inherits": "ci-x64-Release-Intel" } ], "workflowPresets": [ @@ -249,6 +286,15 @@ {"type": "test", "name": "ci-StdShar-GNUC"}, {"type": "package", "name": "ci-StdShar-GNUC"} ] + }, + { + "name": "ci-StdShar-Intel", + "steps": [ + {"type": "configure", "name": "ci-StdShar-Intel"}, + {"type": "build", "name": "ci-StdShar-Intel"}, + {"type": "test", "name": "ci-StdShar-Intel"}, + {"type": "package", "name": "ci-StdShar-Intel"} + ] } ] } diff --git a/config/cmake-presets/hidden-presets.json b/config/cmake-presets/hidden-presets.json index 3d61ebc5d3..24ab42e69f 100644 --- a/config/cmake-presets/hidden-presets.json +++ b/config/cmake-presets/hidden-presets.json @@ -88,8 +88,16 @@ { "name": "ci-Intel", "hidden": true, + "toolset": { + "value": "host=x64", + "strategy": "external" + } + }, + { + "name": "ci-Fortran", + "hidden": true, "cacheVariables": { - "CMAKE_TOOLCHAIN_FILE": "config/toolchain/intel.cmake" + "HDF5_BUILD_FORTRAN": "ON" }, "toolset": { "value": "host=x64", @@ -99,6 +107,7 @@ { "name": "ci-Fortran-Clang", "hidden": true, + "inherits": "ci-Fortran", "cacheVariables": { "CMAKE_Fortran_COMPILER": {"type": "FILEPATH", "value": "gfortran"} }, @@ -108,18 +117,6 @@ "regex": ".*-Clang" } }, - { - "name": "ci-Fortran", - "hidden": true, - "inherits": "ci-Fortran-Clang", - "cacheVariables": { - "HDF5_BUILD_FORTRAN": "ON" - }, - "toolset": { - "value": "host=x64", - "strategy": "external" - } - }, { "name": "ci-CPP", "hidden": true,