Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

GPU TODO list #798

Open
3 of 10 tasks
GVigne opened this issue Dec 9, 2022 · 0 comments
Open
3 of 10 tasks

GPU TODO list #798

GVigne opened this issue Dec 9, 2022 · 0 comments
Labels
discussion Discussion thread of broader scope gpu Label for GPU-related issues

Comments

@GVigne
Copy link
Contributor

GVigne commented Dec 9, 2022

Following @antoine-levitt's advice, here is a short TODO list of additional features worth implementing for GPUs.

Short term (see also #794)

  • CI (see Add GPU CI via gitlab #796 )
  • Add some more developer information to the docs. In particular add that CI is run automatically only when on:
    • master
    • a branch with a name ending in gpu (e.g. lobpcg-gpu)
    • when manually triggered
    • on the DFTK.jl main repo (i.e. no forks)
  • Find out what is happening with the drop! function and speed up the mapreduce part
  • Speed up the view when doing an FFT. Removing the bounds check doesn't seem to do much, so maybe there is no "trick" to make it go faster. Instead, we could work on the mapping. For example, Antoine pointed out that if basis.variational is false, the mapping is the identity, so we could do:
if basis.variational 
    f_fourier .= view(f_real, kpt.mapping)
else
    f_fourier .= f_real

Medium/long term

  • Xc term: I think a good way to start with this is by working on the DftFunctionals package
  • Compatibility with automatic differentiation
  • Get stresses to work

Miscellaneous

  • Support for an other architecture: in theory, one only has to define the corresponding DFTK.Architecture. However, it is highly likely that there will be a few bugs or missing features (for example linear algebra functions) from the corresponding GPU package.
  • Add support for more solvers (NLsolve, CROP). There have been discussions of removing the dependency in NLsolve from DFTK: the replacement solvers should keep in mind GPU programming and try to be compatible.
  • Investigate on the gmres! function from IterativeSolvers: it doesn't seem to be CUDA-compatible for now. Making it CUDA compatible would allow us to use the χ0Mixing.
@mfherbst mfherbst added the discussion Discussion thread of broader scope label Dec 12, 2022
@mfherbst mfherbst added the gpu Label for GPU-related issues label Jan 30, 2023
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
discussion Discussion thread of broader scope gpu Label for GPU-related issues
Projects
None yet
Development

No branches or pull requests

2 participants