API changes in preparation for the public release
Pre-release
Pre-release
Changes since 0.19.0
API breaking changes
Naming changes
A lot of public GridTools functions, types and macros were renamed to consistently use lower-case
arg_list
->param_list
as the elements are the parameters of the stencil operator (not the arguments).Do
-method →apply
-methodenumtype::in
andenumtype::inout
->intent::in
,intent::inout
execute<enumtype::forward>
etc. ->execute::forward
access_mode::ReadOnly
,ReadWrite
→access_mode::read_only
,read_write
cache_type::IJ, K
→cache_type::ij, k
direction::I, J, K
→direction::i, j, k
ownership::ExternalCPU, ExternalGPU
→ownership::external_cpu, external_gpu
STRUCTURED_GRIDS
→GT_STRUCTURED_GRIDS
FLOAT_PRECISION
→GT_FLOAT_PRECISION
BACKEND_*
→GT_BACKEND_*
ENABLE_METERS
→GT_ENABLE_METERS
storage_info_interface
->storage_info
Removed
- Removed
axis<...>::with_offset_limit
,axis<...>::with_extra_offsets
as they were confusing. These options have to be set directly as template arguments to theaxis
.
Internal API changes
GRIDTOOLS_STATIC_ASSERT
→GT_STATIC_ASSERT
ASSERT_OR_THROW
→GT_ASSERT_OR_THROW
DISALLOW_COPY_AND_ASSIGN
→GT_DISALLOW_COPY_AND_ASSIGN
_USE_GPU_
→GT_USE_GPU
GTREPO_*
→GT_REPO_*
GRIDTOOLS_PP_*
→GT_PP_*
PEDANTIC
→GT_PEDANTIC
VERBOSE
→GT_VERBOSE
RESTRICT
→GT_RESTRICT
__DISABLE_CACHING__
→GT_DISABLE_CACHING
META_STORAGE_INDEX_LIMIT
→GT_META_STORAGE_INDEX_LIMIT
- Removed
ALLOW_EMPTY_EXTENTS
,_USE_DATATYPES_
- Added
GT_
-prefix to some file-local macros to minimize conflict probability. _GCL_GPU_
→GCL_GPU
_GCL_MPI_
→GCL_MPI
CUDAMSG
→GCL_CUDAMSG
_GCL_CHECK_DESTRUCTOR
→GCL_CHECK_DESTRUCTOR
HOSTWORKAROUND
→GCL_HOSTWORKAROUND
NULL
→nullptr
- Added
GCL_
-prefix to GCL macros. - Replaced GCL header guards by
#pragma once
Other API changes
- Structured grids is now the default
- Users should use
make_param_list
to create theparam_list
instead of explicitly usingboost::mpl::vector
. In the future usingboost::mpl::vector
might not work anymore, the underlying type is implementation detail, not public API cache_type
is now an enum class. Update code by prefixing allij
andk
withcache_type::
- Introduces
make_expandable_computation(expand_factor<N>, ...)
and removes the respective overload ofmake_computation
; andmake_expandable_positional_computation(expand_factor<N>, ...)
and removes the respective overload ofmake_positional_computation
New functionality
- Distributed boundaries: timers for pack/unpack, exchange, and boundary condition.
New example
- Tridiagonal solver
Bug fixes
- Fix CUDA type unsigned long long char, which was a copy and paste bug from the CUDA programming guide where they are missing a comma.
- Add
!=
to halo_descriptors (==
already existed). - fortran_array_adapter: Throw if datastore was not allocated.
- c_bindings: wrap line for procedures.
- repository: bindings support to add a prefix.
- In CUDA temporaries are only allocated if they are not cached.
- User-friendly error on missing backend in make_computation.
- User-friendly error argument type check of make_multistage.
- Added Back check_grid_against_extents
- communication: only exchange the part of the buffer which is actually used by the exchange (not the full allocated buffer)
- Workaround nvcc which has problems in unrolling a loop in hypercube_iterator.
- Fix to the pointer sharing constructor of storage_info.
Other changes
- Documentation was updated
Internal changes
- Added
hymap
which is a boost::fusion-like map. - Updates to sid