Skip to content
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

1258: add missing fields in 'serialize' methods #1263

Merged
merged 12 commits into from
Feb 25, 2021

Conversation

cz4rs
Copy link
Contributor

@cz4rs cz4rs commented Feb 15, 2021

fixes #1258

@cz4rs cz4rs force-pushed the 1258-serialize-missing-fields branch from dc44904 to cf4519f Compare February 15, 2021 15:02
@DARMA-tasking DARMA-tasking deleted a comment from azure-pipelines bot Feb 15, 2021
@cz4rs
Copy link
Contributor Author

cz4rs commented Feb 15, 2021

This is based on the experimental reports (after reducing the number of false positives).

  • add a bunch of fields completely missed for footprinting purposes
  • change countBytes to | operator - possible after 156: footprint types that are not serializable magistrate#157 was merged (footprinting is available for all non-serializable types using sizeof behind the scenes)
  • add missing fields for regular serialization in tests and some simple cases

remaining cases (marked as skipped):

  • vt::messaging::MsgSharedPtr::impl_
  • vt::messaging::MsgSharedPtr::ptr_
  • vt::pipe::callback::cbunion::GeneralCallback::active_ - custom serialization for a tagged union
  • vt::pipe::callback::cbunion::GeneralCallback::u_
  • vt::pipe::signal::Signal::data_ptr_
  • vt::rdma::BaseTypedHandle::actions_
  • vt::rdma::BaseTypedHandle::lock_
  • vt::rdma::BaseTypedHandle::user_buffer_
  • vt::rdma::Manager::holder_footprint_ - custom serialization for static holder
  • vt::term::interval::IntegralSetBase::hint_ - custom unpacking
  • vt::termination::graph::EpochGraph::successors_ - custom unpacking
  • vt::tests::unit::MyCol::op6_msgs_ - custom behavior
  • vt::trace::Trace::log_file_ - definition unavailable, error: invalid application of ‘sizeof’ to incomplete type ‘vt::trace::vt_gzFile’
  • vt::tutorial::ParticleMsg::a - custom serialization of raw pointer
  • vt::vrt::collection::MigrateMsg::owns_elm_

@DARMA-tasking DARMA-tasking deleted a comment from azure-pipelines bot Feb 15, 2021
@DARMA-tasking DARMA-tasking deleted a comment from azure-pipelines bot Feb 15, 2021
@DARMA-tasking DARMA-tasking deleted a comment from azure-pipelines bot Feb 15, 2021
@cz4rs cz4rs changed the title 1258: add missing fields in 'serialize' 1258: add missing fields in 'serialize' methods Feb 15, 2021
@cz4rs cz4rs force-pushed the 1258-serialize-missing-fields branch 2 times, most recently from 41ed4d1 to abe2e6a Compare February 22, 2021 23:36
@DARMA-tasking DARMA-tasking deleted a comment from azure-pipelines bot Feb 22, 2021
@DARMA-tasking DARMA-tasking deleted a comment from azure-pipelines bot Feb 22, 2021
@github-actions
Copy link

github-actions bot commented Feb 23, 2021

PR tests (gcc-7, ubuntu, mpich, trace runtime, LB)

Build for b1045be

Successful

@github-actions
Copy link

github-actions bot commented Feb 23, 2021

PR tests (gcc-5, ubuntu, mpich)

Build for b1045be

Successful

@github-actions
Copy link

github-actions bot commented Feb 23, 2021

PR tests (clang-3.9, ubuntu, mpich)

Build for b1045be

Successful

@github-actions
Copy link

github-actions bot commented Feb 23, 2021

PR tests (gcc-10, ubuntu, openmpi, no LB)

Build for b1045be

Successful

@github-actions
Copy link

github-actions bot commented Feb 23, 2021

PR tests (clang-5.0, ubuntu, mpich)

Build for b1045be

Successful

@github-actions
Copy link

github-actions bot commented Feb 23, 2021

PR tests (gcc-8, ubuntu, mpich, address sanitizer)

Build for b1045be

Successful

@github-actions
Copy link

github-actions bot commented Feb 23, 2021

PR tests (gcc-6, ubuntu, mpich)

Build for b1045be

Successful

@github-actions
Copy link

github-actions bot commented Feb 23, 2021

PR tests (nvidia cuda 11.0, ubuntu, mpich)

Build for b1045be

/vt/src/vt/vrt/collection/balance/model/raw_data.h(81): warning: integer conversion resulted in a change of sign

/vt/src/vt/vrt/collection/balance/model/raw_data.h(81): warning: integer conversion resulted in a change of sign

/vt/src/vt/vrt/collection/balance/model/raw_data.h(81): warning: integer conversion resulted in a change of sign

/vt/src/vt/vrt/collection/balance/model/linear_model.cc(66): warning: integer conversion resulted in a change of sign

/vt/src/vt/vrt/collection/balance/model/raw_data.h(81): warning: integer conversion resulted in a change of sign

/vt/src/vt/vrt/collection/balance/model/linear_model.cc(66): warning: integer conversion resulted in a change of sign

/vt/src/vt/pipe/callback/proxy_send/callback_proxy_send.h(61): warning: overloaded virtual function "vt::pipe::callback::CallbackBase<SignalT>::trigger_ [with SignalT=vt::pipe::signal::Signal<TestMsg>]" is only partially overridden in class "vt::pipe::callback::CallbackProxySend<MyCol, TestMsg>"
          detected during:
            instantiation of class "vt::pipe::callback::CallbackProxySend<ColT, MsgT> [with ColT=MyCol, MsgT=TestMsg]" 
/usr/include/c++/7/bits/unique_ptr.h(821): here
            instantiation of "std::_MakeUniq<_Tp>::__single_object std::make_unique<_Tp,_Args...>(_Args &&...) [with _Tp=vt::pipe::callback::CallbackProxySend<MyCol, TestMsg>, _Args=<const vt::HandlerType &, vt::vrt::VirtualElmProxyType<MyCol, vt::Index1D> &>]" 
/vt/src/vt/pipe/pipe_manager_tl.impl.h(155): here
            instantiation of "CbkT vt::pipe::PipeManagerTL::makeCallbackSingleProxySend<ColT,T,f,CbkT>(ColT::ProxyType) [with ColT=MyCol, T=TestMsg, f=&colHan, CbkT=vt::pipe::callback::cbunion::CallbackTyped<TestMsg>]" 
/vt/src/vt/pipe/pipe_manager.impl.h(116): here
            instantiation of "vt::Callback<MsgT> vt::pipe::PipeManager::makeSend<ColT,MsgT,f>(ColT::ProxyType) [with ColT=MyCol, MsgT=TestMsg, f=&colHan]" 
/vt/examples/callback/callback.cc(151): here

/vt/src/vt/pipe/callback/proxy_send/callback_proxy_send.h(61): warning: overloaded virtual function "vt::pipe::callback::CallbackBase<SignalT>::trigger_ [with SignalT=vt::pipe::signal::Signal<LinearPb1DJacobi::ReduxMsg>]" is only partially overridden in class "vt::pipe::callback::CallbackProxySend<LinearPb1DJacobi, LinearPb1DJacobi::ReduxMsg>"
          detected during:
            instantiation of class "vt::pipe::callback::CallbackProxySend<ColT, MsgT> [with ColT=LinearPb1DJacobi, MsgT=LinearPb1DJacobi::ReduxMsg]" 
/usr/include/c++/7/bits/unique_ptr.h(821): here
            instantiation of "std::_MakeUniq<_Tp>::__single_object std::make_unique<_Tp,_Args...>(_Args &&...) [with _Tp=vt::pipe::callback::CallbackProxySend<LinearPb1DJacobi, LinearPb1DJacobi::ReduxMsg>, _Args=<const vt::HandlerType &, vt::vrt::VirtualElmProxyType<LinearPb1DJacobi, vt::Index1D> &>]" 
/vt/src/vt/pipe/pipe_manager_tl.impl.h(176): here
            instantiation of "CbkT vt::pipe::PipeManagerTL::makeCallbackSingleProxySend<ColT,T,f,CbkT>(ColT::ProxyType) [with ColT=LinearPb1DJacobi, T=LinearPb1DJacobi::ReduxMsg, f=&LinearPb1DJacobi::checkCompleteCB, CbkT=vt::pipe::callback::cbunion::CallbackTyped<LinearPb1DJacobi::ReduxMsg>]" 
/vt/src/vt/pipe/pipe_manager.impl.h(121): here
            instantiation of "vt::Callback<MsgT> vt::pipe::PipeManager::makeSend<ColT,MsgT,f>(ColT::ProxyType) [with ColT=LinearPb1DJacobi, MsgT=LinearPb1DJacobi::ReduxMsg, f=&LinearPb1DJacobi::checkCompleteCB]" 
/vt/examples/collection/jacobi1d_vt.cc(188): here

/vt/src/vt/pipe/callback/proxy_send/callback_proxy_send.h(61): warning: overloaded virtual function "vt::pipe::callback::CallbackBase<SignalT>::trigger_ [with SignalT=vt::pipe::signal::Signal<LinearPb2DJacobi::ReduxMsg>]" is only partially overridden in class "vt::pipe::callback::CallbackProxySend<LinearPb2DJacobi, LinearPb2DJacobi::ReduxMsg>"
          detected during:
            instantiation of class "vt::pipe::callback::CallbackProxySend<ColT, MsgT> [with ColT=LinearPb2DJacobi, MsgT=LinearPb2DJacobi::ReduxMsg]" 
/usr/include/c++/7/bits/unique_ptr.h(821): here
            instantiation of "std::_MakeUniq<_Tp>::__single_object std::make_unique<_Tp,_Args...>(_Args &&...) [with _Tp=vt::pipe::callback::CallbackProxySend<LinearPb2DJacobi, LinearPb2DJacobi::ReduxMsg>, _Args=<const vt::HandlerType &, vt::vrt::VirtualElmProxyType<LinearPb2DJacobi, vt::Index2D> &>]" 
/vt/src/vt/pipe/pipe_manager_tl.impl.h(176): here
            instantiation of "CbkT vt::pipe::PipeManagerTL::makeCallbackSingleProxySend<ColT,T,f,CbkT>(ColT::ProxyType) [with ColT=LinearPb2DJacobi, T=LinearPb2DJacobi::ReduxMsg, f=&LinearPb2DJacobi::checkCompleteCB, CbkT=vt::pipe::callback::cbunion::CallbackTyped<LinearPb2DJacobi::ReduxMsg>]" 
/vt/src/vt/pipe/pipe_manager.impl.h(121): here
            instantiation of "vt::Callback<MsgT> vt::pipe::PipeManager::makeSend<ColT,MsgT,f>(ColT::ProxyType) [with ColT=LinearPb2DJacobi, MsgT=LinearPb2DJacobi::ReduxMsg, f=&LinearPb2DJacobi::checkCompleteCB]" 
/vt/examples/collection/jacobi2d_vt.cc(226): here

/vt/src/vt/pipe/callback/proxy_send/callback_proxy_send.h(61): warning: overloaded virtual function "vt::pipe::callback::CallbackBase<SignalT>::trigger_ [with SignalT=vt::pipe::signal::Signal<Hello::ReduceMsg>]" is only partially overridden in class "vt::pipe::callback::CallbackProxySend<Hello, Hello::ReduceMsg>"
          detected during:
            instantiation of class "vt::pipe::callback::CallbackProxySend<ColT, MsgT> [with ColT=Hello, MsgT=Hello::ReduceMsg]" 
/usr/include/c++/7/bits/unique_ptr.h(821): here
            instantiation of "std::_MakeUniq<_Tp>::__single_object std::make_unique<_Tp,_Args...>(_Args &&...) [with _Tp=vt::pipe::callback::CallbackProxySend<Hello, Hello::ReduceMsg>, _Args=<const vt::HandlerType &, vt::vrt::VirtualElmProxyType<Hello, vt::Index1D> &>]" 
/vt/src/vt/pipe/pipe_manager_tl.impl.h(176): here
            instantiation of "CbkT vt::pipe::PipeManagerTL::makeCallbackSingleProxySend<ColT,T,f,CbkT>(ColT::ProxyType) [with ColT=Hello, T=Hello::ReduceMsg, f=&Hello::done, CbkT=vt::pipe::callback::cbunion::CallbackTyped<Hello::ReduceMsg>]" 
/vt/src/vt/pipe/pipe_manager.impl.h(121): here
            instantiation of "vt::Callback<MsgT> vt::pipe::PipeManager::makeSend<ColT,MsgT,f>(ColT::ProxyType) [with ColT=Hello, MsgT=Hello::ReduceMsg, f=&Hello::done]" 
/vt/examples/hello_world/hello_world_collection_reduce.cc(64): here

/vt/src/vt/vrt/collection/balance/model/raw_data.h(81): warning: integer conversion resulted in a change of sign

/vt/src/vt/vrt/collection/balance/model/raw_data.h(81): warning: integer conversion resulted in a change of sign

@github-actions
Copy link

github-actions bot commented Feb 23, 2021

PR tests (gcc-9, ubuntu, mpich, zoltan)

Build for b1045be

Successful

@github-actions
Copy link

github-actions bot commented Feb 23, 2021

PR tests (intel 19, ubuntu, mpich)

Build for b1045be

Successful

@github-actions
Copy link

github-actions bot commented Feb 23, 2021

PR tests (clang-8, alpine, mpich)

Build for b1045be

Successful

@github-actions
Copy link

github-actions bot commented Feb 23, 2021

PR tests (intel 18.03, ubuntu, mpich)

Build for b1045be

Successful

@github-actions
Copy link

github-actions bot commented Feb 23, 2021

PR tests (nvidia cuda 10.1, ubuntu, mpich)

Build for b1045be

/vt/src/vt/vrt/collection/balance/model/raw_data.h(81): warning: integer conversion resulted in a change of sign

/vt/src/vt/vrt/collection/balance/model/raw_data.h(81): warning: integer conversion resulted in a change of sign

/vt/src/vt/vrt/collection/balance/model/raw_data.h(81): warning: integer conversion resulted in a change of sign

/vt/src/vt/vrt/collection/balance/model/linear_model.cc(66): warning: integer conversion resulted in a change of sign

/vt/src/vt/vrt/collection/balance/model/raw_data.h(81): warning: integer conversion resulted in a change of sign

/vt/src/vt/vrt/collection/balance/model/linear_model.cc(66): warning: integer conversion resulted in a change of sign

/vt/src/vt/pipe/callback/proxy_send/callback_proxy_send.h(61): warning: overloaded virtual function "vt::pipe::callback::CallbackBase<SignalT>::trigger_ [with SignalT=vt::pipe::signal::Signal<TestMsg>]" is only partially overridden in class "vt::pipe::callback::CallbackProxySend<MyCol, TestMsg>"
          detected during:
            instantiation of class "vt::pipe::callback::CallbackProxySend<ColT, MsgT> [with ColT=MyCol, MsgT=TestMsg]" 
/usr/include/c++/7/bits/unique_ptr.h(821): here
            instantiation of "std::_MakeUniq<_Tp>::__single_object std::make_unique<_Tp,_Args...>(_Args &&...) [with _Tp=vt::pipe::callback::CallbackProxySend<MyCol, TestMsg>, _Args=<const vt::HandlerType &, vt::vrt::VirtualElmProxyType<MyCol, vt::Index1D> &>]" 
/vt/src/vt/pipe/pipe_manager_tl.impl.h(155): here
            instantiation of "CbkT vt::pipe::PipeManagerTL::makeCallbackSingleProxySend<ColT,T,f,CbkT>(ColT::ProxyType) [with ColT=MyCol, T=TestMsg, f=colHan, CbkT=vt::pipe::callback::cbunion::CallbackTyped<TestMsg>]" 
/vt/src/vt/pipe/pipe_manager.impl.h(116): here
            instantiation of "vt::Callback<MsgT> vt::pipe::PipeManager::makeSend<ColT,MsgT,f>(ColT::ProxyType) [with ColT=MyCol, MsgT=TestMsg, f=colHan]" 
/vt/examples/callback/callback.cc(151): here

/vt/src/vt/pipe/callback/proxy_send/callback_proxy_send.h(61): warning: overloaded virtual function "vt::pipe::callback::CallbackBase<SignalT>::trigger_ [with SignalT=vt::pipe::signal::Signal<LinearPb1DJacobi::ReduxMsg>]" is only partially overridden in class "vt::pipe::callback::CallbackProxySend<LinearPb1DJacobi, LinearPb1DJacobi::ReduxMsg>"
          detected during:
            instantiation of class "vt::pipe::callback::CallbackProxySend<ColT, MsgT> [with ColT=LinearPb1DJacobi, MsgT=LinearPb1DJacobi::ReduxMsg]" 
/usr/include/c++/7/bits/unique_ptr.h(821): here
            instantiation of "std::_MakeUniq<_Tp>::__single_object std::make_unique<_Tp,_Args...>(_Args &&...) [with _Tp=vt::pipe::callback::CallbackProxySend<LinearPb1DJacobi, LinearPb1DJacobi::ReduxMsg>, _Args=<const vt::HandlerType &, vt::vrt::VirtualElmProxyType<LinearPb1DJacobi, vt::Index1D> &>]" 
/vt/src/vt/pipe/pipe_manager_tl.impl.h(176): here
            instantiation of "CbkT vt::pipe::PipeManagerTL::makeCallbackSingleProxySend<ColT,T,f,CbkT>(ColT::ProxyType) [with ColT=LinearPb1DJacobi, T=LinearPb1DJacobi::ReduxMsg, f=&LinearPb1DJacobi::checkCompleteCB, CbkT=vt::pipe::callback::cbunion::CallbackTyped<LinearPb1DJacobi::ReduxMsg>]" 
/vt/src/vt/pipe/pipe_manager.impl.h(121): here
            instantiation of "vt::Callback<MsgT> vt::pipe::PipeManager::makeSend<ColT,MsgT,f>(ColT::ProxyType) [with ColT=LinearPb1DJacobi, MsgT=LinearPb1DJacobi::ReduxMsg, f=&LinearPb1DJacobi::checkCompleteCB]" 
/vt/examples/collection/jacobi1d_vt.cc(188): here

/vt/src/vt/pipe/callback/proxy_send/callback_proxy_send.h(61): warning: overloaded virtual function "vt::pipe::callback::CallbackBase<SignalT>::trigger_ [with SignalT=vt::pipe::signal::Signal<LinearPb2DJacobi::ReduxMsg>]" is only partially overridden in class "vt::pipe::callback::CallbackProxySend<LinearPb2DJacobi, LinearPb2DJacobi::ReduxMsg>"
          detected during:
            instantiation of class "vt::pipe::callback::CallbackProxySend<ColT, MsgT> [with ColT=LinearPb2DJacobi, MsgT=LinearPb2DJacobi::ReduxMsg]" 
/usr/include/c++/7/bits/unique_ptr.h(821): here
            instantiation of "std::_MakeUniq<_Tp>::__single_object std::make_unique<_Tp,_Args...>(_Args &&...) [with _Tp=vt::pipe::callback::CallbackProxySend<LinearPb2DJacobi, LinearPb2DJacobi::ReduxMsg>, _Args=<const vt::HandlerType &, vt::vrt::VirtualElmProxyType<LinearPb2DJacobi, vt::Index2D> &>]" 
/vt/src/vt/pipe/pipe_manager_tl.impl.h(176): here
            instantiation of "CbkT vt::pipe::PipeManagerTL::makeCallbackSingleProxySend<ColT,T,f,CbkT>(ColT::ProxyType) [with ColT=LinearPb2DJacobi, T=LinearPb2DJacobi::ReduxMsg, f=&LinearPb2DJacobi::checkCompleteCB, CbkT=vt::pipe::callback::cbunion::CallbackTyped<LinearPb2DJacobi::ReduxMsg>]" 
/vt/src/vt/pipe/pipe_manager.impl.h(121): here
            instantiation of "vt::Callback<MsgT> vt::pipe::PipeManager::makeSend<ColT,MsgT,f>(ColT::ProxyType) [with ColT=LinearPb2DJacobi, MsgT=LinearPb2DJacobi::ReduxMsg, f=&LinearPb2DJacobi::checkCompleteCB]" 
/vt/examples/collection/jacobi2d_vt.cc(226): here

/vt/src/vt/pipe/callback/proxy_send/callback_proxy_send.h(61): warning: overloaded virtual function "vt::pipe::callback::CallbackBase<SignalT>::trigger_ [with SignalT=vt::pipe::signal::Signal<Hello::ReduceMsg>]" is only partially overridden in class "vt::pipe::callback::CallbackProxySend<Hello, Hello::ReduceMsg>"
          detected during:
            instantiation of class "vt::pipe::callback::CallbackProxySend<ColT, MsgT> [with ColT=Hello, MsgT=Hello::ReduceMsg]" 
/usr/include/c++/7/bits/unique_ptr.h(821): here
            instantiation of "std::_MakeUniq<_Tp>::__single_object std::make_unique<_Tp,_Args...>(_Args &&...) [with _Tp=vt::pipe::callback::CallbackProxySend<Hello, Hello::ReduceMsg>, _Args=<const vt::HandlerType &, vt::vrt::VirtualElmProxyType<Hello, vt::Index1D> &>]" 
/vt/src/vt/pipe/pipe_manager_tl.impl.h(176): here
            instantiation of "CbkT vt::pipe::PipeManagerTL::makeCallbackSingleProxySend<ColT,T,f,CbkT>(ColT::ProxyType) [with ColT=Hello, T=Hello::ReduceMsg, f=&Hello::done, CbkT=vt::pipe::callback::cbunion::CallbackTyped<Hello::ReduceMsg>]" 
/vt/src/vt/pipe/pipe_manager.impl.h(121): here
            instantiation of "vt::Callback<MsgT> vt::pipe::PipeManager::makeSend<ColT,MsgT,f>(ColT::ProxyType) [with ColT=Hello, MsgT=Hello::ReduceMsg, f=&Hello::done]" 
/vt/examples/hello_world/hello_world_collection_reduce.cc(64): here

/vt/src/vt/vrt/collection/balance/model/raw_data.h(81): warning: integer conversion resulted in a change of sign

/vt/src/vt/vrt/collection/balance/model/raw_data.h(81): warning: integer conversion resulted in a change of sign

@cz4rs cz4rs force-pushed the 1258-serialize-missing-fields branch from abe2e6a to a719cdd Compare February 23, 2021 12:51
@cz4rs cz4rs marked this pull request as ready for review February 23, 2021 14:05
@cz4rs cz4rs force-pushed the 1258-serialize-missing-fields branch 2 times, most recently from b1e27e7 to 72ecf80 Compare February 23, 2021 17:45
@codecov
Copy link

codecov bot commented Feb 23, 2021

Codecov Report

Merging #1263 (3d62f92) into develop (43dd3d6) will increase coverage by 0.01%.
The diff coverage is 77.77%.

Impacted file tree graph

@@             Coverage Diff             @@
##           develop    #1263      +/-   ##
===========================================
+ Coverage    81.64%   81.66%   +0.01%     
===========================================
  Files          733      733              
  Lines        27912    27919       +7     
===========================================
+ Hits         22788    22799      +11     
+ Misses        5124     5120       -4     
Impacted Files Coverage Δ
src/vt/configs/arguments/app_config.h 100.00% <ø> (ø)
src/vt/rdma/state/rdma_state.h 25.00% <0.00%> (+12.50%) ⬆️
src/vt/rdmahandle/handle_key.h 85.71% <0.00%> (ø)
src/vt/termination/graph/epoch_graph.h 0.00% <0.00%> (ø)
src/vt/messaging/active.h 74.62% <100.00%> (ø)
src/vt/messaging/message/smart_ptr.h 100.00% <100.00%> (ø)
src/vt/pipe/callback/cb_union/cb_raw.h 85.05% <100.00%> (+0.35%) ⬆️
src/vt/rdmahandle/base_handle.h 93.33% <100.00%> (+1.66%) ⬆️
src/vt/rdmahandle/manager.h 100.00% <100.00%> (ø)
src/vt/termination/interval/integral_set.h 92.19% <100.00%> (+0.05%) ⬆️
... and 7 more

@cz4rs cz4rs force-pushed the 1258-serialize-missing-fields branch from 72ecf80 to 3d62f92 Compare February 24, 2021 15:17
active_ = static_cast<CallbackEnum>(val);
s.skip(u_); // only serialize actual content of the union
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

On second look, I realize that specifically in the footprinting case, serializing just the active member hypothetically undercounts the size of the callback itself, even as the payload of the callback is likely to be substantially larger.

A rigorous solution would be something like s.addBytes(sizeof(u_) - sizeof(u_.active_member_)) I think - i.e. round up the leftover and padding bytes and add that.

As with everything else, the case of concern is if we happen to have many instances of a type accumulating unexpectedly, and blowing up memory, and that's the one we really want footprinting to illuminate.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍 for noticing this, fixed it along with NoCB case

@cz4rs cz4rs force-pushed the 1258-serialize-missing-fields branch 6 times, most recently from 06361d4 to 42dd0e1 Compare February 25, 2021 13:37
@cz4rs cz4rs force-pushed the 1258-serialize-missing-fields branch from 42dd0e1 to b9f57fe Compare February 25, 2021 21:31
Fixes nvcc specific error: "base operand of '->' is not a pointer".
Note: both gcc and clang were able to compile previous version.
@cz4rs cz4rs force-pushed the 1258-serialize-missing-fields branch from b9f57fe to b1045be Compare February 25, 2021 21:34
@cz4rs cz4rs merged commit 0a4bacb into develop Feb 25, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

fields omitted during serialization
3 participants