Skip to content

Commit 7fa4bff

Browse files
committed
Finalize github workflow and add comments
1 parent 233abcc commit 7fa4bff

1 file changed

Lines changed: 51 additions & 99 deletions

File tree

.github/workflows/single-platform.yml

Lines changed: 51 additions & 99 deletions
Original file line numberDiff line numberDiff line change
@@ -9,132 +9,84 @@ on:
99
jobs:
1010
testMPI:
1111
runs-on: ubuntu-latest
12+
# Define a build matrix over compilers
1213
strategy:
1314
matrix:
1415
compiler: [GCC, ICC, CLANG]
1516

1617
steps:
17-
- uses: actions/checkout@v4
18+
# 1) Check out the repository code
19+
- name: Checkout repository
20+
uses: actions/checkout@v4
1821

22+
# 2) Set up Spack for package management
1923
- name: Set-up Spack
2024
uses: spack/setup-spack@v2
2125
with:
22-
ref: develop
23-
buildcache: true
24-
color: true
25-
path: spack
26+
ref: develop # Use the 'develop' branch of the spack/setup-spack action
27+
buildcache: true # Enable Spack binary cache
28+
color: true # Enable colored output
29+
path: spack # Install Spack under ./spack directory
2630

31+
# 3) Install necessary compiler and MPI packages via Spack
2732
- name: Install Compilers and MPI Wrappers
2833
run: |
34+
# Source Spack environment to get spack commands
2935
. ./spack/share/spack/setup-env.sh
3036
31-
if [[ "${{ matrix.compiler }}" == "GCC" ]]; then
32-
spack install -j 4 openmpi
33-
elif [[ "${{ matrix.compiler }}" == "ICC" ]]; then
34-
spack install -j 4 intel-oneapi-compilers
35-
spack install -j 4 intel-oneapi-mpi
36-
elif [[ "${{ matrix.compiler }}" == "CLANG" ]]; then
37-
spack install -j 4 llvm
38-
spack install -j 4 openmpi
39-
fi
40-
41-
- name: Configure and Make SparseBench
37+
# Based on matrix.compiler, install the right packages
38+
case "${{ matrix.compiler }}" in
39+
GCC)
40+
# Install OpenMPI for GCC
41+
spack install -j 4 openmpi;;
42+
ICC)
43+
# Install Intel compilers and Intel MPI
44+
spack install -j 4 intel-oneapi-compilers
45+
spack install -j 4 intel-oneapi-mpi;;
46+
CLANG)
47+
# Install LLVM/Clang and OpenMPI
48+
spack install -j 4 llvm
49+
spack install -j 4 openmpi;;
50+
esac
51+
52+
# 4) Configure, build, and run tests in one step to preserve environment
53+
- name: Configure and Make SparseBench Tests
4254
run: |
55+
# Re-source Spack so we have spack load available
4356
. ./spack/share/spack/setup-env.sh
4457
45-
if [[ "${{ matrix.compiler }}" == "GCC" ]]; then
46-
eval "$(spack load --sh openmpi)"
47-
elif [[ "${{ matrix.compiler }}" == "ICC" ]]; then
48-
eval "$(spack load --sh intel-oneapi-compilers)"
49-
eval "$(spack load --sh intel-oneapi-mpi)"
50-
elif [[ "${{ matrix.compiler }}" == "CLANG" ]]; then
51-
eval "$(spack load --sh llvm)"
52-
eval "$(spack load --sh openmpi)"
53-
fi
54-
58+
# Based on matrix.compiler, load the correct compiler/MPI into this shell
59+
case "${{ matrix.compiler }}" in
60+
GCC)
61+
# Load OpenMPI for GCC
62+
eval "$(spack load --sh openmpi)";;
63+
ICC)
64+
# Load Intel compilers and Intel MPI
65+
eval "$(spack load --sh intel-oneapi-compilers)"
66+
eval "$(spack load --sh intel-oneapi-mpi)";;
67+
CLANG)
68+
# Load LLVM/Clang and OpenMPI
69+
eval "$(spack load --sh llvm)"
70+
eval "$(spack load --sh openmpi)";;
71+
esac
72+
73+
# Export TOOLCHAIN for the Makefile
5574
TOOLCHAIN="${{ matrix.compiler }}"
5675
76+
# Update build configuration flags in config.mk
5777
sed -E -i \
5878
-e 's/^(ENABLE_MPI[[:space:]]*\?=[[:space:]]*).*/\1true/' \
5979
-e 's/^(ENABLE_OPENMP[[:space:]]*\?=[[:space:]]*).*/\1false/' \
6080
-e 's/^(MTX_FMT[[:space:]]*\?=[[:space:]]*).*/\1SCS/' \
6181
-e "s/^(TOOLCHAIN[[:space:]]*\?=[[:space:]]*).*/\1${TOOLCHAIN}/" \
6282
config.mk
6383
84+
# Build the main project
6485
make
6586
66-
- name: Make and Run Tests
67-
run: |
68-
. ./spack/share/spack/setup-env.sh
69-
70-
if [[ "${{ matrix.compiler }}" == "GCC" ]]; then
71-
eval "$(spack load --sh openmpi)"
72-
elif [[ "${{ matrix.compiler }}" == "ICC" ]]; then
73-
eval "$(spack load --sh intel-oneapi-compilers)"
74-
eval "$(spack load --sh intel-oneapi-mpi)"
75-
elif [[ "${{ matrix.compiler }}" == "CLANG" ]]; then
76-
eval "$(spack load --sh llvm)"
77-
eval "$(spack load --sh openmpi)"
78-
fi
79-
87+
# Move into the tests directory
8088
cd tests
89+
# Build test suite
8190
make
82-
./runTests
83-
84-
# - name: Run Tests
85-
# run: |
86-
# ./runTests
87-
88-
# - name: Upload Executables
89-
# uses: actions/upload-artifact@v4
90-
# with:
91-
# name: sparseBench-SCS-${{ matrix.compiler }}
92-
# path: |
93-
# ./sparseBench-SCS-${{ matrix.compiler }}
94-
95-
# runTests:
96-
# runs-on: ubuntu-latest
97-
# needs: build
98-
# strategy:
99-
# matrix:
100-
# compiler: [GCC, ICC, CLANG]
101-
102-
# steps:
103-
# - uses: actions/checkout@v4
104-
105-
# - name: Download Executables
106-
# uses: actions/download-artifact@v4
107-
# with:
108-
# name: sparseBench-SCS-${{ matrix.compiler }}
109-
# path: ./executables
110-
111-
# - name: Set up Spack
112-
# uses: spack/setup-spack@v2
113-
# with:
114-
# ref: develop
115-
# buildcache: true
116-
# color: true
117-
# path: spack
118-
119-
# - name: Load Compiler and MPI
120-
# run: |
121-
# . ./spack/share/spack/setup-env.sh
122-
123-
# if [[ "${{ matrix.compiler }}" == "GCC" ]]; then
124-
# eval "$(spack load --sh openmpi)"
125-
# elif [[ "${{ matrix.compiler }}" == "ICC" ]]; then
126-
# eval "$(spack load --sh intel-oneapi-compilers)"
127-
# eval "$(spack load --sh intel-oneapi-mpi)"
128-
# elif [[ "${{ matrix.compiler }}" == "CLANG" ]]; then
129-
# eval "$(spack load --sh llvm)"
130-
# eval "$(spack load --sh openmpi)"
131-
# fi
132-
133-
# - name: Make Tests
134-
# run: |
135-
# cd tests
136-
# make
137-
138-
# - name: Run Tests
139-
# run: |
140-
# ./runTests
91+
# Run the tests
92+
./runTests

0 commit comments

Comments
 (0)