Skip to content

Commit 9a6cb22

Browse files
authored
Merge pull request #53 from Sichao25/yus/ci
Switch from MPICH to OpenMPI in CI
2 parents 39b1da5 + cc70d26 commit 9a6cb22

File tree

3 files changed

+24
-12
lines changed

3 files changed

+24
-12
lines changed

.github/workflows/cmake.yml

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,8 @@ on:
1212
jobs:
1313
buildTestAnalyze:
1414
# See: https://docs.github.com/en/free-pro-team@latest/actions/learn-github-actions/managing-complex-workflows#using-a-build-matrix
15-
# The reason to use ubuntu-22.04: https://bugs.launchpad.net/ubuntu/+source/mpich/+bug/2072338
16-
runs-on: ubuntu-22.04
15+
# A known bug using MPICH ubuntu-24.04: https://bugs.launchpad.net/ubuntu/+source/mpich/+bug/2072338
16+
runs-on: ubuntu-24.04
1717
strategy:
1818
matrix:
1919
compiler:
@@ -41,7 +41,7 @@ jobs:
4141
- name: Install mpi
4242
run: |
4343
sudo apt-get update -yq
44-
sudo apt-get install -yq mpich libmpich-dev
44+
sudo apt-get install -yq openmpi-bin libopenmpi-dev
4545
4646
- name: ADIOS2 Create Build Environment
4747
run: /usr/bin/cmake -E make_directory ${{runner.workspace}}/build-adios2
@@ -147,6 +147,7 @@ jobs:
147147
run: /usr/bin/cmake $GITHUB_WORKSPACE/redev
148148
-DCMAKE_CXX_COMPILER=mpicxx
149149
-DCMAKE_C_COMPILER=mpicc
150+
-DMPIEXEC_PREFLAGS="--oversubscribe"
150151
-DCMAKE_BUILD_TYPE=${{matrix.build_type}}
151152
-DADIOS2_DIR=${{runner.workspace}}/build-adios2/install/lib/cmake/adios2/
152153
-DADIOS2_HAVE_SST=ON

CMakeLists.txt

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,6 +62,7 @@ include(CTest)
6262
if(BUILD_TESTING)
6363
message(STATUS "MPIEXEC_EXECUTABLE: ${MPIEXEC_EXECUTABLE}")
6464
message(STATUS "MPIEXEC_NUMPROC_FLAG: ${MPIEXEC_NUMPROC_FLAG}")
65+
message(STATUS "MPIEXEC_PREFLAGS: ${MPIEXEC_PREFLAGS}")
6566

6667
set(ADIOS2_BPLS_PATH CACHE FILEPATH "Path to the ADIOS2 bpls utility")
6768
if(ADIOS2_BPLS_PATH AND NOT EXISTS ${ADIOS2_BPLS_PATH})
@@ -91,7 +92,7 @@ if(BUILD_TESTING)
9192
removeAdiosFiles(${TESTNAME}_cleanup)
9293
add_test(
9394
NAME ${TESTNAME}
94-
COMMAND ${MPIEXEC_EXECUTABLE} ${MPIEXEC_NUMPROC_FLAG} ${PROCS} ${VALGRIND} ${VALGRIND_ARGS} ${EXE} ${ARGN}
95+
COMMAND ${MPIEXEC_EXECUTABLE} ${MPIEXEC_PREFLAGS} ${MPIEXEC_NUMPROC_FLAG} ${PROCS} ${VALGRIND} ${VALGRIND_ARGS} ${EXE} ${ARGN}
9596
)
9697
endfunction(mpi_test)
9798

@@ -103,6 +104,7 @@ if(BUILD_TESTING)
103104
add_test(NAME ${DUALTEST_TESTNAME}
104105
COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/runMultipleMpiJobs.sh
105106
${MPIEXEC_EXECUTABLE}
107+
${MPIEXEC_PREFLAGS}
106108
${MPIEXEC_NUMPROC_FLAG}
107109
${DUALTEST_NAME1} ${DUALTEST_PROCS1} ${DUALTEST_EXE1} "${DUALTEST_ARGS1}"
108110
${DUALTEST_NAME2} ${DUALTEST_PROCS2} ${DUALTEST_EXE2} "${DUALTEST_ARGS2}")
@@ -117,6 +119,7 @@ if(BUILD_TESTING)
117119
add_test(NAME ${TRITEST_TESTNAME}
118120
COMMAND ${CMAKE_CURRENT_SOURCE_DIR}/runMultipleMpiJobs.sh
119121
${MPIEXEC_EXECUTABLE}
122+
${MPIEXEC_PREFLAGS}
120123
${MPIEXEC_NUMPROC_FLAG}
121124
${TRITEST_NAME1} ${TRITEST_PROCS1} ${TRITEST_EXE1} "${TRITEST_ARGS1}"
122125
${TRITEST_NAME2} ${TRITEST_PROCS2} ${TRITEST_EXE2} "${TRITEST_ARGS2}"

runMultipleMpiJobs.sh

Lines changed: 16 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,20 +1,28 @@
11
#!/bin/bash -x
2-
[[ $# != 10 && $# != 14 && $# != 20 ]] && \
3-
echo "Usage: <run command> <process flag> <name0> <procs0> <exe0> <args0> ... <name2> <procs2> <exe2> <args2>" && \
2+
if [[ $# == 10 || $# == 14 || $# == 20 ]]; then
3+
# Old format: no preflags
4+
runCmd=${1}
5+
numProcsFlag=${2}
6+
preFlags=""
7+
shift 2
8+
elif [[ $# == 11 || $# == 15 || $# == 21 ]]; then
9+
# New format: with preflags
10+
runCmd=${1}
11+
preFlags=${2}
12+
numProcsFlag=${3}
13+
shift 3
14+
else
15+
echo "Usage: <run command> <process flag> <preflags> <name0> <procs0> <exe0> <args0> ... <name2> <procs2> <exe2> <args2>" && \
416
exit 1
5-
runCmd=${1}
6-
numProcsFlag=${2}
7-
shift 2
17+
fi
818

9-
declare -a PIDS
10-
declare -a LOGS
1119
run() {
1220
local name=${1}
1321
local procs=${2}
1422
local exe=${3}
1523
local args=${4}
1624
IFS=';' read -a argsArray <<< "${args}" #split the cmake list of args
17-
${runCmd} ${numProcsFlag} ${procs} ${exe} ${argsArray[@]} &> ${name}.log &
25+
${runCmd} ${preFlags} ${numProcsFlag} ${procs} ${exe} ${argsArray[@]} &> ${name}.log &
1826
PIDS+=($!)
1927
LOGS+=(${name}.log)
2028
}

0 commit comments

Comments
 (0)