pytorch/torch/csrc/dynamo/utils.cpp
albanD 4f93de8951 Mark PyTorch module as no-gil valid and pythoncapi_compat.h (#136899)
PyList_GetItem are audited but not other APIs yet (they will be done in a follow up PR to keep this one small enough).

Pull Request resolved: https://github.com/pytorch/pytorch/pull/136899
Approved by: https://github.com/colesbury, https://github.com/atalman
2024-10-01 22:05:35 +00:00

38 lines
811 B
C++

#include <torch/csrc/dynamo/utils.h>
namespace torch::dynamo {
static std::array<PyMethodDef, 1> _methods = {{
{nullptr,
nullptr,
0,
nullptr} // Sentinel value indicating the end of the array
}};
bool is_instancemethod(py::object obj) {
return PyInstanceMethod_Check(obj.ptr());
}
static struct PyModuleDef _module = {
PyModuleDef_HEAD_INIT,
"torch._C._dynamo.utils",
"Module containing C utils",
-1,
_methods.data()};
PyObject* torch_c_dynamo_utils_init() {
auto m = PyModule_Create(&_module);
if (m == nullptr)
return nullptr;
#ifdef Py_GIL_DISABLED
PyUnstable_Module_SetGIL(m, Py_MOD_GIL_NOT_USED);
#endif
auto py_m = py::handle(m).cast<py::module>();
py_m.def("is_instancemethod", is_instancemethod);
return m;
}
} // namespace torch::dynamo