67
67
wget
68
68
unzip
69
69
curl
70
+ hdf5
70
71
71
72
- name : (Windows) Setup VS Build environment
72
73
if : contains(matrix.os,'windows') && contains(matrix.mpi,'intel')
@@ -93,12 +94,12 @@ jobs:
93
94
- name : (Ubuntu) Install OpenMPI
94
95
if : contains(matrix.os,'ubuntu') && contains(matrix.mpi,'openmpi')
95
96
run : |
96
- sudo apt install -y -q openmpi-bin libopenmpi-dev
97
+ sudo apt install -y -q openmpi-bin libopenmpi-dev hwloc fabric libhdf5-dev libhdf5-fortran-102
97
98
98
99
- name : (Ubuntu) Install MPICH
99
100
if : contains(matrix.os,'ubuntu') && contains(matrix.mpi,'mpich')
100
101
run : |
101
- sudo apt install -y -q mpich
102
+ sudo apt install -y -q mpich hwloc fabric libhdf5-dev libhdf5-fortran-102
102
103
103
104
- name : (Ubuntu) Retrieve Intel toolchain
104
105
if : contains(matrix.os,'ubuntu') && contains(matrix.mpi,'intel')
@@ -110,14 +111,27 @@ jobs:
110
111
111
112
- name : (Ubuntu) Install Intel oneAPI
112
113
if : contains(matrix.os,'ubuntu') && contains(matrix.mpi,'intel')
113
- timeout-minutes : 15
114
- run : sudo apt-get install intel-oneapi-compiler-dpcpp-cpp-2023.1.0 intel-oneapi-compiler-fortran-2023.1.0 intel-oneapi-mpi-devel ninja-build
114
+ uses :
fortran-lang/[email protected]
115
+ id : setup-fortran
116
+ with :
117
+ compiler : intel
118
+ version : 2024.1.0
115
119
116
- - name : (Ubuntu) Setup Intel oneAPI environment
120
+ - name : (Ubuntu) finalize oneAPI environment
117
121
if : contains(matrix.os,'ubuntu') && contains(matrix.mpi,'intel')
118
122
run : |
119
- source /opt/intel/oneapi/setvars.sh
120
- printenv >> $GITHUB_ENV
123
+ # Install MPI
124
+ sudo apt-get install -y -q intel-oneapi-mpi-devel ninja-build cmake
125
+ source /opt/intel/oneapi/setvars.sh --force
126
+ printenv >> $GITHUB_ENV
127
+ # To run HDF5 with oneAPI, we need to build it from source. Use CMake to generate pkg-config info
128
+ curl -O -L https://github.com/HDFGroup/hdf5/archive/refs/tags/snapshot-1.14.tar.gz
129
+ tar zxf snapshot-1.14.tar.gz
130
+ cd hdf5-snapshot-1.14
131
+ cmake -B build -DCMAKE_Fortran_COMPILER=ifx -DCMAKE_C_COMPILER=icx -DCMAKE_CXX_COMPILER=icpx -DHDF5_BUILD_FORTRAN=ON -DCMAKE_INSTALL_PREFIX=/usr
132
+ cd build
133
+ make -j
134
+ sudo make install
121
135
122
136
- name : (Windows) Put MSYS2_MinGW64 on PATH
123
137
if : contains(matrix.os,'windows') && (!contains(matrix.mpi,'intel'))
@@ -197,6 +211,11 @@ jobs:
197
211
run : |
198
212
brew install openmpi #--cc=gcc-${{ env.GCC_V }} openmpi
199
213
214
+ - name : (macOS) Install homebrew HDF5
215
+ if : contains(matrix.os,'macos')
216
+ run : |
217
+ brew install hdf5
218
+
200
219
# Phase 1: Bootstrap fpm with existing version
201
220
- name : Install fpm
202
221
uses : fortran-lang/setup-fpm@v5
@@ -209,8 +228,8 @@ jobs:
209
228
mv $(which fpm) fpm-bootstrap${{ matrix.exe }}
210
229
echo "BOOTSTRAP=$PWD/fpm-bootstrap" >> $GITHUB_ENV
211
230
212
- - name : (macOS) Use gcc/g++ instead of Clang for C/C++
213
- if : contains(matrix.os,'macOS')
231
+ - name : (macOS/Ubuntu ) Use gcc/g++ instead of Clang for C/C++ / ifx to build fpm
232
+ if : contains(matrix.os,'macOS') || contains(matrix.os,'ubuntu')
214
233
shell : bash
215
234
run : |
216
235
echo "FPM_FC=gfortran-${{ env.GCC_V }}" >> $GITHUB_ENV
0 commit comments