Skip to content

Commit 6ab86d3

Browse files
More work on CI, checking with different versions of ESMF (#742)
1 parent 73df925 commit 6ab86d3

6 files changed

+614
-27
lines changed

.github/workflows/Intel1.yml

+202
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,202 @@
1+
# UFS_UTILS test workflow.
2+
#
3+
# This workflow tests UFS_UTILS with the Intel compiler.
4+
#
5+
# Ed Hartnett 12/14/22
6+
name: Intel1
7+
on:
8+
push:
9+
branches:
10+
- develop
11+
paths-ignore:
12+
- README.md
13+
pull_request:
14+
branches:
15+
- develop
16+
paths-ignore:
17+
- README.md
18+
19+
# Use custom shell with -l so .bash_profile is sourced which loads intel/oneapi/setvars.sh
20+
# without having to do it in manually every step.
21+
defaults:
22+
run:
23+
shell: bash -leo pipefail {0}
24+
25+
jobs:
26+
Intel:
27+
runs-on: ubuntu-latest
28+
env:
29+
CC: icc
30+
FC: ifort
31+
32+
steps:
33+
34+
# See https://software.intel.com/content/www/us/en/develop/articles/oneapi-repo-instructions.html
35+
- name: install-intel
36+
run: |
37+
cd /tmp
38+
wget https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB
39+
sudo apt-key add GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB
40+
rm GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB
41+
echo "deb https://apt.repos.intel.com/oneapi all main" | sudo tee /etc/apt/sources.list.d/oneAPI.list
42+
sudo apt-get update
43+
sudo apt-get install intel-oneapi-dev-utilities intel-oneapi-mpi-devel intel-oneapi-openmp intel-oneapi-compiler-fortran intel-oneapi-compiler-dpcpp-cpp-and-cpp-classic
44+
echo "source /opt/intel/oneapi/setvars.sh" >> ~/.bash_profile
45+
46+
- name: cache-netcdf
47+
id: cache-netcdf
48+
uses: actions/cache@v2
49+
with:
50+
path: ~/netcdf
51+
key: Intel-netcdf-c-$4.7.4-{{ runner.os }}-intel3
52+
53+
- name: build-hdf5
54+
if: steps.cache-netcdf.outputs.cache-hit != 'true'
55+
run: |
56+
export CC=mpiicc
57+
wget https://support.hdfgroup.org/ftp/HDF5/releases/hdf5-1.10/hdf5-1.10.7/src/hdf5-1.10.7.tar.gz &> /dev/null
58+
tar -xzf hdf5-1.10.7.tar.gz
59+
pushd hdf5-1.10.7
60+
./configure --prefix=${HOME}/netcdf --enable-parallel --disable-tools --disable-fortran --disable-cxx --enable-parallel-tests --disable-shared --disable-shared --enable-static
61+
make -j2
62+
make install
63+
64+
- name: build-netcdf-c
65+
if: steps.cache-netcdf.outputs.cache-hit != 'true'
66+
run: |
67+
export CC=mpiicc
68+
export CPPFLAGS=-I${HOME}/netcdf/include
69+
export LDFLAGS=-L${HOME}/netcdf/lib
70+
wget https://github.com/Unidata/netcdf-c/archive/refs/tags/v4.7.4.tar.gz &> /dev/null
71+
tar -xzf v4.7.4.tar.gz
72+
pushd netcdf-c-4.7.4
73+
./configure --prefix=${HOME}/netcdf --disable-dap --disable-utilities --disable-shared
74+
make -j2
75+
make install
76+
77+
- name: build-netcdf-fortran
78+
if: steps.cache-netcdf.outputs.cache-hit != 'true'
79+
run: |
80+
export LD_LIBRARY_PATH="$LD_LIBRARY_PATH:${HOME}/netcdf/lib"
81+
export PATH="${HOME}/netcdf/bin:$PATH"
82+
export CC=mpiicc
83+
export FC=mpiifort
84+
export CPPFLAGS=-I${HOME}/netcdf/include
85+
export LDFLAGS=-L${HOME}/netcdf/lib
86+
export LIBS=`nc-config --libs`
87+
wget https://github.com/Unidata/netcdf-fortran/archive/v4.5.3.tar.gz &> /dev/null
88+
tar -xzf v4.5.3.tar.gz
89+
pushd netcdf-fortran-4.5.3
90+
./configure --prefix=${HOME}/netcdf --disable-shared
91+
make -j2
92+
make install
93+
94+
- name: cache-esmf
95+
id: cache-esmf
96+
uses: actions/cache@v2
97+
with:
98+
path: ~/esmf
99+
key: Intel-esmf-8.2.0-${{ runner.os }}-intel3
100+
101+
- name: build-esmf
102+
if: steps.cache-esmf.outputs.cache-hit != 'true'
103+
run: |
104+
pushd ~
105+
export ESMF_DIR=~/esmf-ESMF_8_2_0
106+
wget https://github.com/esmf-org/esmf/archive/ESMF_8_2_0.tar.gz &> /dev/null
107+
tar zxf ESMF_8_2_0.tar.gz
108+
cd esmf-ESMF_8_2_0
109+
export ESMF_COMM=intelmpi
110+
export ESMF_INSTALL_BINDIR=bin
111+
export ESMF_INSTALL_LIBDIR=lib
112+
export ESMF_INSTALL_MODDIR=mod
113+
export ESMF_COMPILER=intel
114+
export ESMF_INSTALL_PREFIX=~/esmf
115+
export ESMF_NETCDF=split
116+
export ESMF_NETCDF_INCLUDE=${HOME}/netcdf/include
117+
export ESMF_NETCDF_LIBPATH=${HOME}/netcdf/lib
118+
export ESMF_NETCDF_LIBS="-lnetcdff -lnetcdf -lhdf5_hl -lhdf5 -lz"
119+
make -j2
120+
make install
121+
122+
- name: cache-jasper
123+
id: cache-jasper
124+
uses: actions/cache@v2
125+
with:
126+
path: ~/jasper
127+
key: Intel-jasper-2.0.25-${{ runner.os }}-intel3
128+
129+
- name: build-jasper
130+
if: steps.cache-jasper.outputs.cache-hit != 'true'
131+
run: |
132+
wget https://github.com/jasper-software/jasper/archive/version-2.0.25.tar.gz &> /dev/null
133+
tar zxf version-2.0.25.tar.gz
134+
cd jasper-version-2.0.25
135+
mkdir build-jasper && cd build-jasper
136+
cmake .. -DCMAKE_INSTALL_PREFIX=~/jasper -DJAS_ENABLE_SHARED=OFF
137+
make -j2
138+
make install
139+
140+
- name: checkout-nceplibs
141+
uses: actions/checkout@v2
142+
with:
143+
repository: NOAA-EMC/NCEPLIBS
144+
path: nceplibs
145+
146+
- name: cache-nceplibs
147+
id: cache-nceplibs
148+
uses: actions/cache@v2
149+
with:
150+
path: ~/nceplibs
151+
key: Intel-nceplibs-1.4.0-${{ runner.os }}-intel3
152+
153+
- name: build-nceplibs
154+
if: steps.cache-nceplibs.outputs.cache-hit != 'true'
155+
run: |
156+
export ESMFMKFILE=~/esmf/lib/esmf.mk
157+
wget https://github.com/NOAA-EMC/NCEPLIBS/archive/v1.4.0.tar.gz &> /dev/null
158+
tar zxf v1.4.0.tar.gz
159+
cd NCEPLIBS-1.4.0
160+
mkdir build && cd build
161+
cmake .. -DCMAKE_PREFIX_PATH='~;~/jasper;~/netcdf' -DCMAKE_INSTALL_PREFIX='~/nceplibs' -DFLAT=ON
162+
make -j2
163+
164+
- name: checkout-ufs-utils
165+
uses: actions/checkout@v2
166+
with:
167+
path: ufs_utils
168+
submodules: recursive
169+
170+
- name: cache-data
171+
id: cache-data
172+
uses: actions/cache@v2
173+
with:
174+
path: ~/data
175+
key: data-1
176+
177+
- name: build
178+
run: |
179+
export ESMFMKFILE=~/esmf/lib/esmf.mk
180+
cd ufs_utils
181+
mkdir build && cd build
182+
export LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:~/jasper/lib;~/jasper/lib64"
183+
cmake -DTEST_FILE_DIR=/home/runner/data -DCMAKE_PREFIX_PATH='~;~/jasper;~/nceplibs;~/netcdf' ..
184+
make -j2
185+
186+
- name: test
187+
run: |
188+
cd ufs_utils/build
189+
ctest --rerun-failed --output-on-failure
190+
191+
- name: cache-data
192+
if: steps.cache-data.outputs.cache-hit != 'true'
193+
run: |
194+
mkdir ~/data
195+
cp ufs_utils/build/tests/chgres_cube/data/* ~/data
196+
cp ufs_utils/build/tests/sfc_climo_gen/data/* ~/data
197+
cp ufs_utils/build/tests/cpld_gridgen/data/* ~/data
198+
cp ufs_utils/tests/filter_topo/data/* ~/data
199+
cp ufs_utils/tests/emcsfc_snow2mdl/data/* ~/data
200+
cp ufs_utils/tests/chgres_cube/data/* ~/data
201+
ls -l ~/data
202+

.github/workflows/intel.yml .github/workflows/Intel_nceplibs.yml

+3-7
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
name: intel
1+
name: Intel_nceplibs
22
on:
33
push:
44
branches:
@@ -18,15 +18,11 @@ defaults:
1818
shell: bash -leo pipefail {0}
1919

2020
jobs:
21-
intel-build-and-test:
22-
runs-on: ${{ matrix.os }}
21+
Intel_nceplibs:
22+
runs-on: ubuntu-latest
2323
env:
2424
CC: icc
2525
FC: ifort
26-
CXX: icpc
27-
strategy:
28-
matrix:
29-
os: [ubuntu-latest]
3026

3127
steps:
3228

.github/workflows/Linux_versions.yml

+20-12
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ jobs:
3030
strategy:
3131
fail-fast: true
3232
matrix:
33+
esmf_version: [8_2_0, 8.3.0, 8.4.0]
3334
bacio_version: [2.4.1]
3435
g2_version: [3.4.3]
3536
sp_version: [2.3.3]
@@ -46,22 +47,31 @@ jobs:
4647
sudo apt-get update
4748
sudo apt-get install libpng-dev zlib1g-dev libjpeg-dev libmpich-dev
4849
sudo apt-get install libnetcdf-dev libnetcdff-dev netcdf-bin pkg-config
49-
50-
- name: cache-esmf
50+
sudo apt-get install autoconf automake libtool
51+
52+
- name: checkout-esmf
5153
id: cache-esmf
5254
uses: actions/cache@v2
5355
with:
5456
path: ~/esmf
55-
key: Linux_versions-esmf-8.2.0-${{ runner.os }}3
57+
key: Linux_versions-esmf-${{ matrix.esmf_version }}-${{ runner.os }}
5658

5759
- name: build-esmf
5860
if: steps.cache-esmf.outputs.cache-hit != 'true'
5961
run: |
6062
pushd ~
61-
export ESMF_DIR=~/esmf-ESMF_8_2_0
62-
wget https://github.com/esmf-org/esmf/archive/ESMF_8_2_0.tar.gz &> /dev/null
63-
tar zxf ESMF_8_2_0.tar.gz
64-
cd esmf-ESMF_8_2_0
63+
if [[ ${{ matrix.esmf_version }} == "8_2_0" ]]; then
64+
wget https://github.com/esmf-org/esmf/archive/ESMF_${{ matrix.esmf_version }}.tar.gz &> /dev/null
65+
tar zxf ESMF_${{ matrix.esmf_version }}.tar.gz
66+
cd esmf-ESMF_${{ matrix.esmf_version }}
67+
export ESMF_DIR=~/esmf-ESMF_${{ matrix.esmf_version }}
68+
else
69+
wget https://github.com/esmf-org/esmf/archive/refs/tags/v${{ matrix.esmf_version }}.tar.gz &> /dev/null
70+
ls -l
71+
tar zxf v${{ matrix.esmf_version }}.tar.gz
72+
cd esmf-${{ matrix.esmf_version }}
73+
export ESMF_DIR=~/esmf-${{ matrix.esmf_version }}
74+
fi
6575
export ESMF_COMM=mpich3
6676
export ESMF_INSTALL_BINDIR=bin
6777
export ESMF_INSTALL_LIBDIR=lib
@@ -71,6 +81,9 @@ jobs:
7181
export ESMF_NETCDF=split
7282
export ESMF_NETCDF_INCLUDE=/usr/include
7383
export ESMF_NETCDF_LIBPATH=/usr/x86_64-linux-gnu
84+
export ESMF_PIO=OFF
85+
export ESMF_MOAB=OFF
86+
export ESMF_ARRAY_LITE=TRUE
7487
make -j2
7588
make install
7689
@@ -368,8 +381,3 @@ jobs:
368381
cp ufs_utils/tests/emcsfc_snow2mdl/data/* ~/data
369382
cp ufs_utils/tests/chgres_cube/data/* ~/data
370383
ls -l ~/data
371-
372-
373-
374-
375-

0 commit comments

Comments
 (0)