-
Notifications
You must be signed in to change notification settings - Fork 135
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
Add syclSolverInverter #4118
Add syclSolverInverter #4118
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.
LGTM. Still non-ANL approval
Thank you. If I have oneAPI 2022.2 and no GPU, will this run and what is the cmake invocation to do so? |
ENABLE_SYCL=ON. The added code doesn't require OpenMP offload. |
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.
Small question on CMake and testing should not have unecessary #ifdef QMC_COMPLEX. Beyond PR scope need to resolve QMCPACK naming convention vs. solverwrapper classes.
* @tparam T_FP high precision for matrix inversion, T_FP >= T | ||
*/ | ||
template<typename T_FP> | ||
class syclSolverInverter |
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 think it would be nice if this followed the naming conventions for classes. Although an unfortunate precedent has be set by other solver wrapper classes.
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.
Let's keep it aligned as other programming models. rocSolver, cuSolver.
@@ -873,7 +873,7 @@ if(ENABLE_SYCL) | |||
endif() | |||
add_library(SYCL::host INTERFACE IMPORTED) | |||
add_library(SYCL::device INTERFACE IMPORTED) | |||
find_package(IntelDPCPP REQUIRED CONFIGS IntelDPCPPConfig-modified.cmake PATHS ${PROJECT_CMAKE}) | |||
find_package(IntelDPCPP REQUIRED CONFIGS IntelDPCPPConfig-modified.cmake PATHS ${PROJECT_CMAKE} NO_DEFAULT_PATH) |
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.
Not sure why NO_DEFAULT_PATH here. I think this just prevents finding the package in the location CMake does/will eventually think is standard? Can't this still be overridden with -DIntelDPCPP_ROOT=...
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.
IntelDPCPPConfig-modified.cmake
is my in house modified version. So it should not be looked up outside qmcpack root.
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.
Ah I read this too fast, makes sense.
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.
Since my remaining concerns apply equally to the other solver wrappers it makes sense to address them in other PRs. So this LGTM
Test this please |
Please review the developer documentation
on the wiki of this project that contains help and requirements.
Proposed changes
This PR contains the changes provided by Ye's review #9(ye-luo#9) and #10.
What type(s) of changes does this code introduce?
Added src/QMCWaveFunctions/Fermion/syclSolverInverter.hpp
Replaced abort with proper error handling method
Removed a dead code
Does this introduce a breaking change?
What systems has this change been tested on?
Checklist