eth-cscs / DLA-Future

DLA-Future
https://eth-cscs.github.io/DLA-Future/master/
BSD 3-Clause "New" or "Revised" License
64 stars 14 forks source link

Support 1x1 matrices in the eigensolver? #984

Open RMeli opened 1 year ago

RMeli commented 1 year ago

When running regression tests with CP2K, there were some tests failing because the eigenproblem is of size $1 \times 1$, which is not supported by reduction_to_band:

[ERROR] /home/rmeli/git/DLA-Future/include/dlaf/eigensolver/reduction_to_band.h:113 : dlaf::matrix::Matrix<T, dlaf::Device::CPU> dlaf::eigensolver::internal::reduction_to_band(dlaf::comm::CommunicatorGrid, dlaf::matrix::Matrix<T, D>&, dlaf::SizeType) [with dlaf::Backend B = dlaf::Backend::MC; dlaf::Device D = dlaf::Device::CPU; T = double; dlaf::SizeType = long int]
band_size >= 2
1

Should we support $1 \times 1$ matrices?


This issue has been circumvented in CP2K by introducing a DLAF_NEIGVEC_MIN parameter (similarly to what it is done with ELPA), allowing to control from which matrix size to use DLA-Future's eigensolver. This is also useful to give the user control on when to use DLA-Future and when to fallback to ScaLAPACK based on the matrix size. Setting DLAF_NEIGVEC_MIN=2 (and using #980), all tests but one pass (this one test also fails with ScaLAPACK).