pytorch/torch/csrc/jit/interpreter.h
Edward Yang 3deb4791c3 Replace 'struct Tensor' with 'class Tensor'. (#12034)
Summary:
Pull Request resolved: https://github.com/pytorch/pytorch/pull/12034

We need ATen and Caffe2 to line up, and the rule is
that if you have any private/protected members, you
should declare it as a class.  Class we go.

(There are some other obvious candidates for this treatment,
but I've kept this patch just to Tensor)

Reviewed By: gchanan, mingzhe09088

Differential Revision: D10024467

fbshipit-source-id: 17cfe2741ba9c3f56cb87d6f5d1afd3c61a8e4fe
2018-09-25 09:54:35 -07:00

60 lines
1.5 KiB
C++

#pragma once
#include <memory>
#include <vector>
#include "ATen/core/optional.h"
#include "torch/csrc/WindowsTorchApiMacro.h"
namespace at {
class Tensor;
}
namespace torch { namespace jit {
// The interpreter run Graphs with Tensor inputs and Tensor outputs
// a separate component in the autograd handles unwrapping and wrapping
// variable objects for use in the interpreter.
struct Node;
struct GraphExecutor;
struct CodeImpl;
struct InterpreterStateImpl;
struct Graph;
struct Node;
struct IValue;
using Stack = std::vector<IValue>;
struct TORCH_API Code {
Code()
: pImpl(nullptr) {}
Code(std::shared_ptr<Graph>& graph);
~Code();
const std::vector<GraphExecutor*>& grad_executors();
explicit operator bool() const {
return pImpl != nullptr;
}
private:
std::shared_ptr<CodeImpl> pImpl;
friend struct InterpreterStateImpl;
friend std::ostream & operator<<(std::ostream & out, const Code & code);
};
struct InterpreterState {
InterpreterState(const Code & code);
// advance the interpreter state by running one stage. Returning the
// outputs for that stage, suspending the computation.
// Call this function again continues computation where it left off.
void runOneStage(Stack & stack);
~InterpreterState();
// create a copy of InterpreterState with its current state
// used when retain_graph=True so that stages can be re-run
InterpreterState clone() const;
private:
InterpreterState(InterpreterStateImpl * pImpl);
std::shared_ptr<InterpreterStateImpl> pImpl;
};
}}