Skip to content

GridTools version 2.2.0

Compare
Choose a tag to compare
@havogt havogt released this 06 Jul 10:36
· 68 commits to master since this release
240e8b0

C++ standard upgraded to C++17

Starting with this version of GridTools, we require the C++17 standard (#1680) and improved the code base using C++17 features (#1693, #1716, #1697):

  • Get rid of tuple_util::make
  • GT_CONSTEXPR and GT_CONSTEXPR_TARGET goes away
  • wstd stuff goes away
  • is_trivially_copy_constructible check is consistently used instead of is_trivially_copyable where the data is passed host/device boundary, because it is exactly what is needed.
  • make_[smth] pattern is replaced to template argument deduction in several places, the old pattern is deprecated
  • composite is rewritten using c++17
  • overload is rewritten using c++17
  • std::[smth]_v<...> are used instead of std::[smth]<...>::value
  • static_assert(<cond>) used instead of static_assert(<cond>, "")
  • CTAD for simple_ptr_holder (#1701, #1708)

If you were using functionality from the internal library common you might have to update your code (all common is considered internal API, see Release process). The most common change is using CTAD instead of makers where possible. If not possible due to compiler bugs, the maker pattern was updated to be independant of tuple_util::make. E.g. replace

  • tuple_util::make<tuple>(...) by tuple(...)
  • tuple_util::make<array>(...) by array(...)
  • sid::composite::make<...>(...) by sid::composite::keys<...>::make_values(...)
  • tuple_util::make<hymap::keys<...>::values>(...) by hymap::keys<...>::make_values(...);

New library fn: functional model backend

The fn library provides functionality for the Declarative GT4Py to implement a backend for the functional model. It supports (naive, no-blocking) CPU and (efficient) GPU (CUDA) execution for structured (Cartesian) and unstructured grids. See examples in tests/regression/fn/.
The library provides a high-level, human-readable frontend, but is mainly meant as a target for code generators.

  • Introduce functional model backend (#1648, #1666, #1679)
  • Implements fn::extents (#1683)
  • Column Stage (#1685)
  • New Backend Backends (#1695)
  • Fn Frontend (#1698)
  • Performance References for FN Backends (#1711)
  • Add fn::tuple_get and fn::make_tuple (#1713)
  • Allow setting CUDA stream (#1712)

Minor new features

  • int_vector library (#1672)
  • add conversion assign to hymap (#1702)

Minor improvements

  • Extensions to meta and hymap (#1663)
  • Soften sid value type requirements from std::trivially_copyable to std::trivially_copy_constructible (#1663)
  • is_tuple_like (#1676) and is_hymap (#1677)

Bug fixes

  • Propagate CXX_STANDARD to all tests (#1664)
  • Compilation fixes for nvcc 11.5 and clang 12 with std=c++20 (#1665)
  • Workaround for nvcc bug https://godbolt.org/z/orrev1xnM (#1681)
  • c_bindings example: fix typo and split cpu and gpu fortran sources (#1684)
  • Fix unused param warnings (#1706)
  • Fix Compilation with CUDA 11.6 (#1710)
  • Support for Clang 14 (#1707)

Testing

  • Add C++20 with Cray Clang on Piz Daint to Jenkins CI (#1675)
  • Perftest Updates (#1690)
  • CI dom: Downgrade to gcc 10.3 for CUDA toolkit support (#1699)

Contributions

This release contains contributions from
@anstaf, @fthaler, @havogt.