26 #ifndef MXNET_OP_ATTR_TYPES_H_ 27 #define MXNET_OP_ATTR_TYPES_H_ 83 template<
typename xpu>
154 template<
typename T,
typename... Args>
157 auto state =
new T(std::forward<Args>(args)...);
160 new OpState(var, state),
163 delete reinterpret_cast<T*
>(p->state);
176 return *
reinterpret_cast<T*
>(ptr_->state);
185 return ptr_.unique();
188 explicit operator bool()
const {
189 return ptr_ ?
true :
false;
199 OpState(
const OpState& other) =
delete;
200 OpState& operator=(
const OpState& other) =
delete;
203 std::shared_ptr<OpState> ptr_;
221 const std::vector<int>& in_type)>;
236 using FExecType = std::function<ExecType (const NodeAttrs& attrs)>;
246 const std::vector<TBlob>& inputs,
247 const std::vector<OpReqType>& req,
248 const std::vector<TBlob>& outputs)>;
258 const std::vector<NDArray>& inputs,
259 const std::vector<OpReqType>& req,
260 const std::vector<NDArray>& outputs)>;
278 std::vector<ResourceRequest> (
const NodeAttrs& n,
287 const std::vector<NDArray>& inputs,
288 std::vector<NDArray>* outputs)>;
296 const std::vector<TBlob>& inputs,
297 const std::vector<OpReqType>& req,
298 const std::vector<TBlob>& outputs)>;
306 const std::vector<NDArray>& inputs,
307 const std::vector<OpReqType>& req,
308 const std::vector<NDArray>& outputs)>;
319 std::vector<int>* in_attrs,
320 std::vector<int>* out_attrs)>;
326 using FQuantizable = std::function<QuantizeType (const NodeAttrs& attrs)>;
332 using FQuantizedOp = std::function<nnvm::ObjectPtr (const NodeAttrs& attrs)>;
349 const std::string quantize_granularity)>;
367 #endif // MXNET_OP_ATTR_TYPES_H_ std::function< void(const OpStatePtr &state, const OpContext &ctx, const std::vector< TBlob > &inputs, const std::vector< OpReqType > &req, const std::vector< TBlob > &outputs)> FStatefulCompute
Resiger a compute function for stateful operator. OpStatePtr is a pointer type, it's content is mutab...
Definition: op_attr_types.h:248
void reset()
Definition: op_attr_types.h:179
Forward/Backward are synchronous calls.
Engine that schedules all the operations according to dependency.
bool THasDeterministicOutput
Whether the operator always produces the same output given the same input. This enables certain optim...
Definition: op_attr_types.h:231
no operation, do not write anything
Definition: op_attr_types.h:48
The attributes of the current operation node. Usually are additional parameters like axis...
Definition: node.h:119
write gradient to provided space
Definition: op_attr_types.h:50
namespace of mxnet
Definition: api_registry.h:33
std::function< std::vector< ResourceRequest >(const NodeAttrs &n)> FResourceRequest
The resource request from the operator. An operator could register ResourceRequestEx, or ResourceRequest, or neither.
Definition: op_attr_types.h:268
std::function< void(const OpStatePtr &state, const OpContext &ctx, const std::vector< NDArray > &inputs, const std::vector< OpReqType > &req, const std::vector< NDArray > &outputs)> FStatefulComputeEx
Resiger a compute function for stateful operator using NDArray interface. OpStatePtr is a pointer typ...
Definition: op_attr_types.h:260
mshadow::Stream< xpu > * get_stream() const
get mshadow stream from Context
Definition: base.h:371
std::function< bool(const NodeAttrs &attrs)> FNeedRequantize
Register a function to determine if the output of a quantized operator needs to be requantized...
Definition: op_attr_types.h:340
Asynchronous function call.
bool is_train
whether it is training phase
Definition: op_attr_types.h:71
engine::VarHandle get_var() const
Definition: op_attr_types.h:170
Cross device copy operation, this is a special operator that indicates it will copy across devices...
execution time context. The information needed in runtime for actual execution.
Definition: base.h:350
DispatchMode
the dispatch mode of the operator
Definition: op_attr_types.h:123
base class of engine variables.
Definition: engine.h:44
Provides automatic coordination of an auxilary stream with a primary one. This object, upon construction, prepares an aux stream for use by syncing it with enqueued primary-stream work. Object destruction will sync again so future primary-stream work will wait on enqueued aux-stream work. If MXNET_GPU_WORKER_NSTREAMS == 1, then this defaults simply: the primary stream will equal the aux stream and the syncs will be executed as nops. See ./src/operator/cudnn/cudnn_convolution-inl.h for a usage example.
Definition: base.h:315
T & get_state() const
Definition: op_attr_types.h:175
engine::CallbackOnComplete async_on_complete
the callback when operation completes, used by asynchronize ops
Definition: op_attr_types.h:75
header file of tensor data structure and functions This lib requires explicit memory allocation and d...
All the possible information needed by Operator.Forward and Backward This is the superset of RunConte...
Definition: op_attr_types.h:67
std::vector< mxnet::TShape > ShapeVector
The result holder of shape of each NodeEntry in the graph.
Definition: tuple.h:820
QuantizeType
the quantization type of the operator
Definition: op_attr_types.h:136
std::function< ExecType(const NodeAttrs &attrs)> FExecType
Execution mode of this operator.
Definition: op_attr_types.h:236
virtual VarHandle NewVariable()=0
Allocate a new variable, the variable can then be used to schedule the operation concurrently via dep...
static OpStatePtr Create(Args &&...args)
Definition: op_attr_types.h:155
bool need_grad
whether there is a backward phase to compute gradients.
Definition: op_attr_types.h:69
SyncedGPUAuxStream get_gpu_aux_stream() const
get auxilary gpu stream auto-syncing object from Context
Definition: op_attr_types.h:92
std::function< void(const nnvm::NodeAttrs &attrs, const std::vector< NDArray > &inputs, std::vector< NDArray > *outputs)> FNDArrayFunction
Register an operator called as a NDArray function.
Definition: op_attr_types.h:288
std::function< nnvm::ObjectPtr(const NodeAttrs &attrs)> FQuantizedOp
Register a quantized node creation function based on the attrs of the node.
Definition: op_attr_types.h:332
Global resource allocation handling.
virtual void DeleteVariable(SyncFn delete_fn, Context exec_ctx, VarHandle var)=0
Schedule the deletion of a variable.
std::function< OpStatePtr(const NodeAttrs &attrs, Context ctx, const mxnet::ShapeVector &in_shape, const std::vector< int > &in_type)> FCreateOpState
Create a Layer style, forward/backward operator. This is easy to write code that contains state...
Definition: op_attr_types.h:221
perform an inplace write, This option only happen when Target shares memory with one of input argumen...
Definition: op_attr_types.h:56
A subgraph execution should happen in the main thread, instead of in the execution engine...
bool unique() const
Definition: op_attr_types.h:184
OpReqType
operation request type to Forward and Backward
Definition: op_attr_types.h:46
std::function< void(const nnvm::NodeAttrs &attrs, const OpContext &ctx, const std::vector< NDArray > &inputs, const std::vector< OpReqType > &req, const std::vector< NDArray > &outputs)> FComputeEx
Register an NDArray compute function for simple stateless forward only operator.
Definition: op_attr_types.h:308
std::vector< Resource > requested
Resources requested by the operator.
Definition: op_attr_types.h:77
RunContext run_ctx
RunContext related resources.
Definition: op_attr_types.h:73
static Context CPU(int32_t dev_id=0)
std::function< void(const nnvm::NodeAttrs &attrs, const OpContext &ctx, const std::vector< TBlob > &inputs, const std::vector< OpReqType > &req, const std::vector< TBlob > &outputs)> FCompute
Register a compute function for simple stateless forward only operator.
Definition: op_attr_types.h:298
OnComplete Callback to the engine, called by AsyncFn when action completes.
Definition: engine.h:73
SyncedGPUAuxStream get_gpu_aux_stream() const
get an RAII object that transparently handles the syncing of the auxiliary stream.
Definition: base.h:379
std::function< bool(const NodeAttrs &attrs, const int dev_mask, DispatchMode *dispatch_mode, std::vector< int > *in_attrs, std::vector< int > *out_attrs)> FInferStorageType
Register a storage and dispatch mode inference function based on storage types of the inputs and outp...
Definition: op_attr_types.h:320
std::function< std::vector< ResourceRequest >(const NodeAttrs &n, const int dev_mask, const DispatchMode dispatch_mode)> FResourceRequestEx
The resource request from the operator. An operator could register ResourceRequestEx, or ResourceRequest, or neither. If an operator registers both ResourceRequestEx and ResourceRequest, ResourceRequest is ignored.
Definition: op_attr_types.h:280
std::function< std::vector< int >(const NodeAttrs &attrs)> FNeedCalibrateInput
Register a function to determine if the input of a quantized operator needs to be calibrated...
Definition: op_attr_types.h:356
add to the provided space
Definition: op_attr_types.h:58
std::function< bool(const NodeAttrs &attrs, const size_t index, const std::string quantize_granularity)> FAvoidQuantizeInput
Register a function to determine if the input of a quantized operator needs to be quantized...
Definition: op_attr_types.h:349
std::function< std::vector< int >(const NodeAttrs &attrs)> FNeedCalibrateOutput
Register a function to determine if the output of a quantized operator needs to be calibrated...
Definition: op_attr_types.h:363
ExecType
the execution type of the operator
Definition: op_attr_types.h:99
Context information about the execution environment.
Definition: base.h:102
mshadow::Stream< xpu > * get_stream() const
get mshadow stream from Context
Definition: op_attr_types.h:84
std::function< QuantizeType(const NodeAttrs &attrs)> FQuantizable
Register a quantized node creation function based on the attrs of the node.
Definition: op_attr_types.h:326
Data structures that can appear in operator attributes.
Operator state. This is a pointer type, its content is mutable even if OpStatePtr is const...
Definition: op_attr_types.h:149
computaion stream structure, used for asynchronous computations
Definition: tensor.h:384