-
Notifications
You must be signed in to change notification settings - Fork 3
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
[WIP] Diffuse #29
base: master
Are you sure you want to change the base?
[WIP] Diffuse #29
Conversation
@apeck12 here is how this works You can access the python interface to the new code by doing
The (cython-provided) python interface is here: The C++ code implementing the (almost certainly incorrect) correlation matrix is here: Note that
In C-land, this will be accessed as a flattened array, so |
@apeck12 regarding testing & what works now: What works: If you pass a Adding new test: Add your reference implementation to the top of the If you add stuff and it doesn't work right off the bat, push the new test an I can help work to make the code correct. |
TODO:
|
@apeck12 benchmark for a "large" system and one q-vector
For 10,000,000 q-vectors, we're talking ~11,000 cpu-hours, which is too many! So we need to keep thinking. Note parallelization over q-vecs is trivial. |
Going to the isotropic approximation seems to make little difference. Going to GPU is possible/easy. |
I've been using the GPU code exclusively for the Thor CypA and ECR simulations. Do you mind if I switch the test case for TestDiffuseScatter from the 512_atom_benchmark.xyz to pentagon.pdb? |
Also, is there a Cython wrapper for the calculation with isotropic V? |
|
@apeck12 cool. I will work on this and fix things up. Thanks! |
revised reference implementation
@apeck12 latest commit includes functional C++ code splitting diffuse/bragg. Speed improvements to come, but you can start using it if you want. Current best estimate for 1M q-vectors & 1500 atoms is ~30,000 cpu-seconds (8 hrs). Since we are in a rapidly changing development mode, but have decent tests, I would recommend checking out the latest copy and then always running the tests (at least |
@tjlane This is my call to the Thor code: Any thoughts on what might be up? I think it should be the same version of cuda that I was using on the master branch without issue. |
@apeck12 |
Apeck12 diffuse
Adding C++ code for computing the MVN diffuse scatter model.
$ time ./cputest
10000 q-vectors :: 1000 atoms
remember: linear in q-vectors, quadratic in atomsCPP OUTPUT:
0.000000
0.000000
real 0m57.507s
user 0m56.895s
sys 0m0.313s