New Features
- 2d support for Core library: neighbor lists, binning, particle init, and HDF5 output
- Added per-particle radius neighbor search for VerletList
- Import-based Halo support (for when you know who you are receiving from rather than sending to)
- Spline functions extended to 6th order (previous maximum 3rd order)
Bug Fixes and Improvements
- Fix slice edge case where size is a multiple of the vector length
- Fix Gather/Scatter plan update sizes
- Expand ParameterPack for non-default constructible types
- Remove volatile overloads for Array join
- Use the user provided execution space for index space execution policy creation
- Fix random seeds for grid-based random particle generation
- Fix remove edge case when no particles removed
- Improve HDF5 particle output: add time to XDMF and increase output precision for reproducibility
- Fixed heFFTe CMake integration
- Add namespace and class/function naming to error messages and parallel loop labels
- Added customizable cmake install location with
Cabana_INSTALL_PACKAGEDIR - Allow disabling Doxygen builds with
Cabana_ENABLE_DOXYGEN - Enable installing test executables with
Cabana_INSTALL_TEST_EXECUTABLES - Added CMake feature summary
Deprecated features
- Cajita deprecation wrappers removed
- Device type template parameter deprecated support removed
Minimum dependency version updates
- Building with Kokkos past version 4.6 requires
Kokkos_ENABLE_IMPL_VIEW_LEGACY=ON
New Features
- Support for neighbor iteration without stored neighbors (
LinkedCellListbinning used withinneighbor_parallel_for) - Global particle communication based on the grid:
Grid::GlobalParticleComm - Added particle removal (without MPI):
remove - Added neighbor list histograms
- Added interfaces for total and maximum neighbors
Bug Fixes and Improvements
- Added support for
Kokkos::Viewin neighbor lists and spatial binning - Performance benchmark and benchmark plotting improvements
- Fixed memory leaks in HYPRE solver interfaces
- Updated ArborX neighbor interface for compatibility with newest versions
- Added subfiling support for HDF5 particle output
Minimum dependency version updates
- Kokkos minimum 4.1 (previously 3.7)
- Sets accurate CMake project version
- Allows compatibility with
SameMajorVersionfor downstream CMake projects - Guard against including HDF5 directories if HDF5 is not enabled
- Include
<iostream>where it's used - Improve warnings for previous
cabanacoreandCajitatargets and simplify newCoreandGridtargets - Fix for heFFTe integer overflow with large system sizes
- Fix use of deprecated code in Cajita deprecation wrappers
New Features
- C++17 required
Gather/Scatterfor persistent particle communication buffers added- Grid-based particle generation, in addition to generalization of random particle generation
ParticleListwith field type tags and thread-level particle interfaces added- Semi-structured hypre interface for multi-variate systems
- New interface to modify an existing Verlet neighbor list
- New benchmarks for grid halo and particle-grid interpolation
Bug Fixes and Improvements
- Breaking change: replace
Slice::{R->r}ankandSlice::{rank->viewRank}() - Fixed boundary index space bug for
Node,Face, andEdgeentities causing out of bounds indexing - Added SYCL support for heFFTe
- Removed use of Kokkos deprecated features:
View::Rankandparallel_reduce()on raw pointers - Run benchmarks and examples with default or default host backends
- Added Kokkos profiling regions
- Added python utilities to plot benchmark results
Deprecated features
- Deprecated Cajita in favor of Cabana::Grid
- Deprecated Kokkos
DeviceTypeclass templates in favor of KokkosMemorySpace - Deprecated Grid
HaloandPartitionercompatibility wrappers
Minimum dependency version updates
- Kokkos minimum 3.7 (previously 3.2)
- Optional dependency heFFTe minimum 2.3 (previously 2.1)
- Optional dependency googletest minimum 1.10 (previous internal download removed)
Experimental Features (subject to change in future releases)
- Distributed particle output with HDF5 library interface
- Expanded sparse grid capabilities: index spaces, local grid, array, and halo
New Features
- Particle migration using Cajita grid added
- Random particle generation added
- Complete Cajita tutorial examples added
- Cajita performance benchmarks added
Bug Fixes and Improvements
- Remove all uses of
Kokkos::Impl - Redesign
SimdPolicyto not modify the underlyingKokkos::TeamPolicy - Rename
Cabana_REQUIRE_{PTHREAD->THREADS} - Rename clang-format build rule
format->cabana-format - Improved Doxygen coverage
- Improved wiki documentation
Minimum dependency version updates
- CMake minimum 3.16 required (previously 3.9)
- Optional dependency heFFTe minimum 2.1 (previously 2.0)
- Optional dependency HYPRE minimum 2.22.1 (previously 2.22.0)
Experimental Features (subject to change in future releases)
- Distributed particle output with SILO library interface
- Cajita load balancing added through ALL library interface
New Features
- C++14 required
- Updated minimum Kokkos dependency to version 3.2
- AMD HIP support and continuous integration testing
- Intel SYCL support and continuous integration testing
- OpenMP-Target support (with some disabled features)
- Hybrid particle-grid capability through the Cajita interfaces. Features include:
- 2D/3D structured grid data structures
- particle-grid interpolation
- particle-grid communication
- multidimensional distributed FFTs via heFFTe (including host, CUDA, and HIP)
- linear solvers and preconditions via HYPRE (including host and CUDA)
Bug Fixes and Improvements
- Removed deprecated portability macros in favor of Kokkos macros (e.g. KOKKOS_INLINE_FUNCTION)
- General performance improvements including neighbor list and particle communication updates
- Improved Doxygen coverage, wiki documentation, and tutorials
Experimental Features (subject to change in future releases)
- Sparse grids support in Cajita
- Structured grid data I/O in Cajita
New Features
- Updated minimum Kokkos dependency to version 3.1
- CUDA and HIP support and testing in continuous integration
- Mirror view capability for AoSoA
- New performance benchmarks for sorting, communication, and neighbor lists
- Improving AoSoA memory management with empty() and shrinkToFit()
- Second level neighbor parallel for and reduce algorithms for triplet operations
- Unmanaged AoSoA for wrapping user memory
Bug Fixes and Improvements
- Using new CMake target for linking Kokkos
- Removed numerous instances of default allocation of Kokkos Views
- Eliminated use of user-defined MPI tags in communication algorithms
- Cleaned usage of deprecated Kokkos code
- Update for compilation with C++14
- Significant performance enhancements to communication code
Experimental Features (subject to change in future releases)
- Tree-based neighbor lists using ArborX
New Features
- An optional MPI dependency has been added. Note that when CUDA is enabled the MPI implementation is expected to be CUDA-aware. #45
- Particle redistribution via MPI. Implemented in the
Cabana::Distributor#43 - Particle halo exchange via MPI. Implemented in the
Cabana::Halo#43 - Parallel for concept for 2D indexing in AoSoA loops. Implemented via
Cabana::simd_parallel_for. Includes a new execution space conceptCabana::SimdPolicy. #49 - Parallel for concept for traversing neighbor lists. Implemented via
Cabana::neighbor_parallel_for#49 - Continuous integration for pull requests via GitHub #9
- Support the ECP continuous integration infrastructure #66
- New example using scafacos for long-range solvers #46
- Additional tutorials documentation on the Wiki
Bug Fixes and Improvements
- Fixed a bug in the construction of slices on uninitialized
AoSoAcontainers #80 - Construct Verlet lists over the specified range of indices #70
- Removed aliases of Kokkos macros and classes #58
New Features
- Core portable data structures:
Tuple,SoA,AoSoA, andSlice DeepCopy: deep copy of data betweenAoSoAdata structures- Sorting and binning
AoSoAdata structures LinkedCellList: linked cell list implementation- Portable neighbor list interface
VerletList- linked cell accelerated Verlet list implementation- Basic tutorial
Experimental Features (subject to change in future releases)
parallel_for- portable parallel loops over supported execution spacesneighbor_parallel_for- portable parallel loops over neighbor lists in supported execution spacesRangePolicy- defines an index range for parallel loops