From f62a679ee88dbab549344aedf4e6f92e4a301cd3 Mon Sep 17 00:00:00 2001 From: Alex Richert Date: Tue, 22 Oct 2024 09:53:22 -0700 Subject: [PATCH 1/2] add Intel CI workflow --- .github/workflows/Intel.yml | 101 ++++++++++++++++++++++++++++++++++++ 1 file changed, 101 insertions(+) create mode 100644 .github/workflows/Intel.yml diff --git a/.github/workflows/Intel.yml b/.github/workflows/Intel.yml new file mode 100644 index 0000000..eb5207f --- /dev/null +++ b/.github/workflows/Intel.yml @@ -0,0 +1,101 @@ +# This is the Intel workflow for the wgrib2 project. This +# tests with Intel Classic and oneAPI. +# +# Alex Richert, 22 Oct 2024 +name: Intel +on: + push: + branches: + - develop + pull_request: + branches: + - develop + +# Cancel in-progress workflows when pushing to a branch +concurrency: + group: ${{ github.workflow }}-${{ github.event.pull_request.number || github.ref }} + cancel-in-progress: true + +jobs: + Linux_options: + runs-on: ubuntu-latest + + strategy: + matrix: + compilers: ["oneapi", "classic"] + + steps: + + - name: install + run: | + sudo apt-get update + sudo apt-get install libnetcdf-dev libnetcdff-dev netcdf-bin pkg-config \ + libpng-dev autotools-dev autoconf libaec-dev libopenblas-serial-dev \ + libopenjp2-7 libopenjp2-7-dev + + - name: "Install Intel" + uses: NOAA-EMC/ci-install-intel-toolkit@develop + with: + compiler-setup: ${{ matrix.compilers }} + + - name: cache-jasper + id: cache-jasper + uses: actions/cache@v4 + with: + path: ~/jasper + key: jasper-${{ runner.os }}-${{ matrix.compilers }}-1.900.1 + + - name: checkout-jasper + if: steps.cache-jasper.outputs.cache-hit != 'true' + uses: actions/checkout@v4 + with: + repository: jasper-software/jasper + path: jasper + ref: version-1.900.1 + + - name: build-jasper + if: steps.cache-jasper.outputs.cache-hit != 'true' + run: | + cd jasper + CFLAGS="-Wno-implicit-function-declaration -Wno-incompatible-pointer-types" ./configure --prefix=$HOME/jasper + make + make install + + - name: cache-ip + id: cache-ip + uses: actions/cache@v4 + with: + path: ~/ip + key: ip-${{ runner.os }}-${{ matrix.compilers }}-develop + + - name: checkout-ip + if: steps.cache-ip.outputs.cache-hit != 'true' + uses: actions/checkout@v4 + with: + repository: NOAA-EMC/NCEPLIBS-ip + path: ip + ref: develop + + - name: build-ip + if: steps.cache-ip.outputs.cache-hit != 'true' + run: | + cd ip + mkdir build + cd build + cmake .. -DCMAKE_INSTALL_PREFIX=~/ip -DCMAKE_PREFIX_PATH=~/sp + make -j2 + make install + + - name: checkout + uses: actions/checkout@v4 + with: + path: wgrib2 + + - name: build + run: | + cd wgrib2 + mkdir b + cd b + cmake -DCMAKE_PREFIX_PATH="~/ip" .. -DUSE_OPENMP=OFF + make VERBOSE=1 + ctest --verbose --output-on-failure --rerun-failed From 0ec91dcc9626c39dc6309519afa4e67fc976b67e Mon Sep 17 00:00:00 2001 From: Alex Richert Date: Tue, 22 Oct 2024 13:27:24 -0700 Subject: [PATCH 2/2] add flags for oneapi --- CMakeLists.txt | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 5180776..ca7f6c0 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -66,15 +66,18 @@ endif() include(GNUInstallDirs) message(STATUS "Setting compiler flags...") -if(CMAKE_C_COMPILER_ID MATCHES "^(Intel)$") +if(CMAKE_C_COMPILER_ID MATCHES "^(Intel|IntelLLVM)$") set(CMAKE_C_FLAGS "-g -traceback ${CMAKE_C_FLAGS} -DIFORT") + if(CMAKE_C_COMPILER_ID MATCHES "^(IntelLLVM)$") + set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Rno-debug-disables-optimization") + endif() set(CMAKE_C_FLAGS_DEBUG "-O0") elseif(CMAKE_C_COMPILER_ID MATCHES "^(GNU)$") set(CMAKE_C_FLAGS "-g ${CMAKE_C_FLAGS} -DGFORTRAN") set(CMAKE_C_FLAGS_DEBUG "-O0") endif() -if(CMAKE_Fortran_COMPILER_ID MATCHES "^(Intel)$") +if(CMAKE_Fortran_COMPILER_ID MATCHES "^(Intel|IntelLLVM)$") set(CMAKE_Fortran_FLAGS "-g -traceback ${CMAKE_Fortran_FLAGS}") set(CMAKE_Fortran_FLAGS_DEBUG "-O0") elseif(CMAKE_Fortran_COMPILER_ID MATCHES "^(GNU)$")