26 #ifndef LBANN_INCLUDE_LBANN_OPERATORS_MATH_MATH_BUILDERS_IMPL_HPP_INCLUDED 27 #define LBANN_INCLUDE_LBANN_OPERATORS_MATH_MATH_BUILDERS_IMPL_HPP_INCLUDED 39 #include "lbann/proto/operators.pb.h" 41 template <
typename DataT, El::Device D>
42 std::unique_ptr<lbann::Operator<DataT, DataT, D>>
43 lbann::build_clamp_operator(lbann_data::Operator
const& op)
45 details::AssertConsistentTypeParameters<DataT, DataT, D>(op);
46 lbann_data::ClampOperator params;
48 return std::make_unique<ClampOperator<DataT, D>>(params.min(), params.max());
51 template <
typename DataT, El::Device D>
52 std::unique_ptr<lbann::Operator<DataT, El::Base<DataT>, D>>
55 details::AssertConsistentTypeParameters<DataT, El::Base<DataT>, D>(op);
56 return std::make_unique<AbsOperator<DataT, D>>();
59 template <
typename DataT, El::Device D>
60 std::unique_ptr<lbann::Operator<DataT, DataT, D>>
61 lbann::build_select_operator(lbann_data::Operator
const& op)
63 details::AssertConsistentTypeParameters<DataT, DataT, D>(op);
64 lbann_data::SelectOperator params;
66 return std::make_unique<SelectOperator<DataT, D>>(params.value(),
67 params.constant_if_true(),
68 params.constant_if_false(),
69 params.value_if_true(),
70 params.value_if_false(),
74 #define LBANN_DEFINE_BIN_WITH_CONSTANT_BUILDER(OP_NAME, OP_LOWER_NAME) \ 75 template <typename DataT, El::Device D> \ 76 std::unique_ptr<lbann::Operator<DataT, DataT, D>> \ 77 lbann::build_##OP_LOWER_NAME##_operator(lbann_data::Operator const& op) \ 79 details::AssertConsistentTypeParameters<DataT, DataT, D>(op); \ 80 lbann_data::OP_NAME##Operator params; \ 81 LBANN_ASSERT(op.parameters().UnpackTo(¶ms)); \ 82 return std::make_unique<OP_NAME##Operator<DataT, D>>(params.constant()); \ 90 greater_equal_constant)
99 #undef LBANN_DEFINE_BIN_WITH_CONSTANT_BUILDER 150 #endif // LBANN_INCLUDE_LBANN_OPERATORS_MATH_MATH_BUILDERS_IMPL_HPP_INCLUDED
#define LBANN_DEFINE_OPERATOR_BUILDER(OP_LOWER, OP_NAME)
A utility macro for easily adding a default builder with dynamic type-checking assertions.
#define LBANN_ASSERT(cond)
#define LBANN_DEFINE_BIN_WITH_CONSTANT_BUILDER(OP_NAME, OP_LOWER_NAME)
std::unique_ptr< Operator< DataT, El::Base< DataT >, D > > build_abs_operator(lbann_data::Operator const &op)