Skip to content

API changes in preparation for the public release

Pre-release
Pre-release
Compare
Choose a tag to compare
@havogt havogt released this 27 Feb 09:13
· 434 commits to master since this 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-method
  • enumtype::in and enumtype::inout -> intent::in, intent::inout
  • execute<enumtype::forward> etc. -> execute::forward
  • access_mode::ReadOnly, ReadWriteaccess_mode::read_only, read_write
  • cache_type::IJ, Kcache_type::ij, k
  • direction::I, J, Kdirection::i, j, k
  • ownership::ExternalCPU, ExternalGPUownership::external_cpu, external_gpu
  • STRUCTURED_GRIDSGT_STRUCTURED_GRIDS
  • FLOAT_PRECISIONGT_FLOAT_PRECISION
  • BACKEND_*GT_BACKEND_*
  • ENABLE_METERSGT_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 the axis.

Internal API changes

  • GRIDTOOLS_STATIC_ASSERTGT_STATIC_ASSERT
  • ASSERT_OR_THROWGT_ASSERT_OR_THROW
  • DISALLOW_COPY_AND_ASSIGNGT_DISALLOW_COPY_AND_ASSIGN
  • _USE_GPU_GT_USE_GPU
  • GTREPO_*GT_REPO_*
  • GRIDTOOLS_PP_*GT_PP_*
  • PEDANTICGT_PEDANTIC
  • VERBOSEGT_VERBOSE
  • RESTRICTGT_RESTRICT
  • __DISABLE_CACHING__GT_DISABLE_CACHING
  • META_STORAGE_INDEX_LIMITGT_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
  • CUDAMSGGCL_CUDAMSG
  • _GCL_CHECK_DESTRUCTORGCL_CHECK_DESTRUCTOR
  • HOSTWORKAROUNDGCL_HOSTWORKAROUND
  • NULLnullptr
  • 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 the param_list instead of explicitly using boost::mpl::vector. In the future using boost::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 all ij and k with cache_type::
  • Introduces make_expandable_computation(expand_factor<N>, ...) and removes the respective overload of make_computation; and make_expandable_positional_computation(expand_factor<N>, ...) and removes the respective overload of make_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