Recent Releases of Cabana

Cabana - Version 0.7

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)

Scientific Software - Peer-reviewed - C++
Published by streeve over 1 year ago

Cabana - Version 0.6.1

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

Scientific Software - Peer-reviewed - C++
Published by streeve over 2 years ago

Cabana - Version 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

Scientific Software - Peer-reviewed - C++
Published by streeve over 2 years ago

Cabana - Version 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

DOI

Scientific Software - Peer-reviewed - C++
Published by streeve about 4 years ago

Cabana - Version 0.4.0

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

Scientific Software - Peer-reviewed - C++
Published by sslattery almost 5 years ago

Cabana - Version 0.3.0

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

Scientific Software - Peer-reviewed - C++
Published by sslattery about 6 years ago

Cabana - Version 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)

DOI

Scientific Software - Peer-reviewed - C++
Published by sslattery over 7 years ago

Cabana - Version 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

DOI

Scientific Software - Peer-reviewed - C++
Published by junghans over 7 years ago