mirror of
https://github.com/pytorch/pytorch.git
synced 2025-10-21 05:34:18 +08:00
Summary: * adds TORCH_API and AT_CUDA_API in places * refactor code generation Python logic to separate caffe2/torch outputs * fix hip and asan * remove profiler_cuda from hip * fix gcc warnings for enums * Fix PythonOp::Kind Pull Request resolved: https://github.com/pytorch/pytorch/pull/19554 Differential Revision: D15082727 Pulled By: kostmo fbshipit-source-id: 83a8a99717f025ab44b29608848928d76b3147a4
53 lines
1.7 KiB
C++
53 lines
1.7 KiB
C++
#pragma once
|
|
|
|
#include <torch/csrc/jit/ir.h>
|
|
#include <torch/csrc/utils/object_ptr.h>
|
|
|
|
namespace torch {
|
|
namespace jit {
|
|
|
|
void initPythonIRBindings(PyObject* module);
|
|
|
|
// execute a Python function, used for Ops we can't optimize but that we want to
|
|
// optimize around
|
|
struct ConcretePythonOp : public PythonOp {
|
|
static Symbol Kind;
|
|
|
|
ConcretePythonOp(Graph* graph) : PythonOp(graph, ::c10::prim::PythonOp) {}
|
|
ConcretePythonOp* init(
|
|
THPObjectPtr&& pyobj,
|
|
const std::string& cconv,
|
|
pyobj_list&& scalar_args) {
|
|
this->pyobj = std::move(pyobj);
|
|
this->scalar_args = std::move(scalar_args);
|
|
this->cconv = cconv;
|
|
return this;
|
|
}
|
|
// The Python object which contains the implementation of this function.
|
|
// This is either a class (non-legacy) or an object (legacy). See
|
|
// TraceInterpreterState for execution semantics.
|
|
THPObjectPtr pyobj;
|
|
// The calling convention for the Python function.
|
|
// 'c' -- constant argument
|
|
// 'd' -- dynamic argument
|
|
std::string cconv;
|
|
// Scalar arguments to the Python function. Not necessarily passed to
|
|
// the function in this order; see cconv for the correct order.
|
|
std::vector<THPObjectPtr> scalar_args;
|
|
|
|
std::string name() const override;
|
|
void cloneFrom(Node* other_) override;
|
|
Node* allocNewInstance(Graph* g) override {
|
|
return new ConcretePythonOp(g);
|
|
}
|
|
// recover the autograd.Function instance, if this PythonOp's function
|
|
// was originally SomeFunction.apply
|
|
// used in ONNX for discovering symbolics
|
|
c10::optional<THPObjectPtr> autogradFunction() const override;
|
|
void writeScalars(std::ostream& out) const override;
|
|
void lint_python() const override;
|
|
};
|
|
|
|
}
|
|
} // namespace torch
|