Selected Basis Diagonalization (SBD)

sbd-eigensolver provides Python bindings for the SBD (Selected Basis Diagonalization) library, which finds eigenvalues and eigenvectors of a second-quantized Hamiltonian projected onto a subspace spanned by a selected set of determinants. The bindings are MPI-parallel and can run on CPUs or, where a suitable toolchain is available, on NVIDIA or AMD GPUs.

The package also exposes a solver compatible with the qiskit-addon-sqd interface, so SBD can be used as the diagonalization step of a sample-based quantum diagonalization (SQD) workflow. See sbd.sbd_solver.

Getting started

The README in the root of this project’s repository introduces the package and its qiskit-addon-sqd integration. INSTALL.md covers installation in full, including the environment variables that control which backends are compiled. Example scripts and a notebook live in examples, organized by basis type, with a README in each folder.

A minimal diagonalization looks like this:

import sbd

config = sbd.TPB_SBD()
results = sbd.tpb_diag_from_files("FCIDUMP", "adets.dat", config)

The backend is initialized automatically on first use; sbd.init() only needs to be called to select a device explicitly.

Contributing

The source code is available on GitHub.

We use GitHub issues for tracking requests and bugs.

License

Apache License 2.0