-
Notifications
You must be signed in to change notification settings - Fork 26
Sync3n Initial Add #1108
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
Sync3n Initial Add #1108
Conversation
b522147 to
acf553d
Compare
|
Adding some notes. I've created a CUDA kernel for the slow operation There are some concerns/bugs between the python, matlab, and mex versions that need to be addressed, but they would be minor changes. Josh might be working them out in his current D2 work now anyway. The original Mex codes of this thead-loop structure all appear to have a common threading ABA bug... I have fixed that in my CUDA version. I will be able to mimic the kernel and supporting code I wrote for the other similar mex codes (probability and triangle scores for the same speedups, but need to work on a few other projects first before I come back to that. |
|
Some updates. Today I was able to complete a rough draft of the After that I can move onto merging the |
|
For 1000 images ... |
|
Triangle scores is also fast now: Added a test file to compare between the host python and cupy launched CUDA codes. Broke the CUDA codes out into their own source file so that it is easier to keep it clean. Merged sync3n_cupy into this branch. |
c36fec1 to
b05d4c2
Compare
|
Fixed up some typing concerns. Added some minimal docstrings. Added a unit test that conditionally compares the host (numpy) implementation to gpu (cupy launched cuda). This test is coded to automatically skip when |
|
Added 3 tests to compare dummy data with results from MATLAB as a sanity check of the low level function port. Added some minimal up casting to allow running the underlying sync3n methods in both singles and doubles. This is tested with parameterized fixture. Would still recommend using doubles with our CL codes for now. |
|
Added a unit test based on CL Sync 2N and tried to complete most of the docstrings. Found a small bug in the CL sync tests (doesn't appear it was actually testing both types, just running doubles twice). |
j-c-c
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This is great! Just a few things.
|
Going to wait until after |
97b4368 to
df83b6e
Compare
|
Running with JSB2017 Matlab class averages. |
For the 80s run at 89 pixels the Sweighting solve was infeasable (I'll look into that more, happens too much). Without Sweighting we did produce a reasonable molecule. Average aligned rotation error was ~16* wrt MATLAB, FSC was 80A wrt to EMDB. Not very good, but better than before... I noticed MATLAB was run using twice as many |
This reverts commit bd34d3d.
See #1107 . This adapts some of the CL code brought over for Cn molecules which used the 3N sync matrix method to the C1 case.
Todo
I quickly hacked this together enough to minimally function. I'm thinking to take on the 1-3 todo items while Josh is out and pass it along to him to finish integrating.