-
Notifications
You must be signed in to change notification settings - Fork 14
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
ScaLAPACK-like interface for Cholesky decomposition and eigensolver #886
Conversation
This reverts commit b8d382f.
Just a few thoughts to start a discussion:
with C wrappers
(Note: which |
Thanks @rasolca for the comments.
|
|
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.
Thanks @RMeli for taking this on, this looks already really good.
The main comment I have (as @rasolca) is about the naming. The C interface should be in the top-level namespace and I would name the functions dlaf_*
(dlaf_C_*
feels redundant since we're anyway talking about the C interface).
Regarding organization, a couple of other options are:
- wrap all C++ functionality in
#ifdef __cplusplus
and leave the C interface outside the ifdef; this way we could have the C interface in the same header files - rename the C++ header files to use
.hpp
as the extension and provide a separate, but corresponding set of headers with.h
extensions for the C interface
cscs-ci run |
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 the code was scrutinized so many times over by the group that I skipped most of the cpp and c code.
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.
we need to namespace the custom cmake modules with dlaf_ so that we do not enter in conflict with other findscalapack.cmake
|
Co-authored-by: Mikael Simberg <[email protected]>
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 have no further comments on this. Thanks @RMeli for all the work on this!
cscs-ci run |
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, thanks!
Thanks you all for the extensive reviews and for all the suggestions! |
Introduce a ScaLAPACK-like interface to simplify adoption of DLA-Future, as a drop-in replacement.
This PR is based on work done to integrate DLA-Future in CP2K.
-DDLAF_WITH_INTERFACE
-DDLAF_WITH_C_API
-DDLAF_WITH_SCALAPACK
+interface
+c
+scalapack
variant in Spack packagepika
anddlaf
initialization/finalizationDistribution
,LayoutInfo
, andCommunicationGrid
from ScaLAPACK descriptors (and BLACS contexts)float
double
complex float
complex double
float
double
complex float
complex double
MPI_Thread_Init
in MPI (non-pika) testsThis PR is very preliminary, there is still a lot of work and cleanup to do. This is especially true for the one test of the Cholesky decomposition interface, which are very messy and "hand-made" right now (quick-and-dirty solution to re-create something similar to what we have in CP2K).I'm opening it as a draft PR early to facilitate discussion (about naming conventions, position within the code base, better design patterns, ...).
Early feedback is very welcome as usual.
Notes
[ ] @rasolca suggests to implement something similar toMatrixLocal AllGather(...)
to re-use already implemented checkspika::resume
andpika::suspend
)A lot of credit goes to @mtaillefumier and @msimberg, who worked on the initial integration of the Cholesky decomposition in CP2K.
Spack env:
Build env:
spack -e ~/git/my-spack/envs/local/dlaf/mkl-mt-mpich-cuda build-env dla-future -- bash
CMake:
Fix #610