New Features
- Support for neighbor iteration without stored neighbors (
LinkedCellList
binning 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::View
in 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
SameMajorVersion
for downstream CMake projects - Guard against including HDF5 directories if HDF5 is not enabled
- Include
<iostream>
where it's used - Improve warnings for previous
cabanacore
andCajita
targets and simplify newCore
andGrid
targets - Fix for heFFTe integer overflow with large system sizes
- Fix use of deprecated code in Cajita deprecation wrappers
New Features
- C++17 required
Gather
/Scatter
for persistent particle communication buffers added- Grid-based particle generation, in addition to generalization of random particle generation
ParticleList
with 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}ank
andSlice::{rank->viewRank}()
- Fixed boundary index space bug for
Node
,Face
, andEdge
entities causing out of bounds indexing - Added SYCL support for heFFTe
- Removed use of Kokkos deprecated features:
View::Rank
andparallel_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
DeviceType
class templates in favor of KokkosMemorySpace
- Deprecated Grid
Halo
andPartitioner
compatibility 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
SimdPolicy
to 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
AoSoA
containers #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 betweenAoSoA
data structures- Sorting and binning
AoSoA
data 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