mirror of
https://github.com/pytorch/pytorch.git
synced 2025-11-03 15:35:04 +08:00
This prepares us for the next PR in the stack, where we introduce pre-compiled per-device header files to save compilation time. Differential Revision: [D67938955](https://our.internmc.facebook.com/intern/diff/D67938955) Pull Request resolved: https://github.com/pytorch/pytorch/pull/143909 Approved by: https://github.com/desertfire
50 lines
1.0 KiB
C++
50 lines
1.0 KiB
C++
#pragma once
|
|
|
|
#include <Python.h>
|
|
#include <filesystem>
|
|
#include <optional>
|
|
|
|
#define PYBIND11_SIMPLE_GIL_MANAGEMENT
|
|
#include <pybind11/gil.h>
|
|
namespace py = pybind11;
|
|
|
|
class RAIIPyObject {
|
|
public:
|
|
RAIIPyObject() : obj_(nullptr) {}
|
|
RAIIPyObject(PyObject* obj) : obj_(obj) {}
|
|
~RAIIPyObject() {
|
|
Py_XDECREF(obj_);
|
|
}
|
|
RAIIPyObject& operator=(const RAIIPyObject& other) {
|
|
if (this != &other) {
|
|
Py_XDECREF(obj_);
|
|
obj_ = other.obj_;
|
|
Py_XINCREF(obj_);
|
|
}
|
|
return *this;
|
|
}
|
|
operator PyObject*() {
|
|
return obj_;
|
|
}
|
|
PyObject* get() {
|
|
return obj_;
|
|
}
|
|
|
|
private:
|
|
PyObject* obj_;
|
|
};
|
|
|
|
#include <torch/csrc/inductor/aoti_runtime/device_utils.h>
|
|
#include <torch/csrc/inductor/aoti_runtime/utils.h>
|
|
using namespace torch::aot_inductor;
|
|
|
|
#include <c10/util/generic_math.h>
|
|
#include <torch/csrc/inductor/aoti_runtime/scalar_to_tensor.h>
|
|
using half = at::Half;
|
|
using bfloat16 = at::BFloat16;
|
|
|
|
// Round up to the nearest multiple of 64
|
|
[[maybe_unused]] inline int64_t align(int64_t nbytes) {
|
|
return (nbytes + 64 - 1) & -64;
|
|
}
|