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