27 #ifndef LBANN_LAYERS_DISTCONV_ADAPTER_HPP_INCLUDED 28 #define LBANN_LAYERS_DISTCONV_ADAPTER_HPP_INCLUDED 30 #include <unordered_map> 31 #include <unordered_set> 33 #include "distconv/tensor/distribution.hpp" 34 #include "distconv/tensor/tensor.hpp" 44 using Dist = ::distconv::tensor::Distribution;
45 using AbsTensor = ::distconv::tensor::AbstractTensor;
51 using dist_set = std::unordered_set<dc::Dist*>;
58 void mark_updated(
const dc::Dist& d);
59 void mark_invariant(
const dc::Dist& d);
61 void find_valid_overlap();
86 dc::Dist& get_prev_activations_dist();
87 const dc::Dist& get_prev_activations_dist()
const;
89 const dc::Dist& get_activations_dist()
const;
90 dc::Dist& get_prev_error_signals_dist();
91 const dc::Dist& get_prev_error_signals_dist()
const;
93 const dc::Dist& get_error_signals_dist()
const;
95 virtual void setup_fp_tensors();
96 virtual void setup_bp_tensors();
100 virtual void fp_setup() = 0;
101 virtual void fp_postprocess() = 0;
102 virtual void bp_setup() = 0;
103 virtual void bp_postprocess() = 0;
105 virtual bool parent_copy_required(
size_t input_index)
const;
106 virtual bool parent_shuffle_required(
size_t input_index)
const;
107 virtual bool child_copy_required(
size_t output_index)
const;
108 virtual bool child_shuffle_required(
size_t output_index)
const;
110 virtual void dump_activations()
const = 0;
111 virtual void dump_original_activations() = 0;
112 virtual void dump_error_signals()
const = 0;
113 virtual void dump_original_error_signals() = 0;
116 virtual Layer& layer();
117 virtual const Layer& layer()
const;
118 std::string get_name()
const;
120 virtual void setup_prev_activations() = 0;
121 virtual void setup_original_prev_activations() = 0;
122 virtual void setup_activations() = 0;
123 virtual void setup_original_activations() = 0;
125 virtual void setup_prev_error_signals() = 0;
126 virtual void setup_original_prev_error_signals() = 0;
127 virtual void setup_error_signals() = 0;
128 virtual void setup_original_error_signals() = 0;
130 virtual void ensure_prev_activations() = 0;
131 virtual void copy_out_activations() = 0;
132 virtual void ensure_prev_error_signals() = 0;
133 virtual void copy_out_error_signals() = 0;
147 void setup_tensor_shuffle();
148 void adjust_parallel_strategy();
153 #endif // LBANN_LAYERS_DISTCONV_ADAPTER_HPP_INCLUDED std::vector< dc::Dist > m_error_signals_dists
std::unordered_set< dc::Dist * > dist_set
std::vector< dc::Dist > m_prev_activations_dists
std::vector< dc::Dist > m_activations_dists
std::vector< dc::Dist > m_prev_error_signals_dists
Neural network tensor operation.
std::vector< bool > m_child_copy_required
std::vector< bool > m_parent_shuffle_required
virtual void setup_layer(size_t workspace_capacity)
std::vector< bool > m_child_shuffle_required
std::unordered_set< const dc::Dist * > const_dist_set
std::unordered_map< const dc::Dist *, dist_set > m_equivalents
::distconv::tensor::AbstractTensor AbsTensor
::distconv::tensor::Distribution Dist
const_dist_set m_invariants
std::vector< bool > m_parent_copy_required