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

Global Arrays (GA) in QMCPACK #70

Open
bjpalmer opened this issue Dec 7, 2017 · 5 comments
Open

Global Arrays (GA) in QMCPACK #70

bjpalmer opened this issue Dec 7, 2017 · 5 comments

Comments

@bjpalmer
Copy link

bjpalmer commented Dec 7, 2017

Hi,

I'm interested in trying to integrate Global Arrays (GA) into portions of QMCPACK. From what I know of QMCPACK, the Einspline routines seem to be a good place to start. Specifically, I would like to try and use GA to replace large replicated arrays with either distributed or partially distributed arrays. Are there any arrays in the Einspline routines that I could target?

@naromero77
Copy link

Hi bjpalmer,

Thanks for reaching out to us. We normally use GitHub Issues for reporting bugs and requesting features.

It sounds like you are interesting in a collaboration. I am adding the project PI so he is aware. @prckent

I recommend continuing the discussion on the QMCPACK google group.
http://qmcpack.org/google-groups/

@prckent
Copy link
Contributor

prckent commented Dec 8, 2017

I asked @bjpalmer to post here (thanks). I hope someone familiar with the spline tables in the miniapp can provide the necessary pointers. Perhaps some documentation can be written describing this part? The documentation will have to be written shortly regardless.

@grahamlopez
Copy link
Contributor

I think it is fine to have the discussion here.

@bjpalmer somebody will get back to you here with some details. We're currently marshaling resources for various things, but I've added this issue to my current agenda.

@ye-luo
Copy link
Collaborator

ye-luo commented Dec 8, 2017

@bjpalmer Here are a few readings.
This is the first attempt of GA on QMCPACK, the work was done a few years back and some info may be out of date.
DOI: 10.1002/cpe.3748
This is the most recent paper about splines handling and it is what we have in the miniQMC.
DOI: 10.1109/IPDPS.2017.33
I think what you can try is distribute the tiles among a cluster of nodes with GA.
Unfortunately at the moment, the MPI has been removed in the miniQMC which can be a small technical issue.

@markdewing
Copy link
Collaborator

A really short intro to the miniqmc code:
The object to target is einspline_spo. In miniqmc.cpp, it is set up in spo_main.set(), and evaluated with calls to spo.evaluate_vgh (value, gradient, and Hessian) and spo.evaluate_v (just the value).

The large array is found in structures defined in Numerics/Einspline/multi_bspline_structs.h, in the 'coefs' member. The relevant structures are multi_UBspline_3d_d (3 dimensions, double precsion) and multi_UBspline_3d_s (3 dimensions, single precision).

The evaluation routines are in Numerics/Spline2/MultiBspline.hpp

The odd split between Einspline and Spline2 is because the original spline routines were part of the einspline library, which was written in C. The evaluation routines have been updated to use templated C++ (in Spline2), but some of the code still remains in Einspline (structure definitions, allocation, setup routines).

@prckent prckent changed the title GA in QMCPACK Global Arrays (GA) in QMCPACK Dec 11, 2017
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

6 participants