All notable changes to this project will be documented in this file.
The format is based on Keep a Changelog, and this project adheres to Semantic Versioning.
- Sequential version of gallery functions.
- Support for ghost layers of more than a single element in thickness.
- Function
array_of_tuples
. - Export statement for
local_permutation
. - Experimental support for block arrays via types
BRange
,BVector
,BMatrix
, andBArray
.
- Typo:
node_coorinates_unit_cube
->node_coordinates_unit_cube
. - Bug in
nullspace_linear_elasticity
. - Bug in
PVector
when working in split format.
near_nullspace_linear_elasticity
in favor ofnullspace_linear_elasticity
.
- Split format support for
PVector
. - Helper functions to build partitioned sparse matrices and vectors in split format,
pvector_from_split_blocks
andpsparse_from_split_blocks
. - Gallery function
linear_elasticity_fem
. - Function
global_to_owner
.
OwnAndGhostVectors
is replaced bySplitVector
.
- Function
spmv!
.
- Performance improvements in sparse matrix-vector multiplication.
MPIArray
andDebugArray
are now inmutable for performance reasons.
- Many type instabilities.
mul!
(and alsoconsistent!
,exchange!
) allocation free forMPIArray
(withcheck-bounds=no
)
OldPSparseMatrix
and related functionality.
- New method for
psparse
that accepts a sparse matrix type as first argument.
- Functions
laplacian_fdm
andlaplacian_fem
to generate distributed sparse matrices from the discretization of the Laplacian operator.
- Bug in
consistent!
for sparse matrices.
- Bug in
copy
. - Bug in sparse matrix-matrix products.
- Performance improvements in
tuple_of_arrays
.
- Function
centralize
for sparse matrix. multicast
for arbitrary types.
- Bug in
psparse
.
- Distributed sparse matrix-matrix multiplication routines.
- Distributed transposed sparse matrix-vector product.
- Function
sparse_matrix
, which is is equivalent tosparse
, but it allows one to pass negative indices (which will be ignored). Useful to handle boundary conditions.
- Enhancements in the logic behind the (undocumented) optional arguments in
psparse
,pvector
, andpsystem
.
- Gather/scatter for non isbitstype objects.
- Function
find_local_indices
.
-
Major refactoring in
PSparseMatrix
(and inPVector
in a lesser extent). The old code is still available (but deprecated), and can be recovered applying this renaming to your code-base:PSparseMatrix -> OldPSparseMatrix
psparse! -> old_psparse!
pvector! -> old_pvector!
trivial_partition -> old_trivial_partition
-
The default parallel sparse matrix format is now split into 4 blocks corresponding to own/ghost columns/rows. The previous "monolithic" storage is not implemented anymore for the new version of
PSparseMatrix
, but can be implemented in the new setup if needed. -
emit
renamed tomulticast
. The former name is still available but deprecated.
- Efficient re-construction of
PSparseMatrix
andPVector
objects. - Functions
assemble
andconsistent
(allocating versions ofassemble!
andconsistent!
with a slightly different treatment of the ghost rows). - Function
consistent
forPSparseMatrix
. - Functions
repartition
andrepartition!
used to change the data partition ofPSparseMatrix
andPVector
objects. - Functions
psystem
andpsystem!
for generating a system matrix and vector at once. - Function
trivial_partition
. - Support for sub-assembled matrices in
PSparseMatrix
.
- Function
partition_from_color
. Base.copyto!
andBase.copy!
forPSparseMatrix
.
- Bugfix:
Base.similar
methods forPSparseMatrix
not working.
- MPI ibarrier-based (supposedly scalable) algorithm to find rcv neighbours in a sparse all-to-all communication graph given the snd neighbors. We left the previous non-scalable algorithm as default (based on gather-scatter) until we have experimental evidence on the relative performance and scalability of the former with respect to the latter and for which core ranges.
- New kwarg
discover_cols=true
to thepsparse!
constructor, which allows the user to skip column index discovery.
- Bugfix:
global_length
forPRange
not working as intended.
- Performance improvements.
- Performance improvements in functions
tuple_of_arrays
andassemble!
.
This version is a major refactor of the code with improvements in the software abstractions and documentation. Almost all previous functionality should be available, but with a different API.
A changelog is not maintained for older versions than 0.3.0.