Closed tkoskela closed 1 month ago
We want the f-exx developed by @lionelalexandre
exx_kernel_default.f90
matrix_multiply
m_kern_exx_cri
exx_phi_on_grid
exx_poisson
exx_evalpao
exx_matmult
test_004
and test_005
EXX.GridSpacing
to adjust the amount of work. Lower is more work.test_004
in f-exx-opt
in serial, understand hotspotstest_004
f-exx-opt
into develop
r
is recomputed for every combination of quantum numbers when x
,y
and z
don't change. Check the other places where evaluate_pao
is called.r
The kpart
loop in https://github.com/OrderN/CONQUEST-release/blob/41cf7e2b6c77fbf6a6ac5d6731858030697f53a6/src/exx_kernel_default.f90#L442
duplicates large parts of the main loop in https://github.com/OrderN/CONQUEST-release/blob/41cf7e2b6c77fbf6a6ac5d6731858030697f53a6/src/multiply_module.f90#L217
We need to understand how to reduce the duplication. I would like to see if we can call mat_mult
from exx_kernel_default
instead of replicating the code without making too disruptive modifications to mat_mult
. Keeping in mind the changes in #290
exx_poisson : that would be a very difficult task and I am not sure this is possible (using MPI)
exx_evalpao : actually r is not needed anymore (some vestige of previous versions). I don't see clearly how to avoid the 6 nested loops for evalpao but maybe there is something to do.
The kpart loop in : (maybe to clarify) as you noticed this part of the code has been inspired by the mat_mult kernel. The idea behind was to get access locally to matrix elements which were managed by remote nodes. At that time, this simplest way to duplicate mat_mult fo this purpose. Now, I think it is possible to use mat_mult 'as if' to get access to the matrix elements, to store them, and then to compute EXX. We may need to discuss about this.
Let's close this issue as completed by #324 and start a new one for the follow-up work.
Collaborators in Bordeaux are developing this and could use some help. Not sure how much is in the main branch.