Skip to content

Latest commit

 

History

History
152 lines (115 loc) · 6.58 KB

CHANGELOG.md

File metadata and controls

152 lines (115 loc) · 6.58 KB

Change Log

0.6.0

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 and Slice::{rank->viewRank}()
  • Fixed boundary index space bug for Node, Face, and Edge entities causing out of bounds indexing
  • Added SYCL support for heFFTe
  • Removed use of Kokkos deprecated features: View::Rank and parallel_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 Kokkos MemorySpace
  • Deprecated Grid Halo and Partitioner 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

0.5.0

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 underlying Kokkos::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

0.4.0

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

0.3.0

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

0.2.0

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 concept Cabana::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

0.1.0

New Features

  • Core portable data structures: Tuple, SoA, AoSoA, and Slice
  • DeepCopy: deep copy of data between AoSoA 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 spaces
  • neighbor_parallel_for - portable parallel loops over neighbor lists in supported execution spaces
  • RangePolicy - defines an index range for parallel loops