-
Notifications
You must be signed in to change notification settings - Fork 12
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
Replace buffer tracking with serialization inspection #301
Conversation
I think this is ready. However, we can only achieve such introspection using the madness archive. With boost, we would have to specialize traits on the inspector archive, which is not possible because the inspector archive is templated on the callable. Even if we were to type-erase the callable into I don't think this is an issue. Moving from boost to madness serialization is not hard and users have to touch their data structures anyway to integrate buffers. More reliance on madness though, at least for the time being. |
Nevermind, not ready yet. This requires ICLDisco/parsec#695 to land in PaRSEC. Reverted back to draft. |
d84ae7b
to
99dd848
Compare
da4545c
to
f23639d
Compare
We have been tracking the buffers of structures by having the buffer register itself with some metadata. This is clumsy and error-prone (no support for nesting, for example). Now we use a specialized archive to inspect all members of a value and apply some functor to each buffer (or its internal parsec data). This is also the first step towards a structure derived from parsec_data_copy_t to better manage the life-time of the host copy. We now only allow shared_ptr for non-owning buffers so some adjustments must be made by users. Signed-off-by: Joseph Schuchart <[email protected]>
Signed-off-by: Joseph Schuchart <[email protected]>
Signed-off-by: Joseph Schuchart <[email protected]>
Signed-off-by: Joseph Schuchart <[email protected]>
Signed-off-by: Joseph Schuchart <[email protected]>
Signed-off-by: Joseph Schuchart <[email protected]>
We cannot use boost serialization to inspect objects for the buffers they contain because boost archives cannot be templated properly and need explicit instantiations for its archives, which is impossible for the BufferInspectorArchive. We just rely on madness from now on. Signed-off-by: Joseph Schuchart <[email protected]>
For now only allow T[] on smart pointers passed to buffers. We may want to support both T and T[] on ttg::Buffer so we can distinguish the two later. Signed-off-by: Joseph Schuchart <[email protected]>
Signed-off-by: Joseph Schuchart <[email protected]>
The data copy will call deallocate no matter what, so be graceful. We will still catch cases where we try to allocate through the empty allocator. Signed-off-by: Joseph Schuchart <[email protected]>
We can now inspect the buffers of the tile to extract its memory regions. Signed-off-by: Joseph Schuchart <[email protected]>
Signed-off-by: Joseph Schuchart <[email protected]>
Signed-off-by: Joseph Schuchart <[email protected]>
Signed-off-by: Joseph Schuchart <[email protected]>
This allows us to mark buffers as allocate-only. SyncIn is the default. Ignored in the MANDESS backend. Signed-off-by: Joseph Schuchart <[email protected]>
Signed-off-by: Joseph Schuchart <[email protected]>
Signed-off-by: Joseph Schuchart <[email protected]>
Signed-off-by: Joseph Schuchart <[email protected]>
Signed-off-by: Joseph Schuchart <[email protected]>
f23639d
to
04b67fd
Compare
Signed-off-by: Joseph Schuchart <[email protected]>
Signed-off-by: Joseph Schuchart <[email protected]>
Signed-off-by: Joseph Schuchart <[email protected]>
Extract the shared ptr from the mohndl and tie the shared_ptr<T[]> to the life-time of the mohndl shared ptr. Signed-off-by: Joseph Schuchart <[email protected]>
Boost has little use and we currently need the madness serialization for GPU support. Signed-off-by: Joseph Schuchart <[email protected]>
Signed-off-by: Joseph Schuchart <[email protected]>
It's all broken. All of it. Signed-off-by: Joseph Schuchart <[email protected]>
…ATION Signed-off-by: Joseph Schuchart <[email protected]>
The version from apt is 1.74 which is too old so we end up building our own anyway. Signed-off-by: Joseph Schuchart <[email protected]>
Signed-off-by: Joseph Schuchart <[email protected]>
…revious target, exclude it from the build unless TTG_PARSEC_USE_BOOST_SERIALIZATION=ON
This reverts commit 65a61f0.
We should specify a standard ourselves independent of CI. Signed-off-by: Joseph Schuchart <[email protected]>
The detection is flaky and the benefit little. Signed-off-by: Joseph Schuchart <[email protected]>
5ebbc79
to
8a2ec53
Compare
CI is passing now. Please review :) |
Don't even bother trying to create a target if !TTG_PARSEC_USE_BOOST_SERIALIZATION Signed-off-by: Joseph Schuchart <[email protected]>
8a2ec53
to
4e6943b
Compare
NVIDIA released CUDA 12.8 which is now the default. Signed-off-by: Joseph Schuchart <[email protected]>
CI is passing again. @evaleev let's get this in before something else breaks :) |
Signed-off-by: Joseph Schuchart <[email protected]>
Signed-off-by: Joseph Schuchart <[email protected]>
4fb04da
to
b502ac8
Compare
We have been tracking the buffers of structures by having the buffer register itself with some metadata. This is clumsy and error-prone (no support for nesting, for example). Now we use a specialized archive to inspect all members of a value and apply some functor to each buffer (or its internal parsec data).
This is also the first step towards a structure derived from parsec_data_copy_t to better manage the life-time of the host copy. We now only allow shared_ptr for non-owning buffers so some adjustments must be made by users.