QMCPACK / qmcpack

Main repository for QMCPACK, an open-source production level many-body ab initio Quantum Monte Carlo code for computing the electronic structure of atoms, molecules, and solids with full performance portable GPU support
http://www.qmcpack.org
Other
283 stars 135 forks source link

Enable DiracDeterminantBatched<PlatformKind::SYCL> #5043

Closed ye-luo closed 3 weeks ago

ye-luo commented 3 weeks ago

Review after #5042 being merged.

Proposed changes

@jngkim contributed QMCWaveFunctions/detail/SYCL/matrix_update_helper.cpp Currently there is no batched code path for the matrix inversion and I just connect the OMPTarget based class which runs inversion on host.

What type(s) of changes does this code introduce?

Does this introduce a breaking change?

What systems has this change been tested on?

epyc-server

Checklist

ye-luo commented 3 weeks ago

Test this please

prckent commented 3 weeks ago

Test this please

ye-luo commented 3 weeks ago

Many thanks Ye and @jngkim

Any issues found with GPU inversion or is that the next step?

I would like to refactor all the GPU inversion classes before adding one for MKL. We currently choose either one-by-one or all batched based on the delayed update class choice. Two issues

  1. all batched routine may need a lot of scratch space. We can probably subdivide a batch to blocks and do one block at a time. So enable certain degree of flexibility.
  2. The host inverter and gpu inverter classes are integrated in to the DDB separately but we only choose one. I would like to do better C++ and hide the detail of inverters at the DDB level and also improve the APIs.