-
Notifications
You must be signed in to change notification settings - Fork 41
MPI version #47
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
MPI version #47
Conversation
Added policy's to GooPdf. Added python script to find optimal group/grain size for a given problem.
…transform_reduce'.
…or OMP to not use goofit_policy
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.
Why did you delete the Makefile.common? I do think it's about time to drop the old Makefiles, so maybe should do that soon. Was originally planning to wait till after 2.0, but too much depends on CMake now
CMakeLists.txt
Outdated
@@ -8,6 +8,9 @@ if(EXISTS ${LOC_PATH}) | |||
message(FATAL_ERROR "You cannot build in the source directory (or any directory with a CMakeLists.txt file). Please make a build subdirectory.") | |||
endif() | |||
|
|||
set(OR_GROUPSIZE 128) | |||
set(OR_GRAINSIZE 7) |
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 not enough to get values into C++. You also need to set up a C++ file. See Version.h
.
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.
Ahh, I see. Do you recommend that I make a 'ThrustOverride.h.in' to set these values?
Maybe it would be better to modify these two lines as follows?
add_definitions ("-DOR_GROUPSIZE 128")
add_definitions ("-DOR_GRAINSIZE 128")
Either way, the code will need to be recompiled fully.
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.
I would probably use the CMake.in, but either would work. I'd make them CMake options, too:
set(GOOFIT_MPI_OR_GROUPSIZE "128" CACHE STRING "The group size for goofit MPI")
...
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.
Don't worry about full recompiles, they will happen...
#include <thrust/reduce.h> | ||
#include <thrust/detail/seq.h> | ||
#include <thrust/detail/temporary_array.h> | ||
#include <thrust/system/cuda/detail/bulk.h> |
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.
These break the OMP build (for example, on Travis), since detail/cuda
expects cuda to be available.
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.
You can remove goofit/detail/CLI.hpp
, since the correct one is goofit/detail/CLI11.hpp
Deleting Makefile.common was unintentional, I can add it back in until CMake is hard-required. |
If you add me to your repository, I can help, or you can make a branch in GooFit official (master is protected, but making a new branch should be available to you). |
Good to know about making branches in GooFit official. I have not pushed my committed changes yet, I am still testing them out right now. I think you can checkout the branch I'm working on by creating a new branch, then calling 'git pull https://github.com/galapaegos/GooFit.git dev' into that branch for my current changes, at least that is how I've been getting the changes for rebasing. I am currently testing that setting OMP / MPI is working together, and that the override variables are passed properly. |
…I_CXX_COMPILE_FLAGS
Added CUDA override for group/grain size Fixed code to use THRUST_DEVICE methods for checking CUDA vs OMP versions
Are you ready to merge? You can still work on it in the |
Yes, ready to go! |
The MPI version divides the data based on the number of MPI processes used, so we need to use 'm_iEventsPerTask' when making thrust calls on the whole data.