Skip to content

Releases: ECP-copa/Cabana

Version 0.7

26 Sep 16:47
7914d28
Compare
Choose a tag to compare

New Features

  • Support for neighbor iteration without stored neighbors (LinkedCellList binning used within neighbor_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)

Version 0.6.1

20 Nov 20:46
Compare
Choose a tag to compare

Bug fixes

  • 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 and Cajita targets and simplify new Core and Grid targets
  • Fix for heFFTe integer overflow with large system sizes
  • Fix use of deprecated code in Cajita deprecation wrappers

Version 0.6.0

21 Sep 17:23
fa9e58a
Compare
Choose a tag to compare

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

Version 0.5.0

07 Apr 21:19
3d777db
Compare
Choose a tag to compare

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

DOI

Version 0.4.0

02 Jul 14:18
12d0a98
Compare
Choose a tag to compare

New Features

  • C++14 required
  • AMD HIP support and continuous integration testing
  • Intel SYCL support and continuous integration testing
  • 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
    • linear solvers and preconditions via HYPRE

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

DOI

Version 0.3.0

04 May 22:28
c764869
Compare
Choose a tag to compare

New Features

  • Updated 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 managment 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

DOI

Version 0.2.0

12 Mar 17:52
d1cbe48
Compare
Choose a tag to compare

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)

DOI

Version 0.1.0

06 Feb 16:55
993f839
Compare
Choose a tag to compare

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

DOI