Isolate metadata serialization from device #253
+774
−946
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Previously, the
mgard_x::Metadatastructure had inline code that used protobuf to serialize its values into a buffer. This was problematic because the latest version of protobuf does not compile with nvcc. The issue is a feature of C++17 does not support (and it is unclear if it will ever be supported).Get around this problem by moving (the majority of) the serialization code into the MGARD library and compile it with the host compiler. To make this work, the code now has to serialize into a host buffer and then copy into a device buffer. However, the previous implementation simply copied things one at a time into the device buffer, so this should be no less performant.
Fixes: #252