Skip to content

Releases: GregDMeyer/dynamite

v0.4.0

02 Apr 02:22
Compare
Choose a tag to compare

Added

  • Detailed example scripts (in examples/scripts)
  • Operator.expectation(), convenience function to compute the expectation value of the operator with respect to a state
  • dynamite.tools.MPI_COMM_WORLD() which returns PETSc's MPI communicator object
  • Operator.precompute_diagonal flag allows user to tune whether the matrix diagonal should be precomputed and saved, for shell matrices
  • State.entanglement_entropy member function (a more convenient way of using computations.entanglement_entropy, which also remains)
  • tools.get_memory_usage which can measure memory usage on a total, per rank, or per node basis
  • Multi-GPU parallelism via GPU-aware MPI

Removed

  • --track_memory flag to benchmark.py---now memory usage is always reported by the benchmarking script
  • tools.get_max_memory_usage and tools.get_cur_memory_usage in favor of a single function tools.get_memory_usage

Changed

  • Operator.msc_size renamed to Operator.nterms, and now invokes a call to Operator.reduce_msc()
  • shell matrix-vector multiplications are now considerably faster
  • Improved automatic version check; no longer leaves .dynamite files in working directory
  • GPU builds now automatically switch to CPU if a GPU is not found (and print a warning)
  • Changed default bind mount location for Docker images to the container user's home directory, /home/dnm
  • Renamed some values of which argument of eigsolve(): smallestlowest and largesthighest
  • Shift-invert ("target") eigsolving on GPU disabled, as PETSc does not support it well

Fixed

  • Explicit subspace sometimes failed conservation check even when operator was actually conserved
  • Build was broken with Cython 3
  • Work around broken petsc4py and slepc4py builds with pip>=23.1 (see PETSc issue)
  • Operator.__str__ and Operator.table() were formatted poorly for operators with complex coefficients
  • various issues in dynamite.extras
  • Performance was bad on Ampere (e.g. A100) GPUs unless a particular SLEPc flag was set. The flag is now automatically set.

v0.3.1

07 Mar 19:28
Compare
Choose a tag to compare

Fixed

  • compiler flags from PETSc were not being applied to the Cython parts of dynamite
  • large memory usage due to a change in PETSc garbage collection

v0.3.1-zenodo

07 Mar 21:57
Compare
Choose a tag to compare
v0.3.1-zenodo Pre-release
Pre-release

fix a broken zenodo release

v0.3.0

08 Feb 22:31
Compare
Choose a tag to compare

Added

  • Dynamite now automatically checks that an operator is the same across all MPI ranks before building it (thus catching bugs due to e.g. different random number generator seeds on different ranks)
  • computations.eigsolve() and computations.evolve() now take a max_its flag to adjust the solver's iteration limit
  • More descriptive error messages when solvers fail to converge
  • Methods .scale(), .axpy(), .scale_and_sum(), +, +=, -, -=, *, *= for the states.State class, allowing states to be summed together and multiplied by scalars
  • More descriptive output when str() is called on states.State class, and LaTeX representation of states in Jupyter
  • State.set_all_by_function() which takes a user-supplied function and applies it to set each element of a state vector
  • State.set_uniform() to set the state to a uniform superposition
  • Operator.infinity_norm()
  • The run_all_tests.py script (in tests/integration) now has an optional flag --test-set <filename>, which accepts a file listing tests to be run (instead of simply running all available tests)
  • L can now be passed to most subspaces as an argument
  • L for the State class can be inferred from the length of string passed to the state argument of the constructor
  • L for state class can now be set directly via the State.L parameter
  • XParity subspace, which implements Parity but in the X basis and can be applied on top of other subspaces

Changed

  • Order of arguments to State class changed
  • Moved operators.load_from_file into the Operator class, as operators.Operator.load
  • Moved operators.from_bytes into the Operator class, as operators.Operator.from_bytes
  • Switched to using pyproject.toml for package metadata and build configuration
  • operators.Operator.scale() no longer returns the operator it's called on, to avoid confusion about whether a new operator is being created
  • Initial product states can be specified with either the characters U and D or 0 and 1 (previously only U and D were allowed)
  • states.State.normalize() now has no return value (previously returned the scale factor used for normalization)
  • hash(subspace) now is only the same for two subspaces if subspace.identical would return True
  • Subspace methods idx_to_state and state_to_idx now return a scalar when passed a scalar, instead of returning a length-1 array
  • Removed spinflip argument from SpinConserve (replaced by XParity subspace)

Fixed

  • An exception is now raised if an unknown keyword argument is passed to computations.evolve()
  • Ensure compatibility when saving operators to disk using a 64 bit dynamite install but loading with a 32 bit install
  • Ensure spin indices passed to operator constructors fall within valid range
  • computations.entanglement_entropy() and computations.dm_entanglement_entropy() sometimes returned bad values due to uninitialized memory being included in the computation
  • Imaginary time evolution is now possible (for entirely real Hamiltonians), when dynamite is built without complex numbers
  • Edge case where matrix norm was incorrect for a few very specific operators, with SpinConserve + spinflip subspace
  • Bug in shell matrix-vector multiply for certain operators when L>31
  • Ensure backend gets recompiled if PETSC_ARCH changes
  • hash(subspace) is now much more performant for large Hilbert spaces
  • Incorrect memory usage reported by benchmark.py
  • Matrix-vector multiplication was incorrect for Parity subspace when operator did not conserve the subspace
  • Deprecated np.float type

v0.2.3

22 Aug 18:13
Compare
Choose a tag to compare

See CHANGELOG.md for details.

Release for Zenodo

13 Jan 20:11
Compare
Choose a tag to compare
Release for Zenodo Pre-release
Pre-release

First release to be archived on Zenodo.