Skip to content

Add IntelLLVM support #255

Add IntelLLVM support

Add IntelLLVM support #255

Workflow file for this run

# This is a GitHub actions workflow for the NCEPLIBS-grib_util project.
#
# This workflow builds with the intel compiler.
#
# Ed Hartnett 1/19/23
name: Intel
on:
push:
branches:
- develop
pull_request:
branches:
- develop
# Use custom shell with -l so .bash_profile is sourced which loads intel/oneapi/setvars.sh
# without having to do it in manually every step
defaults:
run:
shell: bash -leo pipefail {0}
jobs:
Intel:
runs-on: ubuntu-latest
strategy:
matrix:
compilers: ["CC=icc FC=ifort", "CC=icx FC=ifx"]
steps:
# See https://software.intel.com/content/www/us/en/develop/articles/oneapi-repo-instructions.html
- name: install-intel
run: |
cd /tmp
wget https://apt.repos.intel.com/intel-gpg-keys/GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB
sudo apt-key add GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB
rm GPG-PUB-KEY-INTEL-SW-PRODUCTS.PUB
echo "deb https://apt.repos.intel.com/oneapi all main" | sudo tee /etc/apt/sources.list.d/oneAPI.list
sudo apt-get update
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
echo "source /opt/intel/oneapi/setvars.sh" >> ~/.bash_profile
- name: cache-jasper
id: cache-jasper
uses: actions/cache@v2
with:
path: ~/jasper
key: jasper-Intel-${{ matrix.compilers }}-2.0.33
- name: checkout-jasper
if: steps.cache-jasper.outputs.cache-hit != 'true'
uses: actions/checkout@v2
with:
repository: jasper-software/jasper
path: jasper
ref: version-2.0.33
- name: build-jasper
if: steps.cache-jasper.outputs.cache-hit != 'true'
run: |
cd jasper
mkdir b && cd b
${{ matrix.compilers }} cmake .. -DCMAKE_INSTALL_PREFIX=~/jasper
make -j2
make install
- name: cache-bacio
id: cache-bacio
uses: actions/cache@v2
with:
path: ~/bacio
key: bacio-Intel-${{ matrix.compilers }}-${{ runner.os }}-v2.5.0
- name: checkout-bacio
if: steps.cache-bacio.outputs.cache-hit != 'true'
uses: actions/checkout@v2
with:
repository: NOAA-EMC/NCEPLIBS-bacio
path: bacio
ref: v2.5.0
- name: build-bacio
if: steps.cache-bacio.outputs.cache-hit != 'true'
run: |
cd bacio
mkdir build && cd build
${{ matrix.compilers }} cmake .. -DCMAKE_INSTALL_PREFIX=~/bacio
make -j2
make install
- name: cache-sp
id: cache-sp
uses: actions/cache@v2
with:
path: ~/sp
key: sp-Intel-${{ matrix.compilers }}-${{ runner.os }}-2.3.3-1
- name: checkout-sp
if: steps.cache-sp.outputs.cache-hit != 'true'
uses: actions/checkout@v2
with:
repository: NOAA-EMC/NCEPLIBS-sp
path: sp
ref: v2.3.3
- name: build-sp
if: steps.cache-sp.outputs.cache-hit != 'true'
run: |
cd sp
mkdir build
cd build
${{ matrix.compilers }} cmake .. -DCMAKE_INSTALL_PREFIX=~/sp
make -j2
make install
- name: cache-w3emc
id: cache-w3emc
uses: actions/cache@v2
with:
path: ~/w3emc
key: w3emc-Intel-${{ matrix.compilers }}-${{ runner.os }}-2.10.0-bacio-2.5.0
- name: checkout-w3emc
if: steps.cache-w3emc.outputs.cache-hit != 'true'
uses: actions/checkout@v2
with:
repository: NOAA-EMC/NCEPLIBS-w3emc
path: w3emc
ref: v2.10.0
- name: build-w3emc
if: steps.cache-w3emc.outputs.cache-hit != 'true'
run: |
cd w3emc
mkdir build
cd build
${{ matrix.compilers }} cmake -DBUILD_WITH_BUFR=OFF -DCMAKE_PREFIX_PATH=~/bacio -DCMAKE_INSTALL_PREFIX=~/w3emc ..
make -j2
make install
- name: cache-ip
id: cache-ip
uses: actions/cache@v2
with:
path: ~/ip
key: ip-Intel-${{ matrix.compilers }}-${{ runner.os }}-4.1.0
- name: checkout-ip
if: steps.cache-ip.outputs.cache-hit != 'true'
uses: actions/checkout@v2
with:
repository: NOAA-EMC/NCEPLIBS-ip
path: ip
ref: v4.1.0
- name: build-ip
if: steps.cache-ip.outputs.cache-hit != 'true'
run: |
cd ip
mkdir build
cd build
${{ matrix.compilers }} cmake .. -DCMAKE_INSTALL_PREFIX=~/ip -DCMAKE_PREFIX_PATH=~/sp
make -j2
make install
- name: cache-g2
id: cache-g2
uses: actions/cache@v2
with:
path: ~/g2
key: g2-Intel-${{ matrix.compilers }}-${{ runner.os }}-2.0.33-2.5.0-3.4.5
- name: checkout-g2
if: steps.cache-g2.outputs.cache-hit != 'true'
uses: actions/checkout@v2
with:
repository: NOAA-EMC/NCEPLIBS-g2
path: g2
ref: v3.4.5
- name: build-g2
if: steps.cache-g2.outputs.cache-hit != 'true'
run: |
cd g2
mkdir build
cd build
${{ matrix.compilers }} cmake -DCMAKE_INSTALL_PREFIX=~/g2 -DCMAKE_PREFIX_PATH="~/bacio;~/jasper" ..
make -j2
make install
- name: checkout-grib_utils
uses: actions/checkout@v2
with:
path: grib_utils
- name: build-grib_utils
run: |
cd grib_utils
mkdir build && cd build
${{ matrix.compilers }} cmake -DCMAKE_PREFIX_PATH="~/bacio;~/jasper;~/sp;~/ip;~/w3emc;~/g2" -DCMAKE_Fortran_FLAGS="-heap-arrays" ..
make -j2
ctest --output-on-failure --rerun-failed --verbose