GridTools version 2.2.0
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
andGT_CONSTEXPR_TARGET
goes awaywstd
stuff goes awayis_trivially_copy_constructible
check is consistently used instead ofis_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 deprecatedcomposite
is rewritten using c++17overload
is rewritten using c++17std::[smth]_v<...>
are used instead ofstd::[smth]<...>::value
static_assert(<cond>)
used instead ofstatic_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>(...)
bytuple(...)
tuple_util::make<array>(...)
byarray(...)
sid::composite::make<...>(...)
bysid::composite::keys<...>::make_values(...)
tuple_util::make<hymap::keys<...>::values>(...)
byhymap::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
Minor improvements
- Extensions to meta and hymap (#1663)
- Soften sid value type requirements from
std::trivially_copyable
tostd::trivially_copy_constructible
(#1663) is_tuple_like
(#1676) andis_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.