-
Notifications
You must be signed in to change notification settings - Fork 41
MPI ready GooFit with Application Object #36
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
Conversation
This is a relic from, the integration of MCBooster. As we don't use gitmodules we can get rid of this.
@galapaegos, please see if this fills your requirements for MPI setup/teardown. |
Conflicts: README.md
Ready for review, this is becoming too important to live outside of master. |
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.
Looks good. A few things I noticed that will need to be updated for a future commit:
- CountingVariable needs to be used for any Variable that does number tracking and referenced as an event number. I have the fixes for these in my commits.
- MPI_CXX_COMPILE_FLAGS isn't passed properly to the generated Makefile. Adding 'set (CMAKE_CXX_FLAGS "-DGOOFIT_MPI")' fixes the issue, though this may be done differently?
- I think setting the device with the Application object will need to be done prior to MPI calls, and we will overwrite this value based on the number of MPI processes and GPU's, but allow an override for 1 process to set the device.
Sorry about the flags, I don't have any real MPI code in the branch, so didn't catch that. Do you mean the |
No worries! The flag being set '-DGOOFIT_MPI' is correct. MPI_CXX_COMPILE_FLAGS is not being included when the compilation actually happens, I think that is the issue. When I turned on the verbosity to show the compilation flags, I did not see the '-DGOOFIT_MPI' flag being passed. |
I think |
I believe you've added class CountVariable : public Variable {
using Variable::Variable;
}; |
This MR adds an application object to GooFit. These is based on my CLI11 library, and syntax for it in GooFit is based on ROOT's TApplication object:
FindMPI and MPI setup/teardown are included. This also adds default command line arguments:
To see a full-scale usage of this, look at the pipipi0 example. The syntax for calling that one has changed, please see the help. All other examples were directly converted. Two examples (multiply and convolution) were also cleaned up to remove memory leakage.
Comments and suggestions on both this and the CLI11 library are appreciated. Once GooFit hits version 2.0, I'll also version CLI11 to 1.0. This PR address #33.