Repository navigation
Ibv-conduit: Verbs Work Request API #48
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
| name: Smoke Test | |
| run-name: ${{ github.event_name == 'workflow_dispatch' && 'Manual:' || '' }} ${{ inputs.run_name }} | |
| on: | |
| push: | |
| paths-ignore: &paths_ignore | |
| - 'docs/**' | |
| - '**.txt' | |
| - '**.md' | |
| - 'ChangeLog' | |
| - '**/README*' | |
| - 'mpi-conduit/contrib/mpirun_h/**' | |
| - 'other/contrib/cross-configure-*' | |
| - 'other/valgrind/*.supp' | |
| pull_request: | |
| paths-ignore: *paths_ignore | |
| workflow_dispatch: | |
| inputs: | |
| run_name: | |
| description: 'Descriptive name for this run' | |
| type: string | |
| required: false | |
| configure_args: | |
| description: 'Additional configure arguments' | |
| type: string | |
| required: false | |
| test_list: | |
| description: 'Conduit tests to run (or "all")' | |
| type: string | |
| default: 'testgasnet testinternal testthreads' | |
| required: true | |
| test_nodes: | |
| description: 'Test process count' | |
| type: integer | |
| default: 4 | |
| required: true | |
| env_vars: | |
| description: 'Environment vars: k1=v1 k2=v2' | |
| type: string | |
| default: '' | |
| required: false | |
| concurrency: | |
| # De-duplicate concurrent workflow runs on the same branch/ref | |
| group: ${{ github.workflow }}-${{ github.head_ref || github.ref_name }}-${{ ( github.event_name == 'workflow_dispatch' && github.run_id ) || 'auto' }} | |
| cancel-in-progress: ${{ github.ref != 'refs/heads/main' && | |
| github.ref != 'refs/heads/stable' && | |
| github.ref != 'refs/heads/develop' }} | |
| jobs: | |
| build: | |
| name: ${{ matrix.compiler }}-${{ matrix.version }} (${{ matrix.os }}) | |
| runs-on: ${{ matrix.os }} | |
| defaults: | |
| run: | |
| shell: bash --noprofile --norc -e -x -o pipefail {0} | |
| strategy: | |
| fail-fast: false | |
| matrix: | |
| os: [ macos-14, macos-15, macos-15-intel, macos-26, macos-26-intel, ubuntu-24.04 ] | |
| compiler: [ gcc ] | |
| version: [ 12, 13, 14, 15, 16 ] | |
| extra_flags: [ -g ] | |
| include: | |
| - os: ubuntu-24.04 | |
| conduits: &ubuntu_conduits [ mpi, ibv, ofi, ucx ] | |
| - os: ubuntu-22.04 | |
| compiler: gcc | |
| version: 12 # no package available for gcc 13+ | |
| conduits: *ubuntu_conduits | |
| # --- LLVM clang coverage --- | |
| - os: macos-14 | |
| compiler: clang | |
| version: 22 | |
| - os: macos-15 | |
| compiler: clang | |
| version: 22 | |
| - os: macos-15-intel | |
| compiler: clang | |
| version: 22 | |
| - os: macos-26 | |
| compiler: clang | |
| version: 22 | |
| - os: macos-26-intel | |
| compiler: clang | |
| version: 22 | |
| # https://hub.docker.com/r/phhargrove/llvm-flang/tags | |
| - os: ubuntu-24.04 | |
| compiler: clang | |
| version: 22 | |
| conduits: *ubuntu_conduits | |
| container: phhargrove/llvm-flang:22.1.0-latest | |
| - os: ubuntu-24.04 | |
| compiler: clang | |
| version: 21 | |
| conduits: *ubuntu_conduits | |
| container: phhargrove/llvm-flang:21.1.0-latest | |
| - os: ubuntu-24.04 | |
| compiler: clang | |
| version: 20 | |
| conduits: *ubuntu_conduits | |
| container: phhargrove/llvm-flang:20.1.0-latest | |
| - os: ubuntu-24.04 | |
| compiler: clang | |
| version: 19 | |
| conduits: *ubuntu_conduits | |
| container: phhargrove/llvm-flang:19.1.1-latest | |
| # --- Intel coverage --- | |
| # https://hub.docker.com/r/intel/oneapi-hpckit/tags | |
| - os: ubuntu-24.04 | |
| compiler: icx | |
| version: latest | |
| conduits: *ubuntu_conduits | |
| container: intel/oneapi-hpckit:latest | |
| - os: ubuntu-24.04 | |
| compiler: icx | |
| version: 2025.2.0 | |
| conduits: *ubuntu_conduits | |
| container: intel/oneapi-hpckit:2025.2.0-0-devel-ubuntu24.04 | |
| - os: ubuntu-24.04 | |
| compiler: icx | |
| version: 2025.1.0 | |
| conduits: *ubuntu_conduits | |
| container: intel/oneapi-hpckit:2025.1.0-0-devel-ubuntu24.04 | |
| - os: ubuntu-22.04 | |
| compiler: icx | |
| version: 2025.0.0 | |
| conduits: *ubuntu_conduits | |
| container: intel/oneapi-hpckit:2025.0.0-0-devel-ubuntu22.04 | |
| container: | |
| image: ${{ matrix.container }} | |
| options: --shm-size=2gb | |
| env: | |
| COMPILER_VERSION: ${{ matrix.version }} | |
| CC: ${{ matrix.compiler }} | |
| CFLAGS: ${{ matrix.extra_flags }} | |
| CONFIGURE_ARGS: --disable-mpi-compat --enable-rpath --enable-debug ${{ inputs.configure_args }} | |
| GASNET_BACKTRACE: 1 | |
| GASNET_SPAWN_VERBOSE: 1 | |
| GASNET_VERBOSEENV: 1 | |
| GASNET_SPAWNFN: L | |
| GASNET_MASTERIP: 127.0.0.1 | |
| GASNET_TEST_TIME_SLACK: 0.1 | |
| MAKE_FLAGS: -j 4 | |
| TEST_NODES: ${{ inputs.test_nodes || 4 }} | |
| TEST_FILTER: |- | |
| ${{ case( github.event_name == 'workflow_dispatch' && inputs.test_list != 'all', | |
| format('TESTS={0}', inputs.test_list), | |
| github.event_name == 'workflow_dispatch', '_dummy_TESTS=all', | |
| 'TESTS=testgasnet testinternal testthreads' | |
| ) }} | |
| ERR_CHECK: '! grep -q -e "\bERROR" -e "Caught a signal" -e "Caught a fatal signal" -e ": command not found" -e "No such file or directory"' | |
| steps: | |
| - name: Checkout code | |
| uses: actions/checkout@v6 | |
| - name: Install Ubuntu Native Dependencies | |
| if: ${{ contains(matrix.os, 'ubuntu') && matrix.container == '' && matrix.compiler == 'gcc' }} | |
| run: | | |
| sudo apt update | |
| #sudo apt list -a 'gcc-*' | |
| sudo apt install -y build-essential autoconf2.69 automake | |
| if [[ ${COMPILER_VERSION} -lt 15 ]] ; then | |
| sudo apt install -y gcc-${COMPILER_VERSION} | |
| else | |
| curl -L https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh -o install-homebrew.sh | |
| chmod +x install-homebrew.sh | |
| env CI=1 ./install-homebrew.sh | |
| HOMEBREW_PREFIX="/home/linuxbrew/.linuxbrew" | |
| sudo ${HOMEBREW_PREFIX}/bin/brew setup-sandbox | |
| ${HOMEBREW_PREFIX}/bin/brew install -v gcc@${COMPILER_VERSION} binutils | |
| ls -al ${HOMEBREW_PREFIX}/bin | |
| echo "PATH=${HOMEBREW_PREFIX}/bin:${PATH}" >> "$GITHUB_ENV" | |
| : Homebrew GCC@15 needs binutils 2.44+ | |
| HOMEBREW_BINUTILS=$(ls -d ${HOMEBREW_PREFIX}/Cellar/binutils/2.*/bin ) | |
| ls -al ${HOMEBREW_BINUTILS} | |
| echo "FFLAGS=$FFLAGS -B ${HOMEBREW_BINUTILS}" >> "$GITHUB_ENV" | |
| echo "CFLAGS=$CFLAGS -B ${HOMEBREW_BINUTILS}" >> "$GITHUB_ENV" | |
| echo "CXXFLAGS=$CXXFLAGS -B ${HOMEBREW_BINUTILS}" >> "$GITHUB_ENV" | |
| fi | |
| - name: Install Ubuntu Container Dependencies | |
| if: ${{ contains(matrix.os, 'ubuntu') && matrix.container != '' }} | |
| run: | | |
| apt update | |
| apt install -y build-essential autoconf2.69 automake | |
| - name: Install Ubuntu Conduit Dependencies | |
| if: ${{ contains(matrix.os, 'ubuntu') && toJSON(matrix.conduits) != '[]' }} | |
| run: | | |
| FORCE_CONDUITS="" | |
| if [[ $(whoami) == root ]] ; then | |
| SUDO= | |
| else | |
| SUDO=sudo | |
| fi | |
| if [[ ${{ contains(matrix.conduits,'ibv') }} == true ]] ; then | |
| $SUDO apt install -y libibverbs-dev | |
| FORCE_CONDUITS+=" --enable-ibv" | |
| fi | |
| if [[ ${{ contains(matrix.conduits,'ofi') }} == true ]] ; then | |
| $SUDO apt install -y libfabric-dev | |
| FORCE_CONDUITS+=" --enable-ofi" | |
| fi | |
| if [[ ${{ contains(matrix.conduits,'ucx') }} == true ]] ; then | |
| $SUDO apt install -y libucx-dev | |
| FORCE_CONDUITS+=" --enable-ucx" | |
| fi | |
| if [[ ${{ contains(matrix.conduits,'mpi') }} == true ]] ; then | |
| if [[ ${{ matrix.compiler }} == 'icx' ]] ; then # icx uses Intel MPI | |
| echo "MPI_CC=mpiicx" >> "$GITHUB_ENV" | |
| else | |
| $SUDO apt install -y libopenmpi-dev | |
| fi | |
| FORCE_CONDUITS+=" --enable-mpi --enable-mpi-compat" | |
| fi | |
| echo "CONFIGURE_ARGS=$CONFIGURE_ARGS$FORCE_CONDUITS" >> "$GITHUB_ENV" | |
| - name: Install macOS Dependencies | |
| if: contains(matrix.os, 'macos') | |
| run: | | |
| # silence Homebrew tap trust warnings: | |
| (set +e ; brew untap -f aws/tap hashicorp/tap 2>&1 | perl -pe 's/#*.warning./warn: /' ; brew trust azure/bicep ) | |
| brew update | |
| brew install automake # autoconf | |
| if [[ "${{ matrix.compiler }}@${{ matrix.version }}" == gcc@12 ]] ; then | |
| brew install gcc@12 | |
| fi | |
| if [[ ${{ matrix.compiler }} == 'gcc' && ${COMPILER_VERSION} -gt 15 ]] ; then | |
| brew install gcc@${COMPILER_VERSION} | |
| fi | |
| brew install libfabric openmpi | |
| echo "CONFIGURE_ARGS=$CONFIGURE_ARGS --enable-ofi --enable-mpi" >> "$GITHUB_ENV" | |
| - name: Install LLVM on macOS | |
| if: contains(matrix.os, 'macos') && matrix.compiler == 'clang' | |
| run: | | |
| brew install llvm@${COMPILER_VERSION} | |
| # Prepend homebrew clang to PATH: | |
| echo "PATH=$(brew --prefix)/opt/llvm/bin:${PATH}" >> "$GITHUB_ENV" | |
| - name: Setup Compilers | |
| run: | | |
| if test "$CC" = "clang" ; then | |
| echo "CXX=clang++" >> "$GITHUB_ENV" | |
| elif test "$CC" = "icx" ; then | |
| echo "CXX=icpx" >> "$GITHUB_ENV" | |
| else | |
| echo "CC=gcc-${COMPILER_VERSION}" >> "$GITHUB_ENV" | |
| echo "CXX=g++-${COMPILER_VERSION}" >> "$GITHUB_ENV" | |
| # XCode 26 / gcc bug workaround: | |
| # <mach/mach_time.h> generates xnu_static_assert_struct_size errors from <mach/message.h> | |
| if [[ ${{ matrix.os }} =~ macos-26 ]] ; then | |
| echo "CONFIGURE_ARGS=$CONFIGURE_ARGS --enable-force-posix-realtime" >> "$GITHUB_ENV" | |
| fi | |
| fi | |
| - name: Set Workflow Dispatch Environment | |
| if: github.event_name == 'workflow_dispatch' | |
| run: | | |
| for setting in ${{ inputs.env_vars }}; do | |
| echo $setting >> "$GITHUB_ENV" | |
| done | |
| - name: Version info | |
| run: | | |
| set +x | |
| echo == Platform version info == | |
| uname -a | |
| if test -r /etc/os-release ; then grep -e NAME -e VERSION /etc/os-release ; fi | |
| if test -x /usr/bin/sw_vers ; then /usr/bin/sw_vers ; fi | |
| if test -d /dev/shm ; then df -h /dev/shm ; fi | |
| echo | |
| echo == Tool version info == | |
| echo PATH="$PATH" | |
| for tool in ${CC} ${MPI_CC:-`type -p mpicc`} ${CXX} make ; do | |
| ( echo ; set -x ; w=$(which $tool) ; ls -al $w ; ls -alhL $w ; $tool --version ) | |
| done | |
| - name: Bootstrap | |
| run: | | |
| ./Bootstrap | |
| - name: configure | |
| run: | | |
| ./configure --prefix=$PWD/inst ${CONFIGURE_ARGS} | |
| - name: make all | |
| run: | | |
| make ${MAKE_FLAGS} all | |
| - name: make install | |
| run: | | |
| make ${MAKE_FLAGS} install | |
| - name: make check | |
| run: | | |
| make ${MAKE_FLAGS} check 2>&1 | tee output | |
| eval $ERR_CHECK output | |
| mv smp-conduit/testtools . | |
| rm -f */testtools | |
| - name: Run smp-conduit tests | |
| run: | | |
| make ${MAKE_FLAGS} -C smp-conduit run-tests TEST_NODES=${TEST_NODES} "${TEST_FILTER}" 2>&1 | tee output | |
| grep -q -e 'Test results: 0 failures' output | |
| eval $ERR_CHECK output | |
| - name: Run udp-conduit tests | |
| run: | | |
| if [[ -z "$GASNET_SUPERNODE_MAXSIZE" ]] ; then | |
| if [[ ${TEST_NODES} > 2 ]] ; then | |
| export GASNET_SUPERNODE_MAXSIZE=2 | |
| else | |
| export GASNET_SUPERNODE_MAXSIZE=1 | |
| fi | |
| fi | |
| make ${MAKE_FLAGS} -C udp-conduit run-tests TEST_NODES=${TEST_NODES} "${TEST_FILTER}" 2>&1 | tee output | |
| grep -q -e 'Test results: 0 failures' output | |
| eval $ERR_CHECK output | |
| - name: Run testtools | |
| run: | | |
| ./testtools 2>&1 | tee output | |
| eval $ERR_CHECK output | |