LBANN  0.103.0
LivermoreBigArtificialNeuralNetworkToolkit
comm_nb_request.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_COMM_NB_REQUEST_HPP_INCLUDED
28 #define LBANN_COMM_NB_REQUEST_HPP_INCLUDED
29 
30 #include "lbann_config.hpp"
31 
32 #ifdef LBANN_HAS_ALUMINUM
33 #include <Al.hpp>
34 #endif // LBANN_HAS_ALUMINUM
35 
36 namespace lbann {
37 
38 namespace Al {
39 
42 {
43 public:
44  using req_type = int;
45  static constexpr req_type null_req = 0;
46 };
47 
48 // Define aliases for Aluminum backends
49 #ifdef LBANN_HAS_ALUMINUM
50 using mpi_backend = ::Al::MPIBackend;
51 #else
53 #endif // LBANN_HAS_ALUMINUM
57 #if defined(LBANN_HAS_ALUMINUM) && defined(AL_HAS_NCCL)
58 using nccl_backend = ::Al::NCCLBackend;
59 // LBANN does its own synchronization on this.
60 #else
62 #endif // defined(LBANN_HAS_ALUMINUM) && defined(AL_HAS_NCCL)
65 #if defined(LBANN_HAS_ALUMINUM) && defined(AL_HAS_HOST_TRANSFER)
66 using hosttransfer_backend = ::Al::HostTransferBackend;
67 #else
69 #endif // defined(LBANN_HAS_ALUMINUM) && defined(AL_HAS_HOST_TRANSFER)
73 
75 struct request
76 {
80  MPI_Request raw_mpi_req = MPI_REQUEST_NULL;
81 };
82 } // namespace Al
83 
84 } // namespace lbann
85 
86 #endif // LBANN_COMM_NB_REQUEST_HPP_INCLUDED
static const hosttransfer_req_type hosttransfer_null_req
static constexpr req_type null_req
static const mpi_req_type mpi_null_req
mpi_backend::req_type mpi_req_type
nccl_backend::req_type nccl_req_type
hosttransfer_backend::req_type hosttransfer_req_type
static const nccl_req_type nccl_null_req