Skip to content

Commit

Permalink
ci: Run emulated ppc64le images in CI
Browse files Browse the repository at this point in the history
  • Loading branch information
Chuck Atkins committed Apr 29, 2020
1 parent 812556c commit 2f32818
Show file tree
Hide file tree
Showing 6 changed files with 202 additions and 16 deletions.
53 changes: 53 additions & 0 deletions .github/workflows/build-and-test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,59 @@ jobs:
container: ornladios/adios2:suse-pgi-openmpi

steps:
- uses: actions/checkout@v2
with:
ref: ${{ github.event.pull_request.head.sha }}
entrypoint: /usr/bin/sh -c
- name: Setup
run: scripts/ci/gh-actions/linux-setup.sh
- name: Update
run: scripts/ci/gh-actions/run.sh update
- name: Configure
run: scripts/ci/gh-actions/run.sh configure
- name: Build
run: scripts/ci/gh-actions/run.sh build
- name: Test
run: scripts/ci/gh-actions/run.sh test

linux_emu:
runs-on: ubuntu-latest
container:
image: ${{ matrix.container }}
options: --privileged
env:
GH_YML_JOBNAME: ${{ matrix.jobname }}
GH_YML_OS: Linux

strategy:
fail-fast: false
matrix:
jobname: [
power8-el7-xl,
power8-el7-xl-smpi,
power8-el7-pgi,
power8-el7-pgi-smpi ]
include:
- jobname: power8-el7-xl
container: ornladios/adios2:x86_64-power8-el7-xl
arch: ppc64le
- jobname: power8-el7-xl-smpi
container: ornladios/adios2:x86_64-power8-el7-xl-smpi
arch: ppc64le
- jobname: power8-el7-pgi
container: ornladios/adios2:x86_64-power8-el7-pgi
arch: ppc64le
- jobname: power8-el7-pgi-smpi
container: ornladios/adios2:x86_64-power8-el7-pgi-smpi
arch: ppc64le

steps:
- name: Emulation Setup
run: /x86_64/bin/register --reset --targets ${{ matrix.arch }}
env:
PATH: /x86_64/bin
- name: Node.js Setup
run: mount --bind /x86_64/bin/node /__e/node12/bin/node
- uses: actions/checkout@v2
with:
ref: ${{ github.event.pull_request.head.sha }}
Expand Down
36 changes: 36 additions & 0 deletions scripts/ci/cmake/ci-power8-el7-pgi-smpi.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
# Client maintainer: [email protected]

set(ENV{CC} pgcc)
set(ENV{CXX} pgc++)
set(ENV{FC} pgfortran)

find_program(MPICC mpipgicc)
find_program(MPICXX mpipgic++)
find_program(MPIFC mpipgifort)

set(dashboard_cache "
ADIOS2_USE_BZip2:BOOL=OFF
ADIOS2_USE_Blosc:BOOL=OFF
ADIOS2_USE_DataMan:BOOL=OFF
ADIOS2_USE_Fortran:BOOL=ON
ADIOS2_USE_HDF5:BOOL=ON
ADIOS2_USE_MPI:BOOL=ON
ADIOS2_USE_Python:BOOL=OFF
ADIOS2_USE_SZ:BOOL=ON
ADIOS2_USE_ZeroMQ:STRING=OFF
ADIOS2_USE_ZFP:BOOL=ON
MPI_C_COMPILER:FILEPATH=${MPICC}
MPI_CXX_COMPILER:FILEPATH=${MPICXX}
MPI_Fortran_COMPILER:FILEPATH=${MPIFC}
MPIEXEC_EXTRA_FLAGS:STRING=--allow-run-as-root --oversubscribe -tcp
")

set(CTEST_TEST_ARGS
PARALLEL_LEVEL 1
INCLUDE "^(Interface|Install)"
)
set(CTEST_CMAKE_GENERATOR "Unix Makefiles")
list(APPEND CTEST_UPDATE_NOTES_FILES "${CMAKE_CURRENT_LIST_FILE}")
include(${CMAKE_CURRENT_LIST_DIR}/ci-common.cmake)
25 changes: 25 additions & 0 deletions scripts/ci/cmake/ci-power8-el7-pgi.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
# Client maintainer: [email protected]

set(ENV{CC} pgcc)
set(ENV{CXX} pgc++)
set(ENV{FC} pgfortran)

set(dashboard_cache "
ADIOS2_USE_BZip2:BOOL=OFF
ADIOS2_USE_Blosc:BOOL=OFF
ADIOS2_USE_DataMan:BOOL=OFF
ADIOS2_USE_Fortran:BOOL=ON
ADIOS2_USE_HDF5:BOOL=ON
ADIOS2_USE_MPI:BOOL=OFF
ADIOS2_USE_Python:BOOL=OFF
ADIOS2_USE_SZ:BOOL=ON
ADIOS2_USE_ZeroMQ:STRING=OFF
ADIOS2_USE_ZFP:BOOL=ON
")

set(CTEST_TEST_ARGS
INCLUDE "^(Interface|Install)"
)
set(CTEST_CMAKE_GENERATOR "Unix Makefiles")
list(APPEND CTEST_UPDATE_NOTES_FILES "${CMAKE_CURRENT_LIST_FILE}")
include(${CMAKE_CURRENT_LIST_DIR}/ci-common.cmake)
35 changes: 35 additions & 0 deletions scripts/ci/cmake/ci-power8-el7-xl-smpi.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,35 @@
# Client maintainer: [email protected]

set(ENV{CC} xlc)
set(ENV{CXX} xlc++)
set(ENV{FC} xlf)

find_program(MPICC mpixlc)
find_program(MPICXX mpixlC)
find_program(MPIFC mpixlf)

set(dashboard_cache "
ADIOS2_USE_BZip2:BOOL=OFF
ADIOS2_USE_Blosc:BOOL=OFF
ADIOS2_USE_DataMan:BOOL=OFF
ADIOS2_USE_Fortran:BOOL=ON
ADIOS2_USE_HDF5:BOOL=ON
ADIOS2_USE_MPI:BOOL=ON
ADIOS2_USE_Python:BOOL=OFF
ADIOS2_USE_SZ:BOOL=ON
ADIOS2_USE_ZeroMQ:STRING=OFF
ADIOS2_USE_ZFP:BOOL=ON
MPI_C_COMPILER:FILEPATH=${MPICC}
MPI_CXX_COMPILER:FILEPATH=${MPICXX}
MPI_Fortran_COMPILER:FILEPATH=${MPIFC}
MPIEXEC_EXTRA_FLAGS:STRING=--allow-run-as-root --oversubscribe -tcp
")

set(CTEST_TEST_ARGS
PARALLEL_LEVEL 1
INCLUDE "^(Interface|Install)"
)
set(CTEST_CMAKE_GENERATOR "Unix Makefiles")
list(APPEND CTEST_UPDATE_NOTES_FILES "${CMAKE_CURRENT_LIST_FILE}")
include(${CMAKE_CURRENT_LIST_DIR}/ci-common.cmake)
25 changes: 25 additions & 0 deletions scripts/ci/cmake/ci-power8-el7-xl.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,25 @@
# Client maintainer: [email protected]

set(ENV{CC} xlc)
set(ENV{CXX} xlc++)
set(ENV{FC} xlf)

set(dashboard_cache "
ADIOS2_USE_BZip2:BOOL=OFF
ADIOS2_USE_Blosc:BOOL=OFF
ADIOS2_USE_DataMan:BOOL=OFF
ADIOS2_USE_Fortran:BOOL=ON
ADIOS2_USE_HDF5:BOOL=ON
ADIOS2_USE_MPI:BOOL=OFF
ADIOS2_USE_Python:BOOL=OFF
ADIOS2_USE_SZ:BOOL=ON
ADIOS2_USE_ZeroMQ:STRING=OFF
ADIOS2_USE_ZFP:BOOL=ON
")

set(CTEST_TEST_ARGS
INCLUDE "^(Interface|Install)"
)
set(CTEST_CMAKE_GENERATOR "Unix Makefiles")
list(APPEND CTEST_UPDATE_NOTES_FILES "${CMAKE_CURRENT_LIST_FILE}")
include(${CMAKE_CURRENT_LIST_DIR}/ci-common.cmake)
44 changes: 28 additions & 16 deletions scripts/ci/gh-actions/run.sh
Original file line number Diff line number Diff line change
@@ -1,6 +1,12 @@
#!/bin/bash --login

export CI_SITE_NAME="GitHub Actions"
if [[ "${GITHUB_JOB}" =~ emu ]]
then
export CI_SITE_NAME="GitHub Actions (QEMU)"
else
export CI_SITE_NAME="GitHub Actions"
fi

if [ "${GITHUB_EVENT_NAME}" = "pull_request" ]
then
GH_PR_NUMBER=$(expr "${GITHUB_REF}" : 'refs/pull/\([^/]*\)')
Expand Down Expand Up @@ -38,32 +44,38 @@ else
CTEST=ctest
fi

# macOS tmpdir issues
# See https://github.com/open-mpi/ompi/issues/6518
if [[ "${GH_YML_OS}" =~ "macOS" ]]
then
export TMPDIR=/tmp
elif [[ "${GH_YML_OS}" = "linux" ]]
then
export TMPDIR="${CI_ROOT_DIR}/tmp"
mkdir -p "${TMPDIR}"
fi
# Don't rely on the container's storage for tmp
export TMPDIR="${RUNNER_TEMP}/tmp"
mkdir -p "${TMPDIR}"

# OpenMPI specific setup
if [[ "${GH_YML_JOBNAME}" =~ openmpi ]]
# OpenMPI specific setup and workarounds
if [[ "${GH_YML_JOBNAME}" =~ (openmpi|smpi) ]]
then
# Workaround to quiet some warnings from OpenMPI
# Quiet some warnings from OpenMPI
export OMPI_MCA_btl_base_warn_component_unused=0
export OMPI_MCA_btl_vader_single_copy_mechanism=none

# https://github.com/open-mpi/ompi/issues/6518
export OMPI_MCA_btl=self,tcp
# Force only shared mem backends
export OMPI_MCA_btl="self,vader"

# Workaround for open-mpi/ompi#7516
export OMPI_MCA_gds=hash

# Workaround for open-mpi/ompi#5798
export OMPI_MCA_btl_vader_backing_directory="/tmp"

# Enable overscription in OpenMPI
export OMPI_MCA_rmaps_base_oversubscribe=1
export OMPI_MCA_hwloc_base_binding_policy=none

# Disable OpenMPI rsh launching
export OMPI_MCA_plm_rsh_agent=false

# Disable cuda warnings
export OMPI_MCA_opal_warn_on_missing_libcuda=0
fi


echo "**********Env Begin**********"
env | sort
echo "**********Env End************"
Expand Down

0 comments on commit 2f32818

Please sign in to comment.