LBANN  0.103.0
LivermoreBigArtificialNeuralNetworkToolkit
io_data_buffer_impl.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 #ifndef LBANN_IO_BUFFER_HPP_IMPL_INCLUDED
28 #define LBANN_IO_BUFFER_HPP_IMPL_INCLUDED
29 
31 
32 namespace lbann {
33 
34 template <typename TensorDataType>
35 template <class Archive>
37 {
38  ar(/*CEREAL_NVP(m_input_buffers)*//*,
39  CEREAL_NVP(m_fetch_data_in_background),
40  CEREAL_NVP(m_data_fetch_future),
41  CEREAL_NVP(m_indices_fetched_per_mb)*/);
42 }
43 
44 template <typename TensorDataType>
46  data_field_type const data_field,
47  lbann_comm* comm)
48 {
49  // Allocate a buffer if the data field doesn't exist
50  if (m_input_buffers.find(data_field) == m_input_buffers.end()) {
51  m_input_buffers[data_field] =
52  std::make_unique<StarVCMatDT<TensorDataType, El::Device::CPU>>(
53  comm->get_trainer_grid());
54 #if defined(LBANN_HAS_GPU)
55  // Pin the memory so that we get efficient GPU data transfer
56  m_input_buffers[data_field]->Matrix().SetMemoryMode(1);
57 #endif // LBANN_HAS_GPU
58  }
59 }
60 
61 } // namespace lbann
62 
63 #endif // LBANN_IO_BUFFER_HPP_IMPL_INCLUDED
void serialize(Archive &ar)
void initialize_buffer_for_data_field(data_field_type const data_field, lbann_comm *comm)
Create a data parallel distributed matrix to hold the input data for the field.
std::string data_field_type
El::Grid & get_trainer_grid()
Definition: comm.hpp:202