LBANN  0.103.0
LivermoreBigArtificialNeuralNetworkToolkit
common_cereal_registration.hpp
Go to the documentation of this file.
1 // Copyright (c) 2014-2023, Lawrence Livermore National Security, LLC.
3 // Produced at the Lawrence Livermore National Laboratory.
4 // Written by the LBANN Research Team (B. Van Essen, et al.) listed in
5 // the CONTRIBUTORS file. <lbann-dev@llnl.gov>
6 //
7 // LLNL-CODE-697807.
8 // All rights reserved.
9 //
10 // This file is part of LBANN: Livermore Big Artificial Neural Network
11 // Toolkit. For details, see http://software.llnl.gov/LBANN or
12 // https://github.com/LLNL/LBANN.
13 //
14 // Licensed under the Apache License, Version 2.0 (the "Licensee"); you
15 // may not use this file except in compliance with the License. You may
16 // obtain a copy of the License at:
17 //
18 // http://www.apache.org/licenses/LICENSE-2.0
19 //
20 // Unless required by applicable law or agreed to in writing, software
21 // distributed under the License is distributed on an "AS IS" BASIS,
22 // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
23 // implied. See the License for the specific language governing
24 // permissions and limitations under the license.
26 
27 #include "lbann_config.hpp"
28 
29 #ifdef LBANN_HAS_CEREAL_BINARY_ARCHIVES
30 #define LBANN_ADD_BINARY_SERIALIZE_ETI(...) \
31  template void __VA_ARGS__::serialize(cereal::BinaryOutputArchive&); \
32  template void __VA_ARGS__::serialize(cereal::BinaryInputArchive&); \
33  template void __VA_ARGS__::serialize(RootedBinaryOutputArchive&); \
34  template void __VA_ARGS__::serialize(RootedBinaryInputArchive&)
35 #else
36 #define LBANN_ADD_BINARY_SERIALIZE_ETI(...)
37 #endif
38 
39 #ifdef LBANN_HAS_CEREAL_JSON_ARCHIVES
40 #define LBANN_ADD_JSON_SERIALIZE_ETI(...) \
41  template void __VA_ARGS__::serialize(cereal::JSONOutputArchive&); \
42  template void __VA_ARGS__::serialize(cereal::JSONInputArchive&); \
43  template void __VA_ARGS__::serialize(RootedJSONOutputArchive&); \
44  template void __VA_ARGS__::serialize(RootedJSONInputArchive&)
45 #else
46 #define LBANN_ADD_JSON_SERIALIZE_ETI(...)
47 #endif
48 
49 #ifdef LBANN_HAS_CEREAL_PORTABLE_BINARY_ARCHIVES
50 #define LBANN_ADD_PORTABLE_BINARY_SERIALIZE_ETI(...) \
51  template void __VA_ARGS__::serialize(cereal::PortableBinaryOutputArchive&); \
52  template void __VA_ARGS__::serialize(cereal::PortableBinaryInputArchive&); \
53  template void __VA_ARGS__::serialize(RootedPortableBinaryOutputArchive&); \
54  template void __VA_ARGS__::serialize(RootedPortableBinaryInputArchive&)
55 #else
56 #define LBANN_ADD_PORTABLE_BINARY_SERIALIZE_ETI(...)
57 #endif
58 
59 #ifdef LBANN_HAS_CEREAL_XML_ARCHIVES
60 #define LBANN_ADD_XML_SERIALIZE_ETI(...) \
61  template void __VA_ARGS__::serialize(cereal::XMLOutputArchive&); \
62  template void __VA_ARGS__::serialize(cereal::XMLInputArchive&); \
63  template void __VA_ARGS__::serialize(RootedXMLOutputArchive&); \
64  template void __VA_ARGS__::serialize(RootedXMLInputArchive&)
65 #else
66 #define LBANN_ADD_XML_SERIALIZE_ETI(...)
67 #endif
68 
69 #define LBANN_ADD_ALL_SERIALIZE_ETI(...) \
70  LBANN_ADD_BINARY_SERIALIZE_ETI(__VA_ARGS__); \
71  LBANN_ADD_JSON_SERIALIZE_ETI(__VA_ARGS__); \
72  LBANN_ADD_PORTABLE_BINARY_SERIALIZE_ETI(__VA_ARGS__); \
73  LBANN_ADD_XML_SERIALIZE_ETI(__VA_ARGS__)
74 
75 #define LBANN_REGISTER_DYNAMIC_INIT(NAME) CEREAL_REGISTER_DYNAMIC_INIT(NAME)