27 #ifndef LBANN_UTILS_SERIALIZATION_SERIALIZE_MATRICES_HPP_ 28 #define LBANN_UTILS_SERIALIZATION_SERIALIZE_MATRICES_HPP_ 63 template <
typename ArchiveT,
typename T>
64 void save(ArchiveT& ar, ::El::AbstractMatrix<T>
const& mat);
66 template <
typename ArchiveT,
70 void save(ArchiveT& ar, ::El::Matrix<T, D>
const& mat);
89 template <
typename ArchiveT,
92 void do_save(ArchiveT& ar, ::El::Matrix<T, ::El::Device::CPU>
const& mat);
95 template <
typename ArchiveT,
97 lbann::utils::WhenNotTextArchive<ArchiveT> = 1>
98 void do_save(ArchiveT& ar, ::El::Matrix<T, ::El::Device::GPU>
const& mat);
99 #endif // LBANN_HAS_GPU 103 template <
typename ArchiveT,
107 void save(ArchiveT& ar, ::El::Matrix<T, D>
const& mat);
110 template <
typename ArchiveT,
typename T, ::El::Device D>
112 ::El::Matrix<T, D>
const& mat);
114 template <
typename ArchiveT,
116 lbann::utils::WhenNotTextArchive<ArchiveT> = 1>
117 void load(ArchiveT& archive, ::El::AbstractMatrix<T>& mat);
137 template <
typename ArchiveT,
140 lbann::utils::WhenTextArchive<ArchiveT> = 1>
141 void load(ArchiveT& archive, ::El::Matrix<T, D>& mat);
152 template <
typename ArchiveT,
154 lbann::utils::WhenNotTextArchive<ArchiveT> = 1>
155 void load(ArchiveT& archive, ::El::Matrix<T, ::El::Device::CPU>& mat);
157 #if defined LBANN_HAS_GPU 167 template <
typename ArchiveT,
169 lbann::utils::WhenNotTextArchive<ArchiveT> = 1>
170 void load(ArchiveT& archive, ::El::Matrix<T, ::El::Device::GPU>& mat);
171 #endif // defined LBANN_HAS_GPU 173 template <
typename ArchiveT,
typename T, ::El::Device D>
175 ::El::Matrix<T, D>& mat);
201 template <
typename ArchiveT,
203 lbann::utils::WhenTextArchive<ArchiveT> = 1>
204 void save(ArchiveT& ar, ::El::AbstractDistMatrix<T>
const& mat);
215 template <
typename ArchiveT,
217 lbann::utils::WhenTextArchive<ArchiveT> = 1>
218 void load(ArchiveT& ar, ::El::AbstractDistMatrix<T>& mat);
232 template <
typename ArchiveT,
234 lbann::utils::WhenNotTextArchive<ArchiveT> = 1>
235 void save(ArchiveT& ar, ::El::AbstractDistMatrix<T>
const& mat);
246 template <
typename ArchiveT,
248 lbann::utils::WhenNotTextArchive<ArchiveT> = 1>
249 void load(ArchiveT& ar, ::El::AbstractDistMatrix<T>& mat);
251 template <
typename ArchiveT,
253 lbann::utils::WhenTextArchive<ArchiveT> = 1>
255 ::El::AbstractDistMatrix<T>
const& mat);
257 template <
typename ArchiveT,
259 lbann::utils::WhenTextArchive<ArchiveT> = 1>
261 ::El::AbstractDistMatrix<T>& mat);
263 template <
typename ArchiveT,
265 lbann::utils::WhenNotTextArchive<ArchiveT> = 1>
267 ::El::AbstractDistMatrix<T>
const& mat);
269 template <
typename ArchiveT,
271 lbann::utils::WhenNotTextArchive<ArchiveT> = 1>
273 ::El::AbstractDistMatrix<T>& mat);
275 template <
typename ArchiveT,
277 lbann::utils::WhenNotTextArchive<ArchiveT> = 1>
279 ::El::DistMatrix<T, ::El::CIRC, ::El::CIRC>
const& mat);
281 template <
typename ArchiveT,
283 lbann::utils::WhenNotTextArchive<ArchiveT> = 1>
285 ::El::DistMatrix<T, ::El::CIRC, ::El::CIRC>& mat);
320 template <
typename DataT,
325 struct LoadAndConstruct<::El::DistMatrix<DataT, CDist, RDist, Wrap, D>>
329 ::El::DistMatrix<DataT, ::El::CIRC, ::El::CIRC, Wrap, ::El::Device::CPU>;
333 ::h2::meta::EnableWhen<::lbann::utils::IsBuiltinArchive<ArchiveT>,
int> = 0>
334 static void load_and_construct(ArchiveT& ar,
335 cereal::construct<DistMatrixType>& construct);
337 template <
typename ArchiveT>
339 cereal::construct<DistMatrixType>& construct);
343 #endif // LBANN_UTILS_SERIALIZATION_SERIALIZE_MATRICES_HPP_
EnableWhen<!IsTextArchive< ArchiveT > &&IsBuiltinArchive< ArchiveT >, ResultT > WhenNotTextArchive
SFINAE helper for splitting text-based and non-text-based serialization functions.
::El::DistMatrix< DataT, CDist, RDist, Wrap, D > DistMatrixType
Grid const & get_current_grid() noexcept
Get the current grid being used for deserialization.
constexpr El::Device Device
lbann_comm & get_current_comm() noexcept
::El::DistMatrix< DataT, ::El::CIRC, ::El::CIRC, Wrap, ::El::Device::CPU > CircMatrixType
void load(ArchiveT &archive, ::El::AbstractMatrix< T > &mat)
void save(ArchiveT &ar, ::El::AbstractMatrix< T > const &mat)
Save a matrix to a text-based archive.
EnableWhen< IsTextArchive< ArchiveT > &&IsBuiltinArchive< ArchiveT >, ResultT > WhenTextArchive
SFINAE helper for splitting text-based and non-text-based serialization functions.
void do_save(ArchiveT &ar, ::El::Matrix< T, ::El::Device::CPU > const &mat)
Save a CPU matrix to a non-text-based archive.
::distconv::tensor::Distribution Dist