|  | // Copyright 2004-present Facebook. All Rights Reserved. | 
|  |  | 
|  | // File: negate_gradient_op.h | 
|  |  | 
|  | #pragma once | 
|  | #include "caffe2/core/context.h" | 
|  | #include "caffe2/core/operator.h" | 
|  |  | 
|  | namespace caffe2 { | 
|  |  | 
|  | template <class Context> | 
|  | class NegateGradientOp final : public Operator<Context> { | 
|  | public: | 
|  | USE_SIMPLE_CTOR_DTOR(NegateGradientOp) | 
|  | USE_OPERATOR_CONTEXT_FUNCTIONS; | 
|  |  | 
|  | bool RunOnDevice() override { | 
|  | const auto& in = Input(0); | 
|  | auto* out = Output(0); | 
|  | if (out != &in) { | 
|  | out->CopyFrom(in, /* async */ true); | 
|  | } | 
|  | return true; | 
|  | } | 
|  | }; | 
|  |  | 
|  | } // namespace caffe2 |