Skip to content

Commit

Permalink
Adjust aocc workflow to fit the autotools/cmake pattern of other call…
Browse files Browse the repository at this point in the history
…able workflows. (#4115)
  • Loading branch information
byrnHDF authored Mar 12, 2024
1 parent 4279c35 commit fd280df
Show file tree
Hide file tree
Showing 7 changed files with 213 additions and 91 deletions.
104 changes: 104 additions & 0 deletions .github/workflows/aocc-ompi-auto.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,104 @@
name: hdf5 dev PAR autotools aocc ompi

on:
workflow_call:
inputs:
build_mode:
description: "release vs. debug build"
required: true
type: string

permissions:
contents: read

jobs:
aocc_build_and_test:
name: "aocc ${{ inputs.build_mode }}"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4.1.1

- name: Install Linux dependencies
shell: bash
run: |
sudo apt update
sudo apt install -y autoconf automake libtool libtool-bin libaec-dev
sudo apt install -y doxygen libncurses-dev libquadmath0 libstdc++6 libxml2
sudo apt install -y zlib1g-dev libcurl4-openssl-dev libjpeg-dev wget curl bzip2
sudo apt install -y m4 flex bison cmake libzip-dev openssl build-essential
- name: Install AOCC 4.1.0
run: |
wget https://download.amd.com/developer/eula/aocc/aocc-4-1/aocc-compiler-4.1.0.tar
tar -xvf aocc-compiler-4.1.0.tar
cd aocc-compiler-4.1.0
bash install.sh
source /home/runner/work/hdf5/hdf5/setenv_AOCC.sh
which clang
which flang
clang -v
- name: Cache OpenMPI 4.1.5 installation
id: cache-openmpi-4_1_5
uses: actions/cache@v4
with:
path: /home/runner/work/hdf5/hdf5/openmpi-4.1.5-install
key: ${{ runner.os }}-${{ runner.arch }}-openmpi-4_1_5-cache

- name: Install OpenMPI 4.1.5
if: ${{ steps.cache-openmpi-4_1_5.outputs.cache-hit != 'true' }}
run: |
export LD_LIBRARY_PATH=/home/runner/work/hdf5/hdf5/aocc-compiler-4.1.0/lib:/usr/local/lib
wget https://download.open-mpi.org/release/open-mpi/v4.1/openmpi-4.1.5.tar.gz
tar zxvf openmpi-4.1.5.tar.gz
cd openmpi-4.1.5
./configure CC=/home/runner/work/hdf5/hdf5/aocc-compiler-4.1.0/bin/clang FC=/home/runner/work/hdf5/hdf5/aocc-compiler-4.1.0/bin/flang --prefix=/home/runner/work/hdf5/hdf5/openmpi-4.1.5-install
make
make install
- name: Autotools Configure
env:
NPROCS: 2
run: |
export LD_LIBRARY_PATH=/home/runner/work/hdf5/hdf5/aocc-compiler-4.1.0/lib:/home/runner/work/hdf5/hdf5/openmpi-4.1.5-install/lib:/usr/local/lib
export LD_RUN_PATH=/home/runner/work/hdf5/hdf5/aocc-compiler-4.1.0/lib:/home/runner/work/hdf5/hdf5/openmpi-4.1.5-install/lib:/usr/local/lib
export PATH=/home/runner/work/hdf5/hdf5/openmpi-4.1.5-install/bin:/usr/local/bin:$PATH
sh ./autogen.sh
mkdir "${{ runner.workspace }}/build"
cd "${{ runner.workspace }}/build"
CC=mpicc $GITHUB_WORKSPACE/configure \
--prefix=/tmp \
--enable-build-mode=${{ inputs.build_mode }} \
--enable-shared \
--enable-parallel \
LDFLAGS="-L/home/runner/work/hdf5/hdf5/aocc-compiler-4.1.0/lib \
-L/home/runner/work/hdf5/hdf5/openmpi-4.1.5-install/lib"
# BUILD
- name: Autotools Build
shell: bash
env:
NPROCS: 2
run: |
export PATH=/home/runner/work/hdf5/hdf5/openmpi-4.1.5-install/bin:/usr/local/bin:$PATH
make -j3
working-directory: ${{ runner.workspace }}/build

# RUN TESTS
# NORMAL
- name: Autotools Run Tests
env:
NPROCS: 2
run: |
export PATH=/home/runner/work/hdf5/hdf5/openmpi-4.1.5-install/bin:/usr/local/bin:$PATH
make check -j
working-directory: ${{ runner.workspace }}/build

# INSTALL (note that this runs even when we don't run the tests)
- name: Autotools Install
env:
NPROCS: 2
run: |
export PATH=/home/runner/work/hdf5/hdf5/openmpi-4.1.5-install/bin:/usr/local/bin:$PATH
make install
working-directory: ${{ runner.workspace }}/build
92 changes: 92 additions & 0 deletions .github/workflows/aocc-ompi-cmake.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,92 @@
name: hdf5 dev PAR CMake aocc ompi

on:
workflow_call:
inputs:
build_mode:
description: "release vs. debug build"
required: true
type: string

permissions:
contents: read

jobs:
aocc_build_and_test:
name: "aocc ${{ inputs.build_mode }}"
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4.1.1

- name: Install Linux dependencies
shell: bash
run: |
sudo apt update
sudo apt install -y libaec-dev ninja-build
sudo apt install -y doxygen libncurses-dev libquadmath0 libstdc++6 libxml2
sudo apt install -y zlib1g-dev libcurl4-openssl-dev libjpeg-dev wget curl bzip2
sudo apt install -y m4 flex bison cmake libzip-dev openssl build-essential
- name: Install AOCC 4.1.0
run: |
wget https://download.amd.com/developer/eula/aocc/aocc-4-1/aocc-compiler-4.1.0.tar
tar -xvf aocc-compiler-4.1.0.tar
cd aocc-compiler-4.1.0
bash install.sh
source /home/runner/work/hdf5/hdf5/setenv_AOCC.sh
which clang
which flang
clang -v
- name: Cache OpenMPI 4.1.5 installation
id: cache-openmpi-4_1_5
uses: actions/cache@v4
with:
path: /home/runner/work/hdf5/hdf5/openmpi-4.1.5-install
key: ${{ runner.os }}-${{ runner.arch }}-openmpi-4_1_5-cache

- name: Install OpenMPI 4.1.5
if: ${{ steps.cache-openmpi-4_1_5.outputs.cache-hit != 'true' }}
run: |
export LD_LIBRARY_PATH=/home/runner/work/hdf5/hdf5/aocc-compiler-4.1.0/lib:/usr/local/lib
wget https://download.open-mpi.org/release/open-mpi/v4.1/openmpi-4.1.5.tar.gz
tar zxvf openmpi-4.1.5.tar.gz
cd openmpi-4.1.5
./configure CC=/home/runner/work/hdf5/hdf5/aocc-compiler-4.1.0/bin/clang FC=/home/runner/work/hdf5/hdf5/aocc-compiler-4.1.0/bin/flang --prefix=/home/runner/work/hdf5/hdf5/openmpi-4.1.5-install
make
make install
- name: CMake Configure with aocc
shell: bash
run: |
export LD_LIBRARY_PATH=/home/runner/work/hdf5/hdf5/aocc-compiler-4.1.0/lib:/home/runner/work/hdf5/hdf5/openmpi-4.1.5-install/lib:/usr/local/lib
export LD_RUN_PATH=/home/runner/work/hdf5/hdf5/aocc-compiler-4.1.0/lib:/home/runner/work/hdf5/hdf5/openmpi-4.1.5-install/lib:/usr/local/lib
export PATH=/home/runner/work/hdf5/hdf5/openmpi-4.1.5-install/bin:/usr/local/bin:$PATH
mkdir "${{ runner.workspace }}/build"
cd "${{ runner.workspace }}/build"
CC=mpicc cmake -C $GITHUB_WORKSPACE/config/cmake/cacheinit.cmake -G Ninja \
-DCMAKE_BUILD_TYPE=${{ inputs.build_mode }} \
-DHDF5_ENABLE_SZIP_SUPPORT:BOOL=OFF \
-DHDF5_ENABLE_PARALLEL:BOOL=ON \
-DHDF5_BUILD_CPP_LIB:BOOL=OFF \
-DLIBAEC_USE_LOCALCONTENT=OFF \
-DZLIB_USE_LOCALCONTENT=OFF \
-DHDF5_BUILD_FORTRAN:BOOL=OFF \
-DHDF5_BUILD_JAVA:BOOL=OFF \
-DMPIEXEC_MAX_NUMPROCS:STRING="2" \
$GITHUB_WORKSPACE
#cat src/libhdf5.settings
# BUILD
- name: CMake Build
shell: bash
run: |
cmake --build . --parallel 3 --config ${{ inputs.build_mode }}
working-directory: ${{ runner.workspace }}/build

# RUN TESTS
- name: CMake Run Tests
shell: bash
run: |
ctest . --parallel 2 -C ${{ inputs.build_mode }} -V
working-directory: ${{ runner.workspace }}/build
6 changes: 6 additions & 0 deletions .github/workflows/autotools.yml
Original file line number Diff line number Diff line change
Expand Up @@ -70,3 +70,9 @@ jobs:
uses: ./.github/workflows/nvhpc-auto.yml
with:
build_mode: "production"

call-release-auto-aocc:
name: "Autotools aocc Workflows"
uses: ./.github/workflows/aocc-ompi-auto.yml
with:
build_mode: "production"
6 changes: 6 additions & 0 deletions .github/workflows/cmake.yml
Original file line number Diff line number Diff line change
Expand Up @@ -73,3 +73,9 @@ jobs:
uses: ./.github/workflows/nvhpc-cmake.yml
with:
build_mode: "Release"

call-release-cmake-aocc:
name: "CMake nvhpc Workflows"
uses: ./.github/workflows/aocc-ompi-cmake.yml
with:
build_mode: "Release"
73 changes: 0 additions & 73 deletions .github/workflows/linux-auto-aocc-ompi.yml

This file was deleted.

20 changes: 3 additions & 17 deletions .github/workflows/main-cmake-par.yml
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
name: hdf5 dev PAR CMake CI

# Controls when the action will run. Triggers the workflow on a call
on:
workflow_call:
inputs:
Expand All @@ -12,9 +11,6 @@ on:
permissions:
contents: read

# A workflow run is made up of one or more jobs that can run sequentially or
# in parallel. We just have one job, but the matrix items defined below will
# run in parallel.
jobs:
#
# The GitHub runners are inadequate for running parallel HDF5 tests,
Expand All @@ -25,15 +21,10 @@ jobs:
#
CMake_build_parallel:
name: "Parallel GCC-${{ inputs.build_mode }}"
# Don't run the action if the commit message says to skip CI
if: ${{ inputs.thread_safety != 'TS' }}

# The type of runner that the job will run on
runs-on: ubuntu-latest

# Steps represent a sequence of tasks that will be executed as part of the job
steps:
# SETUP
- uses: actions/checkout@v4.1.1

- name: Install Linux Dependencies
run: |
sudo apt update
Expand All @@ -45,12 +36,8 @@ jobs:
echo "CC=mpicc" >> $GITHUB_ENV
echo "FC=mpif90" >> $GITHUB_ENV
# Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it
- name: Get Sources
uses: actions/checkout@v4.1.1

# CMAKE CONFIGURE
- name: CMake Configure
shell: bash
run: |
mkdir "${{ runner.workspace }}/build"
cd "${{ runner.workspace }}/build"
Expand All @@ -69,7 +56,6 @@ jobs:
-DHDF5_ENABLE_ROS3_VFD:BOOL=OFF \
-DHDF5_PACK_EXAMPLES:BOOL=ON \
$GITHUB_WORKSPACE
shell: bash
# BUILD
- name: CMake Build
Expand Down
3 changes: 2 additions & 1 deletion .github/workflows/nvhpc-auto.yml
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,8 @@ jobs:
sudo apt-get update
sudo apt-get install autoconf automake libtool libtool-bin libaec-dev
sudo apt-get install doxygen graphviz
sudo apt install -y zlib1g-dev libcurl4-openssl-dev libjpeg-dev wget curl bzip2 m4 flex bison cmake libzip-dev openssl build-essential
sudo apt install -y zlib1g-dev libcurl4-openssl-dev libjpeg-dev wget curl bzip2
sudo apt install -y m4 flex bison cmake libzip-dev openssl build-essential
- name: Install NVHPC
shell: bash
Expand Down

0 comments on commit fd280df

Please sign in to comment.