Caffe2 - C++ API
A deep learning, cross platform ML framework
channel_shuffle_dnnlowp_op.h
1 #pragma once
2 
3 #include "caffe2/operators/channel_shuffle_op.h"
4 #include "caffe2/operators/conv_pool_op_base.h"
5 #include "caffe2/quantization/server/conv_pool_dnnlowp_op_base.h"
6 #include "caffe2/quantization/server/dnnlowp.h"
7 #include "caffe2/quantization/server/dnnlowp_op.h"
8 
9 namespace caffe2 {
10 
11 namespace {
12 
13 template <class Context>
14 using ChannelShuffleFp32Op = ChannelShuffleOp<float, Context>;
15 
16 } // namespace
17 
18 template <typename T>
20  : public DNNLowPOp<T, ChannelShuffleFp32Op<CPUContext>> {
21  public:
22  USE_OPERATOR_FUNCTIONS(CPUContext);
23  USE_DNNLOWP_OPERATOR_BASE_FUNCTIONS(T, ChannelShuffleFp32Op<CPUContext>);
24 
25  ChannelShuffleDNNLowPOp(const OperatorDef& operator_def, Workspace* ws);
26 
27  bool RunOnDevice() override;
28 
29  bool RunOnDeviceWithOrderNCHW();
30  bool RunOnDeviceWithOrderNHWC();
31 
32  private:
33  const StorageOrder order_;
34  const int group_;
35 };
36 
37 } // namespace caffe2
The CPU Context, representing the bare minimum of what a Context class in Caffe2 should implement...
Definition: context.h:40
Workspace is a class that holds all the related objects created during runtime: (1) all blobs...
Definition: workspace.h:47
A global dictionary that holds information about what Caffe2 modules have been loaded in the current ...
Definition: blob.h:13
A convenient base class for C2 operators with DNNLOWP engine.
Definition: dnnlowp_op.h:77