-
Notifications
You must be signed in to change notification settings - Fork 43
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
Execution spaces: support for memory backends and execution policies #543
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.
Perhaps the biggest PR I have ever reviewed. Amazing work @cnpetra, and while I made 43 comments, they are all relatively minor.
void hiopVectorRajaPar::print(FILE* file/*=nullptr*/, const char* msg/*=nullptr*/, int max_elems/*=-1*/, int rank/*=-1*/) const | ||
template<class MEM, class POL> | ||
void hiopVectorRaja<MEM,POL>:: | ||
print(FILE* file, const char* msg/*=NULL*/, int max_elems/*=-1*/, int rank/*=-1*/) const |
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 default values should be enforced either in header file or here... I commented on another function that had default values removed, so wanted to make sure that functionality wasn't lost.
e59d2e0
to
df6136e
Compare
339dbbb
to
4794a18
Compare
Abstraction needed to support multiple hardware backends. The goal is to allow multiple "backends" to run concurrently, e.g., Cuda/Hip linear algebra with Raja linear algebra. This proposed implementation differentiates between memory backend and execution policy to allow using Raja with Umpire memory, Raja with Cuda/Hip memory, or Raja with std memory.
Passes tests on Crusher (with Umpire memory backend and RAJA exec policies), in addition to all the CIs. Tested with CUDA memory backend and RAJA exec policies manually on Ascent.