Replace buffer tracking with serialization inspection#301
Replace buffer tracking with serialization inspection#301devreal merged 41 commits intoTESSEorg:masterfrom
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 <joseph.schuchart@stonybrook.edu>
Signed-off-by: Joseph Schuchart <joseph.schuchart@stonybrook.edu>
Signed-off-by: Joseph Schuchart <joseph.schuchart@stonybrook.edu>
Signed-off-by: Joseph Schuchart <joseph.schuchart@stonybrook.edu>
Signed-off-by: Joseph Schuchart <joseph.schuchart@stonybrook.edu>
Signed-off-by: Joseph Schuchart <joseph.schuchart@stonybrook.edu>
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 <joseph.schuchart@stonybrook.edu>
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 <joseph.schuchart@stonybrook.edu>
Signed-off-by: Joseph Schuchart <joseph.schuchart@stonybrook.edu>
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 <joseph.schuchart@stonybrook.edu>
We can now inspect the buffers of the tile to extract its memory regions. Signed-off-by: Joseph Schuchart <joseph.schuchart@stonybrook.edu>
Signed-off-by: Joseph Schuchart <joseph.schuchart@stonybrook.edu>
Signed-off-by: Joseph Schuchart <joseph.schuchart@stonybrook.edu>
Signed-off-by: Joseph Schuchart <joseph.schuchart@stonybrook.edu>
This allows us to mark buffers as allocate-only. SyncIn is the default. Ignored in the MANDESS backend. Signed-off-by: Joseph Schuchart <joseph.schuchart@stonybrook.edu>
Signed-off-by: Joseph Schuchart <joseph.schuchart@stonybrook.edu>
Signed-off-by: Joseph Schuchart <joseph.schuchart@stonybrook.edu>
Signed-off-by: Joseph Schuchart <joseph.schuchart@stonybrook.edu>
Signed-off-by: Joseph Schuchart <joseph.schuchart@stonybrook.edu>
f23639d to
04b67fd
Compare
Signed-off-by: Joseph Schuchart <joseph.schuchart@stonybrook.edu>
Signed-off-by: Joseph Schuchart <joseph.schuchart@stonybrook.edu>
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 <joseph.schuchart@stonybrook.edu>
Boost has little use and we currently need the madness serialization for GPU support. Signed-off-by: Joseph Schuchart <joseph.schuchart@stonybrook.edu>
Signed-off-by: Joseph Schuchart <joseph.schuchart@stonybrook.edu>
It's all broken. All of it. Signed-off-by: Joseph Schuchart <joseph.schuchart@stonybrook.edu>
…ATION Signed-off-by: Joseph Schuchart <joseph.schuchart@stonybrook.edu>
The version from apt is 1.74 which is too old so we end up building our own anyway. Signed-off-by: Joseph Schuchart <joseph.schuchart@stonybrook.edu>
Signed-off-by: Joseph Schuchart <joseph.schuchart@stonybrook.edu>
…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 <joseph.schuchart@stonybrook.edu>
The detection is flaky and the benefit little. Signed-off-by: Joseph Schuchart <joseph.schuchart@stonybrook.edu>
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 <joseph.schuchart@stonybrook.edu>
8a2ec53 to
4e6943b
Compare
NVIDIA released CUDA 12.8 which is now the default. Signed-off-by: Joseph Schuchart <joseph.schuchart@stonybrook.edu>
|
CI is passing again. @evaleev let's get this in before something else breaks :) |
Signed-off-by: Joseph Schuchart <joseph.schuchart@stonybrook.edu>
Signed-off-by: Joseph Schuchart <joseph.schuchart@stonybrook.edu>
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.