1- name : Continuous Integration 
1+ name : ' Test Suite ' 
22
33on :
44  push :
1010      - ' mfc.sh' 
1111      - ' golden.txt' 
1212      - ' CMakeLists.txt' 
13+       - ' requirements.txt' 
1314
1415  pull_request :
1516
1617  workflow_dispatch :
1718
1819jobs :
1920  github :
20-     name : (GitHub) Test Suite 
21+     name : Github 
2122    strategy :
2223      matrix :
23-         include :
24-           - os :  ubuntu-latest 
25-             debug : --no-debug 
26-             intel : false 
27-           - os :  ubuntu-latest 
28-             debug : --debug 
29-             intel : false 
30- #            - os:  ubuntu-latest
31- #              debug: --no-debug
32- #              intel: true
33- #              intel-command: source /opt/intel/oneapi/setvars.sh
34- #            - os:  ubuntu-latest
35- #              debug: --debug
36- #              intel: true
37- #              intel-command: source /opt/intel/oneapi/setvars.sh
38-           - os :  macos-latest 
39-             debug : --no-debug 
40-             gcc : 11 
41-           - os :  macos-latest 
42-             debug : --debug 
43-             gcc : 11 
24+         os :    ['ubuntu', 'macos'] 
25+         mpi :   ['mpi', 'no-mpi'] 
26+         debug : ['debug', 'no-debug'] 
27+         intel : [false] 
4428      fail-fast : false 
4529    continue-on-error : true 
46-     runs-on : ${{ matrix.os }} 
30+     runs-on : ${{ matrix.os }}-latest  
4731    steps :
4832      - name : Clone 
4933        uses : actions/checkout@v3 
5034
5135      - name : Setup MacOS 
52-         if :   matrix.os == 'macos-latest ' 
36+         if :   matrix.os == 'macos' 
5337        run : | 
54-           echo "OMPI_FC=gfortran-${{ matrix.gcc }}" >> $GITHUB_ENV 
55-           echo "OMPI_CXX=g++-${{ matrix.gcc }}"     >> $GITHUB_ENV 
56-           echo "OMPI_MPICC=gcc-${{ matrix.gcc }}"   >> $GITHUB_ENV 
57-           echo "CC=gcc-${{ matrix.gcc }}"           >> $GITHUB_ENV 
58-           echo "CXX=g++-${{ matrix.gcc }}"          >> $GITHUB_ENV 
59-           echo "FC=gfortran-${{ matrix.gcc }}"      >> $GITHUB_ENV 
60-           brew install wget make python make cmake coreutils gcc@${{ matrix.gcc }} 
61-           HOMEBREW_MAKE_JOBS=$(nproc) brew install --cc=gcc-${{ matrix.gcc }} --verbose --build-from-source open-mpi 
38+           echo "CC=gcc-13"      >> $GITHUB_ENV 
39+           echo "CXX=g++-13"     >> $GITHUB_ENV 
40+           echo "FC=gfortran-13" >> $GITHUB_ENV 
41+           brew install wget make python make cmake coreutils gcc@13 
42+            
43+        - name : (MacOS) Build OpenMPI 
44+         if :   matrix.os == 'macos' && matrix.mpi == 'mpi' 
45+         run : | 
46+           echo "OMPI_FC=gfortran-13" >> $GITHUB_ENV 
47+           echo "OMPI_CXX=g++-13"     >> $GITHUB_ENV 
48+           echo "OMPI_MPICC=gcc-13"   >> $GITHUB_ENV 
49+           HOMEBREW_MAKE_JOBS=$(nproc) brew install --cc=gcc-13 --verbose --build-from-source open-mpi 
6250
6351       - name : Setup Ubuntu 
64-         if :   matrix.os == 'ubuntu-latest ' && matrix.intel == false 
52+         if :   matrix.os == 'ubuntu' && matrix.intel == false 
6553        run :  sudo apt install tar wget make cmake gcc g++ python3 python3-dev "openmpi-*" libopenmpi-dev 
6654
6755      - name : Setup Ubuntu (Intel) 
68-         if :   matrix.os == 'ubuntu-latest ' && matrix.intel == true 
56+         if :   matrix.os == 'ubuntu' && matrix.intel == true 
6957        run : | 
7058          sudo apt install tar wget make cmake python3 python3-dev 
7159          wget https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB 
@@ -84,211 +72,48 @@ jobs:
8472          echo "MPI_HOME=/opt/intel/oneapi/mpi/2021.7.1/"    >> $GITHUB_ENV 
8573
8674       - name : Build 
87-         run : | 
88-           ${{ matrix.intel-command }} 
89-           /bin/bash mfc.sh build -j $(nproc) ${{ matrix.debug }} 
75+         run :  /bin/bash mfc.sh build -j $(nproc) --${{ matrix.debug }} --${{ matrix.mpi }} 
9076
91-        - name : Test Suite (Debug) 
92-         if : matrix.debug == '--debug' 
93-         run : | 
94-           ${{ matrix.intel-command }} 
95-           /bin/bash mfc.sh test  -j $(nproc) --debug 
96- 
97-        - name : Test Suite (No Debug) 
98-         if : matrix.debug == '--no-debug' 
99-         run : | 
100-           ${{ matrix.intel-command }} 
101-           /bin/bash mfc.sh test -j $(nproc) -a 
102-            
77+       - name : Test 
78+         run :  /bin/bash mfc.sh test -j $(nproc) $(if [ "${{ matrix.mpi }}" == "mpi" ]; then echo "--test-all"; fi) 
10379
104-    self-cpu-release :
105-     name : Test CPU release - nvhpc 
106-     runs-on :
107-       group : phoenix 
108-       labels : self-hosted 
109-     if : github.repository == 'MFlowCode/MFC' 
110-     continue-on-error : true 
80+   docker :
81+     name :    Github | Docker 
82+     runs-on : ubuntu-latest 
11183    steps :
112-        - name : Clone 
113-          uses : actions/checkout@v3 
84+     - name : Clone 
85+       uses : actions/checkout@v3 
11486
115-       - name : Build 
116-         run :  | 
117-           . ./mfc.sh load -c p -m g 
118-           ./mfc.sh build -j 2 
87+     - name : Test 
88+       run :  sudo ./mfc.sh docker ./mfc.sh test -j $(nproc) -a 
11989
120-        - name : Test 
121-         run : | 
122-           . ./mfc.sh load -c p -m g 
123-           mv misc/run-phoenix-release-cpu.sh ./ 
124-           sbatch run-phoenix-release-cpu.sh 
125- 
126-        - name : Print 
127-         if : always() 
128-         run : | 
129-           cat test.out 
130- 
131-    self-gpu-release :
132-     name : Test GPU release - nvhpc 
133-     runs-on :
134-       group : phoenix 
135-       labels : self-hosted 
90+   self :
91+     name : Georgia Tech | Phoenix (NVHPC) 
13692    if : github.repository == 'MFlowCode/MFC' 
13793    continue-on-error : true 
94+     strategy :
95+       matrix :
96+         device : ['cpu', 'gpu'] 
97+     runs-on :
98+       group :  phoenix 
99+       labels : self-hosted 
138100    steps :
139101      - name : Clone 
140102        uses : actions/checkout@v3 
141103
142104      - name : Build 
143105        run :  | 
144-           . ./mfc.sh load -c p -m g  
145-           ./mfc.sh build -j 2 --gpu 
106+           . ./mfc.sh load -c p -m gpu  
107+           ./mfc.sh build -j 2 $(if [ '${{ matrix.device }}' == 'gpu' ]; then echo ' --gpu'; fi)  
146108
147109       - name : Test 
148110        run : | 
149-           . ./mfc.sh load -c p -m g  
150-           mv misc/run-phoenix-release-gpu .sh ./ 
151-           sbatch run-phoenix-release-gpu .sh 
111+           . ./mfc.sh load -c p -m gpu  
112+           mv misc/run-phoenix-release-${{ matrix.device }} .sh ./ 
113+           sbatch run-phoenix-release-${{ matrix.device }} .sh 
152114
153115       - name : Print 
154116        if : always() 
155117        run : | 
156118          cat test.out 
157119
158- 
159-    #  self-cpu:
160-   #    name: (Self) Test Suite - CPU
161-   #    strategy:
162-   #      matrix:
163-   #        include:
164-   #          - os: [self-hosted, wingtip]
165-   #    runs-on: ${{ matrix.os }}
166-   #    if: github.repository == 'MFlowCode/MFC'
167-   #    steps:
168-   #      - name: Clone
169-   #        uses: actions/checkout@v3
170-           
171-   #      - name: Setup
172-   #        run:  echo "test"
173-         
174-   #      - name: Build
175-   #        run:  |
176-   #          module use /opt/nvidia/hpc_sdk/modulefiles/
177-   #          module load nvhpc
178-   #          /bin/bash mfc.sh build -j 8 
179- 
180-   #      - name: Test Suite
181-   #        run:  |
182-   #          module use /opt/nvidia/hpc_sdk/modulefiles/
183-   #          module load nvhpc
184-   #          /bin/bash mfc.sh test -j 8 -a 
185-           
186-   #  self-cpu-debug:
187-   #    name: (Self) Test Suite - CPU - debug
188-   #    strategy:
189-   #      matrix:
190-   #        include:
191-   #          - os: [self-hosted, wingtip]
192-   #    runs-on: ${{ matrix.os }}
193-   #    if: github.repository == 'MFlowCode/MFC'
194-   #    steps:
195-   #      - name: Clone
196-   #        uses: actions/checkout@v3
197-           
198-   #      - name: Setup
199-   #        run:  echo "test"
200-         
201-   #      - name: Build
202-   #        run:  |
203-   #          module use /opt/nvidia/hpc_sdk/modulefiles/
204-   #          module load nvhpc
205-   #          /bin/bash mfc.sh build -j 8 --debug
206- 
207-   #      - name: Test Suite
208-   #        run:  |
209-   #          module use /opt/nvidia/hpc_sdk/modulefiles/
210-   #          module load nvhpc
211-   #          /bin/bash mfc.sh test -j 8 --debug
212- 
213-   #  self-gpu:
214-   #    name: (Self) Test Suite - GPU
215-   #    strategy:
216-   #      matrix:
217-   #        include:
218-   #          - os: [self-hosted, wingtip]
219-   #    runs-on: ${{ matrix.os }}
220-   #    if: github.repository == 'MFlowCode/MFC'
221-   #    steps:
222-   #      - name: Clone
223-   #        uses: actions/checkout@v3
224-           
225-   #      - name: Setup
226-   #        run:  echo "test"
227-         
228-   #      - name: Build
229-   #        run:  |
230-   #          module use /opt/nvidia/hpc_sdk/modulefiles/
231-   #          module load nvhpc
232-   #          /bin/bash mfc.sh build -j 8 --gpu 
233- 
234-   #      - name: Test Suite
235-   #        run:  |
236-   #          module use /opt/nvidia/hpc_sdk/modulefiles/
237-   #          module load nvhpc
238-   #          /bin/bash mfc.sh test -j 8 -b mpirun --gpu -a
239- 
240- #    self-gpu-debug:
241- #      name: (Self) Test Suite - GPU - debug
242- #      strategy:
243- #        matrix:
244- #          include:
245- #            - os: [self-hosted, wingtip]
246- #      runs-on: ${{ matrix.os }}
247- #      if: github.repository == 'MFlowCode/MFC'
248- #      steps:
249- #        - name: Clone
250- #          uses: actions/checkout@v3
251-           
252- #        - name: Setup
253- #          run:  echo "test"
254-         
255- #        - name: Build
256- #          run:  |
257- #            module use /opt/nvidia/hpc_sdk/modulefiles/
258- #            module load nvhpc
259- #            /bin/bash mfc.sh build -j 8 --gpu --debug
260- 
261- #        - name: Test Suite
262- #          run:  |
263- #            module use /opt/nvidia/hpc_sdk/modulefiles/
264- #            module load nvhpc
265- #            /bin/bash mfc.sh test -j 8 -b mpirun --gpu --debug
266- 
267- #    ice-gpu:
268- #      name: (COC-ICE) Test Suite - GPU
269- #      strategy:
270- #        matrix:
271- #          include:
272- #            - os: [self-hosted, cocice]
273- #      runs-on: ${{ matrix.os }}
274- #      if: github.repository == 'MFlowCode/MFC'
275- #      steps:
276- #        - name: Clone
277- #          uses: actions/checkout@v3
278-           
279- #        - name: Setup
280- #          run:  echo "test"
281-         
282- #        - name: Build
283- #          run:  |
284- #            module purge
285- #            module load nvhpc
286- #            /usr/bin/bash mfc.sh build -j 4 --gpu
287- 
288- #        - name: Test Suite
289- #          run:  |
290- #            qsub -I -q coc-ice-gpu -l nodes=1:ppn=8:gpus=2:teslav100
291- #            module purge
292- #            module load nvhpc
293- #            /usr/bin/bash mfc.sh test -j 4 -b mpirun --gpu -a
294- #            exit
0 commit comments