Uh oh!
There was an error while loading. Please reload this page.
Isolate metadata serialization from device - #253
Conversation
122dc94 to
0638c8bComparePreviously, the `mgard_x::Metadata` structure 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.
0638c8b to
8d13307Comparekmorel
commented
Jan 5, 2026
@JieyangChen7 Could you review and (hopefully) merge this change? This is necessary for using recent version of protobuf, which cannot be compiled with nvcc. It basically moves all protobuf references out of Metadata.hpp. |
kmorel
commented
Jan 6, 2026
@JieyangChen7 Also, this PR fixes issues with the Spack package that we ran into when updating it for the latest release. See spack/spack-packages#2930. The Spack package now pulls the diff from this PR, and in doing so passes all of its tests. (I've set the patch to stop at the next MGARD release in anticipation of this PR being merged by then.) |
kmorel
commented
Jan 12, 2026
@JieyangChen7 ping |
JieyangChen7
commented
Jan 13, 2026
@kmorel Thanks a lot for this PR! I will review this today/tomorrow and merge it this week if everything looks okay. |
Uh oh!
There was an error while loading. Please reload this page.
kmorel
commented
Jan 13, 2026
Excellent. Thanks for the review. |
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