-
Notifications
You must be signed in to change notification settings - Fork 49
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Continuous Integration with Nvidia compiler #435
Closed
Closed
Changes from all commits
Commits
Show all changes
127 commits
Select commit
Hold shift + click to select a range
8107c70
Foundatio for Nvidia CI script
dustinswales 271710b
Update CI
dustinswales 2321196
Update CI
dustinswales 0bfbe99
Update CI
dustinswales c651163
Update CI
dustinswales 915bd81
Update CI
dustinswales 6aba5e8
Update CI
dustinswales 4ec0f3d
Update CI
dustinswales 3474475
Update CI
dustinswales 2065f86
Update CI
dustinswales abf0755
Update CI
dustinswales 53260ae
Update CI
dustinswales 09bad92
Update CI
dustinswales 95fac48
Update CI
dustinswales 79a3e84
Update CI
dustinswales 4e242d6
Update CI
dustinswales 0621092
Update CI
dustinswales 0913488
Update CI
dustinswales e3ef930
Update CI
dustinswales 27c6225
Update CI
dustinswales 9eeb2cc
Update CI
dustinswales ab09969
Update CI
dustinswales 29d6e4e
Update CI
dustinswales 17f0e73
Update CI
dustinswales 4ca35b2
Update CI
dustinswales 69d0945
Update CI
dustinswales 66c067f
Update CI
dustinswales 584ae01
Update CI
dustinswales 98eaa8a
Update CI
dustinswales e95f704
Update CI
dustinswales 62a4ca6
Update CI
dustinswales 78365ad
Update CI
dustinswales 7cf9e40
Update CI
dustinswales eb53bde
Update CI
dustinswales 55921f7
Update CI
dustinswales cf076f9
Update CI
dustinswales 1ef18b3
Update CI
dustinswales 20e4948
Update CI
dustinswales 629908e
Update CI
dustinswales 31cae53
Update CI
dustinswales 880165d
Update CI
dustinswales 3fc5f81
Update CI
dustinswales 2194f2e
Update CI
dustinswales 3bd3796
Update CI
dustinswales 7d9c4af
Update CI
dustinswales 19081c6
Update CI
dustinswales 45b76c4
Update CI
dustinswales 0d8c9e4
Update CI
dustinswales 3365312
Update CI
dustinswales 8ded5a0
Update CI
dustinswales d06dd31
Update CI
dustinswales 52a22f2
Update CI
dustinswales fe42708
Update CI
dustinswales a6955ab
Update CI
dustinswales c94ba5a
Update CMakeLists for Nvidia support
dustinswales 7ff6081
Update CMakeLists for Nvidia support
dustinswales b448eb4
Update CI
dustinswales b268880
Update CI
dustinswales f18a65a
Update CI
dustinswales af05846
Update CI
dustinswales 47f0a6c
Updated CI
dustinswales d2c04ed
Update cmakelists
dustinswales 90b7fea
Update CI
dustinswales ddb3591
Update CI
dustinswales 7ef27e8
Update CI
dustinswales dbc4334
Update CI
a38f5c0
Update CI
3f79dea
Update CI
0089031
Update CI
8031de3
Update CI
789711c
Update CI
28267f8
Update CI
1574900
Update CI
923fa46
Update CI
9768b94
Update CI
e93fb03
Update CI
74428b9
Update CI
2f6c166
Update CI
5e97c33
Update CI
9286df0
Update CI
fa714f4
Update CI
de7cde1
Update CI
22f18fc
Update CI
990e36b
Update CI
bf45ad5
Update CI
f6673e7
Update CI
8f57ff0
Update CI
407280d
Update CI
3d10750
Update CI
cf8830f
Update CI
bb798ac
Update CI
398a292
Update CI
6bc8277
Update CI
24e091e
Update CI
b1ce93c
Update CI
9df5652
Update CI
fb7f34f
Update CI
af52b76
Update CI
035a765
Update CI
d7a6bff
Update CI
fbf5856
Update CI
897cfca
Update CI
3eab670
Update CI
f030d72
Update CI
442f354
Update CI
b901cd4
Update CI
7970fdc
Update CI
09928ca
Update CI
dustinswales 5a46115
Add file for Nvidia RTS
dustinswales f89b1d6
Update CI
dustinswales 51b7baa
Update CI
dustinswales d712d56
Revert change to CMakeLists
dustinswales 0b2ee57
Revert change to CMakeLists
dustinswales 16c7938
Revert change to CMakeLists
dustinswales 9fe09eb
Revert change to CMakeLists
dustinswales 659d780
Update CI
dustinswales 229473c
Update CI
dustinswales ba034f4
Update CI
dustinswales 59b73cd
Update CI
dustinswales c12544c
Update CI
dustinswales f82f995
Update CI
dustinswales 8d6a1b5
Update CI
dustinswales 9521536
Update CI
dustinswales 999d6cb
Update CI
dustinswales 4d71d1e
Update CI
dustinswales 208bed3
Update CI
dustinswales 7e58c6d
Update CI
dustinswales File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,264 @@ | ||
name: CI test to build the CCPP-SCM on ubuntu v22.04 | ||
|
||
on: [push,pull_request,workflow_dispatch] | ||
|
||
jobs: | ||
|
||
build_scm: | ||
# The type of runner that the job will run on | ||
runs-on: ubuntu-22.04 | ||
strategy: | ||
matrix: | ||
fortran-compiler: [nvfortran] | ||
build-type: [Release]#, Debug] | ||
enable-gpu-acc: [False, True] | ||
py-version: [3.7.13, 3.9.12] | ||
|
||
# Environmental variables | ||
env: | ||
NETCDF: /home/runner/netcdf | ||
bacio_ROOT: /home/runner/bacio | ||
sp_ROOT: /home/runner/NCEPLIBS-sp | ||
w3emc_ROOT: /home/runner/myw3emc | ||
SCM_ROOT: /home/runner/work/ccpp-scm/ccpp-scm | ||
zlib_ROOT: /home/runner/zlib | ||
HDF5_ROOT: /home/runner/hdf5 | ||
suites: SCM_GFS_v15p2,SCM_GFS_v16,SCM_GFS_v17_p8,SCM_HRRR,SCM_RRFS_v1beta,SCM_RAP,SCM_WoFS_v0 | ||
suites_ps: SCM_GFS_v15p2_ps,SCM_GFS_v16_ps,SCM_GFS_v17_p8_ps,SCM_HRRR_ps,SCM_RRFS_v1beta_ps,SCM_RAP_ps,SCM_WoFS_v0_ps | ||
|
||
# Workflow steps | ||
steps: | ||
|
||
####################################################################################### | ||
# Cleanup space | ||
####################################################################################### | ||
- name: Check space (pre) | ||
run: | | ||
df -h | ||
|
||
- name: Free Disk Space (Ubuntu) | ||
uses: jlumbroso/free-disk-space@main | ||
with: | ||
# this might remove tools that are actually needed, | ||
# if set to "true" but frees about 6 GB | ||
tool-cache: false | ||
|
||
# all of these default to true, but feel free to set to | ||
# "false" if necessary for your workflow | ||
android: false | ||
dotnet: false | ||
haskell: true | ||
large-packages: true | ||
docker-images: false | ||
swap-storage: false | ||
|
||
- name: Check space (post) | ||
run: | | ||
df -h | ||
|
||
####################################################################################### | ||
# Initial | ||
####################################################################################### | ||
- name: Checkout SCM code (into /home/runner/work/ccpp-scm/) | ||
uses: actions/checkout@v3 | ||
|
||
- name: Initialize submodules | ||
run: git submodule update --init --recursive | ||
|
||
####################################################################################### | ||
# Python setup | ||
####################################################################################### | ||
- name: Set up Python | ||
uses: actions/setup-python@v3 | ||
with: | ||
python-version: ${{matrix.py-version}} | ||
|
||
- name: Add conda to system path | ||
run: | | ||
echo $CONDA/bin >> $GITHUB_PATH | ||
|
||
- name: Install NetCDF Python libraries | ||
run: | | ||
conda install --yes -c conda-forge h5py>=3.4 netCDF4 f90nml | ||
|
||
####################################################################################### | ||
# Install Nvidia. | ||
####################################################################################### | ||
|
||
- name: Nvidia setup compilers. | ||
env: | ||
NVCOMPILERS: /home/runner/hpc_sdk | ||
NVARCH: Linux_x86_64 | ||
NVHPC_SILENT: true | ||
NVHPC_INSTALL_DIR: /home/runner/hpc_sdk | ||
NVHPC_INSTALL_TYPE: network | ||
NVHPC_INSTALL_LOCAL_DIR: /home/runner/hpc_sdk | ||
run: | | ||
mkdir /home/runner/hpc_sdk && cd /home/runner/hpc_sdk | ||
wget -q https://developer.download.nvidia.com/hpc-sdk/24.1/nvhpc_2024_241_Linux_x86_64_cuda_12.3.tar.gz | ||
tar xpzf nvhpc_2024_241_Linux_x86_64_cuda_12.3.tar.gz | ||
nvhpc_2024_241_Linux_x86_64_cuda_12.3/install | ||
export PATH=${PATH}:${NVCOMPILERS}/${NVARCH}/24.1/compilers/bin | ||
export MANPATH=${MANPATH}:${NVCOMPILERS}/${NVARCH}/24.1/compilers/man | ||
echo "The nvfortran installed is:" | ||
nvfortran --version | ||
echo "The path to nvfortran is:" | ||
command -v nvfortran | ||
echo "Removing tarball" | ||
rm nvhpc_2024_241_Linux_x86_64_cuda_12.3.tar.gz | ||
|
||
- name: Set environment for Nvidia compiler. | ||
run: | | ||
echo "CC=/home/runner/hpc_sdk/Linux_x86_64/24.1/compilers/bin/nvc" >> $GITHUB_ENV | ||
echo "FC=/home/runner/hpc_sdk/Linux_x86_64/24.1/compilers/bin/nvfortran" >> $GITHUB_ENV | ||
echo "CMAKE_C_COMPILER=/home/runner/hpc_sdk/Linux_x86_64/24.1/compilers/bin/nvc" >> $GITHUB_ENV | ||
echo "CMAKE_Fortran_COMPILER=/home/runner/hpc_sdk/Linux_x86_64/24.1/compilers/bin/nvfortran" >> $GITHUB_ENV | ||
|
||
####################################################################################### | ||
# Install FORTRAN dependencies | ||
####################################################################################### | ||
|
||
- name: Install zlib | ||
env: | ||
CFLAGS: -fPIC | ||
run: | | ||
wget https://github.com/madler/zlib/releases/download/v1.2.13/zlib-1.2.13.tar.gz | ||
tar -zxvf zlib-1.2.13.tar.gz | ||
cd zlib-1.2.13 | ||
./configure --prefix=${zlib_ROOT} | ||
make | ||
make install | ||
echo "LD_LIBRARY_PATH=$zlib_ROOT/lib:$LD_LIBRARY_PATH" >> $GITHUB_ENV | ||
|
||
- name: Install HDF5 | ||
env: | ||
CPPFLAGS: -I${zlib_ROOT}/include | ||
LDFLAGS: -L${zlib_ROOT}/lib | ||
run: | | ||
wget https://github.com/HDFGroup/hdf5/archive/refs/tags/hdf5-1_14_1-2.tar.gz | ||
tar -zxvf hdf5-1_14_1-2.tar.gz | ||
cd hdf5-hdf5-1_14_1-2 | ||
./configure --prefix=${HDF5_ROOT} --with-zlib=${zlib_ROOT} | ||
make -j4 | ||
make install | ||
echo "LD_LIBRARY_PATH=$HDF5_ROOT/lib:$LD_LIBRARY_PATH" >> $GITHUB_ENV | ||
echo "PATH=$HDF5_ROOT/lib:$PATH" >> $GITHUB_ENV | ||
|
||
- name: Install Curl | ||
run: | | ||
sudo apt-get install curl | ||
sudo apt-get install libssl-dev libcurl4-openssl-dev | ||
|
||
- name: Cache NetCDF C library | ||
id: cache-netcdf-c | ||
uses: actions/cache@v3 | ||
with: | ||
path: /home/runner/netcdf-c | ||
key: cache-netcdf-c-${{matrix.fortran-compiler}}-key | ||
|
||
- name: Install NetCDF C library | ||
if: steps.cache-netcdf-c.outputs.cache-hit != 'true' | ||
run: | | ||
wget https://github.com/Unidata/netcdf-c/archive/refs/tags/v4.7.4.tar.gz | ||
tar -zvxf v4.7.4.tar.gz | ||
cd netcdf-c-4.7.4 | ||
CPPFLAGS="-I/home/runner/hdf5/include -I/home/runner/zlib/include" LDFLAGS="-L/home/runner/hdf5/lib -L/home/runner/zlib/lib" ./configure --prefix=${NETCDF} | ||
make | ||
make install | ||
echo "LD_LIBRARY_PATH=$NETCDF/lib:$LD_LIBRARY_PATH" >> $GITHUB_ENV | ||
echo "PATH=$NETCDF/lib:$PATH" >> $GITHUB_ENV | ||
|
||
- name: Cache NetCDF Fortran library | ||
id: cache-netcdf-fortran | ||
uses: actions/cache@v3 | ||
with: | ||
path: /home/runner/netcdf-fortran | ||
key: cache-netcdf-fortran-${{matrix.fortran-compiler}}-key | ||
|
||
- name: Install NetCDF Fortran library | ||
if: steps.cache-netcdf-fortran.outputs.cache-hit != 'true' | ||
run: | | ||
wget https://github.com/Unidata/netcdf-fortran/archive/refs/tags/v4.6.1.tar.gz | ||
tar -zvxf v4.6.1.tar.gz | ||
cd netcdf-fortran-4.6.1 | ||
FCFLAGS="-fPIC" FFLAGS="-fPIC" CPPFLAGS="-I/home/runner/hdf5/include -I/home/runner/zlib/include -I/home/runner/netcdf/include" LDFLAGS="-L/home/runner/hdf5/lib -L/home/runner/zlib/lib -L/home/runner/netcdf/lib" ./configure --prefix=${NETCDF} | ||
make | ||
make install | ||
|
||
- name: Cache bacio library v2.4.1 | ||
id: cache-bacio-fortran | ||
uses: actions/cache@v3 | ||
with: | ||
path: /home/runner/bacio | ||
key: cache-bacio-fortran-${{matrix.fortran-compiler}}-key | ||
|
||
- name: Install bacio library v2.4.1 | ||
if: steps.cache-bacio-fortran.outputs.cache-hit != 'true' | ||
run: | | ||
git clone --branch v2.4.1 https://github.com/NOAA-EMC/NCEPLIBS-bacio.git bacio | ||
cd bacio && mkdir build && cd build | ||
cmake -DCMAKE_INSTALL_PREFIX=${bacio_ROOT} ../ | ||
make -j2 | ||
make install | ||
echo "bacio_DIR=/home/runner/bacio/lib/cmake/bacio" >> $GITHUB_ENV | ||
|
||
- name: Cache SP-library v2.3.3 | ||
id: cache-sp-fortran | ||
uses: actions/cache@v3 | ||
with: | ||
path: /home/runner/NCEPLIBS-sp | ||
key: cache-sp-fortran-${{matrix.fortran-compiler}}-key | ||
|
||
- name: Install SP-library v2.3.3 | ||
if: steps.cache-sp-fortran.outputs.cache-hit != 'true' | ||
run: | | ||
git clone --branch v2.3.3 https://github.com/NOAA-EMC/NCEPLIBS-sp.git NCEPLIBS-sp | ||
cd NCEPLIBS-sp && mkdir build && cd build | ||
cmake -DCMAKE_INSTALL_PREFIX=${sp_ROOT} ../ | ||
make -j2 | ||
make install | ||
echo "sp_DIR=/home/runner/NCEPLIBS-sp/lib/cmake/sp" >> $GITHUB_ENV | ||
|
||
- name: Cache w3emc library v2.9.2 | ||
id: cache-w3emc-fortran | ||
uses: actions/cache@v3 | ||
with: | ||
path: /home/runner/myw3emc | ||
key: cache-w3emc-fortran-${{matrix.fortran-compiler}}-key | ||
|
||
- name: Install w3emc library v2.9.2 | ||
if: steps.cache-w3emc-fortran.outputs.cache-hit != 'true' | ||
run: | | ||
git clone --branch v2.9.2 https://github.com/NOAA-EMC/NCEPLIBS-w3emc.git NCEPLIBS-w3emc | ||
cd NCEPLIBS-w3emc && mkdir build && cd build | ||
cmake -DCMAKE_INSTALL_PREFIX=${w3emc_ROOT} ../ | ||
make -j2 | ||
make install | ||
echo "w3emc_DIR=/home/runner/myw3emc/lib/cmake/w3emc" >> $GITHUB_ENV | ||
|
||
####################################################################################### | ||
# Build and run SCM regression tests (ccpp-scm/test/rt_test_cases.py) | ||
####################################################################################### | ||
|
||
- name: Configure build with CMake | ||
run: | | ||
cd ${SCM_ROOT}/scm | ||
mkdir bin && cd bin | ||
cmake -DCCPP_SUITES=${suites},${suites_ps} -DCMAKE_BUILD_TYPE=${{matrix.build-type}} -DENABLE_NVIDIA_OPENACC=${{matrix.enable-gpu-acc}} ../src | ||
|
||
- name: Build SCM. | ||
run: | | ||
cd ${SCM_ROOT}/scm/bin | ||
make -j4 | ||
|
||
- name: Download data for SCM | ||
run: | | ||
cd ${SCM_ROOT} | ||
./contrib/get_all_static_data.sh | ||
./contrib/get_thompson_tables.sh | ||
|
||
- name: Run SCM RTs (w/o GPU) | ||
if: contains(matrix.enable-gpu-acc, 'False') | ||
run: | | ||
cd ${SCM_ROOT}/scm/bin | ||
./run_scm.py --file /home/runner/work/ccpp-scm/ccpp-scm/test/rt_test_cases.py --runtime_mult 0.1 -v | ||
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,9 @@ | ||
run_list = [\ | ||
#---------------------------------------------------------------------------------------------------------------------------------------------- | ||
# CCPP-SCM v6 supported suites | ||
#---------------------------------------------------------------------------------------------------------------------------------------------- | ||
{"case": "arm_sgp_summer_1997_A", "suite": "SCM_RAP"}, \ | ||
{"case": "twpice", "suite": "SCM_RAP"}, \ | ||
{"case": "bomex", "suite": "SCM_RAP"}, \ | ||
{"case": "astex", "suite": "SCM_RAP"}, \ | ||
{"case": "LASSO_2016051812", "suite": "SCM_RAP"}] |
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@grantfirl @mkavulich @scrasmussen
This is incomplete, it only runs the RTs, it doesn't download baselines and compare them. We should add these steps in and store a copy of the Nvidia Baselines on the DTC FTP server, analogous to the GNU based ones we have there.
So instead of rt-baselines-Release.zip and rt-baselines-Debug.zip on the DTC FTP server we will have:
rt-baselines-Debug.GNU.zip, rt-baselines-Release.GNU.zip, rt-baselines-Debug.NVHPC.zip, rt-baselines-Release.NVHPC.zip.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Sorry, no rt-baselines-Debug.NVHPC.zip, this test is off because it fails due to a naming conflict (mersenne_twister).