-
Notifications
You must be signed in to change notification settings - Fork 34
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
Initialize tracks on device #52
Conversation
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.
First round of feedback. The core functionality looks good, but the way all the classes integrate is still kind of fuzzy (by necessity, because we don't yet have a high-level plan for how the pieces fit together). How about we talk on Monday's infrastructure meeting about converging on a high-level starting point plan that we can adapt as time goes on?
Thanks for looking this over! It’s definitely still pretty rough and missing some pieces — I was hoping we could go over some things before I went much further with it, so that sounds great. |
@amandalund For sure, and thanks for the hard work! If Monday's infrastructure meeting is too late (or if you want to do a one-on-one rather than have to have other people watching) I'm free from noon to 3ish eastern time. |
a83ec34
to
400a4f1
Compare
@amandalund This is looking great. I had to make a few changes (to fix the build when CUDA is disabled, I wrote stubs for the curand code) that I can move to another branch, and I did a tiny bit of restructuring (moving files to a "detail" namespace). Should I just push those changes on top of your branch? Some of the changes I could put into a separate MR if you'd prefer. |
Awesome, thanks @sethrj! You can just push them here. |
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.
Amanda, this was a huge lift and looks excellent. The higher-level data organization is still a little muddled (as much my fault as it is yours) so let's talk Monday about how to organize the different primary/secondary/track states.
Can one of the admins verify this patch? |
add to whitelist |
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.
A couple more minor things sorry! 😔 It's looking really good though 😄 and these should be quick fixes.
…rom interaction after they are processed
I squashed the branch's history, all tests pass. Excellent work, @amandalund ! |
Related to #119 @pcanal : the reason @amandalund had to add the separable compilation linker flags to the main celeritas library (in src/CMakeLists) was she hit the following build error:
I told her I'd seen a nearly identical error when writing the demo rasterizer the first time; my solution had been to add
|
So the difference between the CI and my environment turned out to be ... the version of cmake. I was using v3.15.4 which does not support yet the flag CMAKE_CUDA_ARCHITECTURES (Noticed that to the warning from cmake "this variable was set but not used"). When I tried with cmake v3.19.3 without adding that flag, the build failed (missing symbol). This is likely due to the fact that this version of cmake no longer propagate the Bottom line, we need to require a version of cmake "greater than" v3.15.4. v3.19.3 and which ever version the CI is using seems to be acceptable version. |
Took me a second, but this makes sense -- with a "default value" (where does that come from? the login node on which celeritas was built, rather than the compute node?) of The CMAKE_CUDA_ARCHITECTURES flag is new as of 3.18. It seems that this error might crop up in other circumstances. Regarding an old cmake ignoring the variable, that's an easy fix: if((CMAKE_VERSION VERSION_LESS 3.18) AND (DEFINED CMAKE_CUDA_ARCHITECTURES))
# error
endif() but are you sure the cuda flags will propagate correctly on older versions of cmake, or that the build works on newer versions of cmake if the architecture flags aren't set consistently between vecgeom and celeritas? This sounds like a headache... |
It only seems to since in the end the build is not correct (see the "invalid kernel" error).
Even with cmake 3.19, if the flags are inconsistent it wont work ... either visibly (missing symbol) or plausibly (but did not observe that) the same way it fails with cmake 3.15. What I think we need is:
|
Just upgrading CMake to 3.19.3 was not sufficient, my CMake run fails:
How should googletest be upgraded? |
@mrguilima That's a warning, not an error. I'll see if that version can be updated. An easy way to avoid the error is to preinstall googletest and link to it externally by providing it in your cmake prefix path. |
Add some of the functionality for initializing tracks on device from primaries and secondaries in a way that is reproducible.