Skip to content

Commit

Permalink
Merge branch 'release/0.34.0'
Browse files Browse the repository at this point in the history
* release/0.34.0: (78 commits)
  Version 0.34.0
  Fix global indexing for meshes from structured grids with pole patch
  Fix cells().global_index() metadata for RegularLonLat grids in StructuredMeshGenerator
  BuildHalo: mark interior added cells as ghost
  Add example-plugin in doc
  Introduce colon-separated environment variable ATLAS_PLUGIN_PATH to simplify plugin detection
  Interpolate from cubedsphere mesh to structured columns (#146)
  Fix FieldSet::field(std::string) when field has been renamed (fixes #147)
  Further separate compilation features
  Field with functionspace optional
  Introduce features to disable compilation of structural components
  Remove interdependencies between structural components
  CMake cleanup
  Move files to correct places
  Introduce atlas::mdspan, contributed from github.com/kokkos/mdspan
  Disable GHA "nvhpc-22.11" as there are random compilation errors, probably related to insufficient disk or memory space
  atlas_io: fix test command in standalone build
  Fix and test some use cases with / without calling atlas::initialise()
  Access to atlas::Library::dataPath without initialising
  Enable latitude normalisation in KDTree coordinate transform (#140)
  ...
  • Loading branch information
wdeconinck committed Jul 10, 2023
2 parents 3ba1bed + 35726ee commit ea451cb
Show file tree
Hide file tree
Showing 187 changed files with 13,073 additions and 2,397 deletions.
5 changes: 5 additions & 0 deletions .github/ci-config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
dependencies: |
ecmwf/ecbuild
ecmwf/eckit
dependency_branch: develop
parallelism_factor: 8
27 changes: 27 additions & 0 deletions .github/ci-hpc-config.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,27 @@
matrix:
- mpi_on
- mpi_off

mpi_on:
build:
modules:
- ninja
modules_package:
- atlas:fftw,eigen,openmpi
- eckit:openmpi
dependencies:
- ecmwf/ecbuild@develop
- ecmwf/eckit@develop
parallel: 64
ntasks: 16

mpi_off:
build:
modules:
- ninja
modules_package:
- atlas:fftw,eigen
dependencies:
- ecmwf/ecbuild@develop
- ecmwf/eckit@develop
parallel: 64
56 changes: 43 additions & 13 deletions .github/workflows/build.yml
Original file line number Diff line number Diff line change
Expand Up @@ -32,8 +32,10 @@ jobs:
build_type: [Release,Debug]
name:
- linux gnu-10
- linux gnu-12
- linux gnu-7
- linux clang-12
- linux nvhpc-21.9
# - linux nvhpc-22.11
- linux intel
- macos

Expand All @@ -46,6 +48,26 @@ jobs:
compiler_cxx: g++-10
compiler_fc: gfortran-10
caching: true
coverage: true

- name: linux gnu-12
os: ubuntu-22.04
compiler: gnu-12
compiler_cc: gcc-12
compiler_cxx: g++-12
compiler_fc: gfortran-12
cmake_options: -DENABLE_OMP_CXX=OFF
caching: true
coverage: false

- name: linux gnu-7
os: ubuntu-20.04
compiler: gnu-7
compiler_cc: gcc-7
compiler_cxx: g++-7
compiler_fc: gfortran-7
caching: true
coverage: false

- name: linux clang-12
os: ubuntu-20.04
Expand All @@ -54,6 +76,7 @@ jobs:
compiler_cxx: clang++-12
compiler_fc: gfortran-10
caching: true
coverage: false

- name: linux clang-12
build_type: Release
Expand All @@ -64,16 +87,18 @@ jobs:
compiler_fc: gfortran-10
ctest_options: "-LE mpi" # For now until Checkerboard fixed
caching: true

- name: linux nvhpc-21.9
os: ubuntu-20.04
compiler: nvhpc-21.9
compiler_cc: nvc
compiler_cxx: nvc++
compiler_fc: nvfortran
cmake_options: -DCMAKE_CXX_FLAGS=--diag_suppress177
ctest_options: "-LE mpi" # For now until Checkerboard fixed
caching: false
coverage: false

# - name: linux nvhpc-22.11
# os: ubuntu-20.04
# compiler: nvhpc-22.11
# compiler_cc: nvc
# compiler_cxx: nvc++
# compiler_fc: nvfortran
# cmake_options: -DCMAKE_CXX_FLAGS=--diag_suppress177
# ctest_options: "-LE mpi" # For now until Checkerboard fixed
# caching: false
# coverage: false

- name : linux intel
os: ubuntu-20.04
Expand All @@ -82,6 +107,7 @@ jobs:
compiler_cxx: icpc
compiler_fc: ifort
caching: true
coverage: false

- name: macos
# Xcode compiler requires empty environment variables, so we pass null (~) here
Expand All @@ -91,6 +117,7 @@ jobs:
compiler_cxx: ~
compiler_fc: gfortran-11
caching: true
coverage: false
cmake_options: -DMPI_SLOTS=4

runs-on: ${{ matrix.os }}
Expand Down Expand Up @@ -120,6 +147,9 @@ jobs:
brew install libomp
else
sudo apt-get update
if [[ "${{ matrix.compiler }}" =~ gnu-7 ]]; then
sudo apt-get install gcc-7 g++-7 gfortran-7
fi
sudo apt-get install ninja-build
fi
Expand All @@ -138,7 +168,7 @@ jobs:
if: contains( matrix.compiler, 'nvhpc' )
shell: bash -eux {0}
run: |
${ATLAS_TOOLS}/install-nvhpc.sh --prefix ${DEPS_DIR}/nvhpc
${ATLAS_TOOLS}/install-nvhpc.sh --prefix ${DEPS_DIR}/nvhpc --version 22.11
source ${DEPS_DIR}/nvhpc/env.sh
echo "${NVHPC_DIR}/compilers/bin" >> $GITHUB_PATH
[ -z ${MPI_HOME+x} ] || echo "MPI_HOME=${MPI_HOME}" >> $GITHUB_ENV
Expand Down Expand Up @@ -189,7 +219,7 @@ jobs:
id: build-test
uses: ecmwf-actions/build-package@v2
with:
self_coverage: true
self_coverage: ${{ matrix.coverage }}
force_build: true
cache_suffix: "${{ matrix.build_type }}-${{ env.CACHE_SUFFIX }}"
recreate_cache: ${{ matrix.caching == false }}
Expand Down
11 changes: 11 additions & 0 deletions .github/workflows/check-release-version.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
name: Check VERSION file

on:
push:
branches:
- "release/**"
- "hotfix/**"

jobs:
check_version:
uses: ecmwf-actions/reusable-workflows/.github/workflows/check-release-version.yml@v2
3 changes: 1 addition & 2 deletions .github/workflows/reusable-ci-hpc.yml
Original file line number Diff line number Diff line change
Expand Up @@ -21,8 +21,7 @@ jobs:
ecbuild
ninja
--modules-package: |
fftw
eigen
atlas:fftw,eigen
--dependencies: |
${{ inputs.eckit || 'ecmwf/eckit@develop' }}
--parallel: 64
Expand Down
20 changes: 14 additions & 6 deletions AUTHORS
Original file line number Diff line number Diff line change
Expand Up @@ -13,23 +13,31 @@ Thanks for contributions from
- Andreas Mueller
- Baudouin Raoult
- Florian Rathgeber
- Marek Wlasak
- Oliver Lomax
- Marek Wlasak
- Daniel Holdaway
- Daan Degrauwe
- Philippe Marguinaud
- Slavko Brdar
- Gianmarco Mengaldo
- Dušan Figala
- Benjamin Menetrier
- James Hawkes
- Mats Hamrud
- Benjamin Menetrier
- Rahul Mahajan
- Toby Searle
- Olivier Iffrig
- Christian Kuehnlein
- Iain Russell
- Marco Milan
- Daniel Tipping
- Domokos Sármány
- Steven Vahl
- Lorenzo Milazzo
- Francois Hebert
- Yannick Trémolet
- Mark J. Olah
- Michael Lange
- Sam Hatfield
- Peter Bispham
- Slavko Brdar
- Yannick Trémolet
- Paul Cresswell
- Steven Vahl
- Michael Lange
22 changes: 22 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,27 @@ This project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.html

## [Unreleased]

## [0.34.0] - 2023-07-10
### Added
- Fieldset::metadata (#126)
- Fieldset::adjointHaloExchange
- Field/Fieldset::clone method
- Functions to enable/disable FPE
- Add function to build mesh from imported connectivity data (#135)
- Implement field::for_each capabilities (#139)
- Introduce colon-separated environment variable ATLAS_PLUGIN_PATH to simplify plugin detection
- Introduce atlas::mdspan, contributed from github.com/kokkos/mdspan
- Add function Field::horizontal_dimension() -> std::vector<idx_t>
- Setup horizontal_dimensions() for BlockStructuredColumns fields
- Upgrade the halo exchange procedure for the function space 'PointCloud' (#120)

### Fixed
- Enable latitude normalisation in KDTree coordinate transform (#140)
- Fix LocalView indexing bug for non-contiguous slices
- C++17 flag public propagation to downstream C++ CMake packages
- Fix cells().global_index() metadata for RegularLonLat grids in StructuredMeshGenerator
- BuildHalo: mark interior added cells as ghost

## [0.33.0] - 2023-04-03
### Added
- Add support for StructuredPartitionPolygon with halo > 0
Expand Down Expand Up @@ -443,6 +464,7 @@ Fix StructuredInterpolation2D with retry for failed stencils
## 0.13.0 - 2018-02-16

[Unreleased]: https://github.com/ecmwf/atlas/compare/master...develop
[0.33.0]: https://github.com/ecmwf/atlas/compare/0.33.0...0.34.0
[0.33.0]: https://github.com/ecmwf/atlas/compare/0.32.1...0.33.0
[0.32.1]: https://github.com/ecmwf/atlas/compare/0.32.0...0.32.1
[0.32.0]: https://github.com/ecmwf/atlas/compare/0.31.1...0.32.0
Expand Down
29 changes: 28 additions & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -38,12 +38,39 @@ find_package(atlas_io)
################################################################################
# Features that can be enabled / disabled with -DENABLE_<FEATURE>

ecbuild_add_option( FEATURE ATLAS_GRID
DESCRIPTION "Build grid related features" )

ecbuild_add_option( FEATURE ATLAS_FIELD
DESCRIPTION "Build field and memory management related features" )

ecbuild_add_option( FEATURE ATLAS_FUNCTIONSPACE
DESCRIPTION "Build functionspace related features (mesh, functionspace, parallel)"
CONDITION atlas_HAVE_ATLAS_GRID AND atlas_HAVE_ATLAS_FIELD )

ecbuild_add_option( FEATURE ATLAS_INTERPOLATION
DESCRIPTION "Build interpolation related features"
CONDITION atlas_HAVE_ATLAS_FUNCTIONSPACE )

ecbuild_add_option( FEATURE ATLAS_TRANS
DESCRIPTION "Build transform related features"
CONDITION atlas_HAVE_ATLAS_FUNCTIONSPACE )

ecbuild_add_option( FEATURE ATLAS_NUMERICS
DESCRIPTION "Build numerics related features"
CONDITION atlas_HAVE_ATLAS_FUNCTIONSPACE )

ecbuild_add_option( FEATURE ECKIT_DEVELOP
DESCRIPTION "Used to enable new features or API depending on eckit develop branch, not yet in a tagged release"
DEFAULT OFF )


include( features/BOUNDSCHECKING )
include( features/FORTRAN )
include( features/MPI )
include( features/OMP )
include( features/FFTW )
include( features/TRANS )
include( features/ECTRANS )
include( features/TESSELATION )
include( features/GRIDTOOLS_STORAGE )
include( features/ACC )
Expand Down
2 changes: 1 addition & 1 deletion VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
0.33.0
0.34.0
2 changes: 2 additions & 0 deletions atlas_io/src/atlas_io/Data.h
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@

#pragma once

#include <cstdint>

#include "eckit/io/Buffer.h"

namespace atlas {
Expand Down
2 changes: 2 additions & 0 deletions atlas_io/src/atlas_io/Trace.h
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@
#include <memory>
#include <string>
#include <vector>
#include <limits>

namespace eckit {
class CodeLocation;
Expand Down Expand Up @@ -51,6 +52,7 @@ struct TraceHookRegistry {
static bool enabled(size_t id) { return instance().enabled_[id]; }
static size_t size() { return instance().hooks.size(); }
static TraceHookBuilder& hook(size_t id) { return instance().hooks[id]; }
static size_t invalidId() { return std::numeric_limits<size_t>::max(); }

private:
TraceHookRegistry() = default;
Expand Down
2 changes: 1 addition & 1 deletion atlas_io/tests/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ foreach( algorithm none bzip2 aec lz4 snappy )
string( TOUPPER ${algorithm} feature )
if( eckit_HAVE_${feature} OR algorithm MATCHES "none" )
ecbuild_add_test( TARGET atlas_io_test_record_COMPRESSION_${algorithm}
COMMAND atlas_test_io_record
COMMAND atlas_io_test_record
ARGS --suffix ".${algorithm}"
ENVIRONMENT ${ATLAS_TEST_ENVIRONMENT} ATLAS_IO_COMPRESSION=${algorithm}
)
Expand Down
4 changes: 2 additions & 2 deletions cmake/atlas-import.cmake.in
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ set( atlas_HAVE_MPI @atlas_HAVE_MPI@ )
set( atlas_HAVE_OMP @atlas_HAVE_OMP@ )
set( atlas_HAVE_OMP_CXX @atlas_HAVE_OMP_CXX@ )
set( atlas_HAVE_OMP_Fortran @atlas_HAVE_OMP_Fortran@ )
set( atlas_HAVE_TRANS @atlas_HAVE_TRANS@ )
set( atlas_HAVE_ECTRANS @atlas_HAVE_ECTRANS@ )
set( atlas_HAVE_FORTRAN @atlas_HAVE_FORTRAN@ )
set( atlas_HAVE_EIGEN @atlas_HAVE_EIGEN@ )
set( atlas_HAVE_GRIDTOOLS_STORAGE @atlas_HAVE_GRIDTOOLS_STORAGE@ )
Expand Down Expand Up @@ -65,7 +65,7 @@ if( atlas_OMP_COMPONENTS )
endif()

## transi
if( atlas_HAVE_TRANS AND atlas_REQUIRES_PRIVATE_DEPENDENCIES )
if( atlas_HAVE_ECTRANS AND atlas_REQUIRES_PRIVATE_DEPENDENCIES )
set( transi_DIR @transi_DIR@ )
if( transi_DIR )
find_dependency( transi HINTS ${CMAKE_CURRENT_LIST_DIR}/../transi @transi_DIR@ )
Expand Down
5 changes: 5 additions & 0 deletions cmake/atlas_compile_flags.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -20,3 +20,8 @@ if( CMAKE_CXX_COMPILER_ID MATCHES Cray )
# directives, ACC directives, or ASM intrinsics.

endif()

if( CMAKE_CXX_COMPILER_ID MATCHES NVHPC )
ecbuild_add_cxx_flags("--diag_suppress declared_but_not_referenced --display_error_number" NAME atlas_cxx_disable_warnings )
# For all the variables with side effects (constructor/dectructor functionality)
endif()
7 changes: 7 additions & 0 deletions cmake/features/ACC.cmake
Original file line number Diff line number Diff line change
@@ -1,5 +1,7 @@
### OpenACC

if( atlas_HAVE_ATLAS_FIELD )

set( ATLAS_ACC_CAPABLE FALSE )
if( HAVE_CUDA )
if( CMAKE_Fortran_COMPILER_ID MATCHES "PGI|NVHPC" )
Expand All @@ -21,3 +23,8 @@ if( atlas_HAVE_ACC )
endif()
endif()
endif()

else()
set( HAVE_ACC 0 )
set( atlas_HAVE_ACC 0 )
endif()
Loading

0 comments on commit ea451cb

Please sign in to comment.