26 #ifndef LBANN_INCLUDE_LBANN_OPERATORS_BUILDER_MACROS_HPP_INCLUDED 27 #define LBANN_INCLUDE_LBANN_OPERATORS_BUILDER_MACROS_HPP_INCLUDED 32 #include "lbann/proto/operators.pb.h" 44 template <
typename InputT,
typename OutputT, El::Device D>
47 LBANN_ASSERT(proto::ProtoDataType<InputT> == op.input_datatype());
48 LBANN_ASSERT(proto::ProtoDataType<OutputT> == op.output_datatype());
60 #define LBANN_DECLARE_OPERATOR_BUILDER(OP_NAME) \ 61 template <typename DataT, El::Device D> \ 62 std::unique_ptr<Operator<DataT, DataT, D>> build_##OP_NAME##_operator( \ 63 lbann_data::Operator const& op) 72 #define LBANN_DEFINE_OPERATOR_BUILDER(OP_LOWER, OP_NAME) \ 73 template <typename DataT, El::Device D> \ 74 std::unique_ptr<lbann::Operator<DataT, DataT, D>> \ 75 lbann::build_##OP_LOWER##_operator(lbann_data::Operator const& op) \ 77 details::AssertConsistentTypeParameters<DataT, DataT, D>(op); \ 78 return std::make_unique<OP_NAME##Operator<DataT, D>>(); \ 84 #define LBANN_SINGLE_TYPE_OPERATOR_BUILDER_ETI(OPERATOR_NAME, T, D) \ 85 template std::unique_ptr<lbann::Operator<T, T, D>> \ 86 lbann::build_##OPERATOR_NAME##_operator<T, D>(lbann_data::Operator const&) 88 #endif // LBANN_INCLUDE_LBANN_OPERATORS_BUILDER_MACROS_HPP_INCLUDED void AssertConsistentTypeParameters(lbann_data::Operator const &op)
constexpr lbann_data::DeviceAllocation resolve_default_device(lbann_data::DeviceAllocation in)
#define LBANN_ASSERT(cond)