mirror of
https://github.com/zebrajr/pytorch.git
synced 2025-12-06 12:20:52 +01:00
[dynamo] support Python 3.13t (#149549)
A few bug fixes to get Dynamo mostly working with 3.13 nogil. Dynamo encounters internal CPython assert errors in older versions of 3.13. The fix has been landed on [CPython's 3.13 branch](https://github.com/python/cpython/tree/3.13) and will be included in 3.13.3 (https://peps.python.org/pep-0719/ - april 8). If you wish to try `torch.compile` on the latest 3.13 branch, you can comment out the error checking (i.e.70b6cd4e11/torch/__init__.py (L2535)and70b6cd4e11/torch/_dynamo/eval_frame.py (L899)). We will work on getting PyTorch CI up for Dynamo/dynamo-wrapped/inductor once 3.13.3 is available. Pull Request resolved: https://github.com/pytorch/pytorch/pull/149549 Approved by: https://github.com/jansel
This commit is contained in:
parent
970ac2d907
commit
a66a9581da
|
|
@ -2532,9 +2532,14 @@ def compile(
|
||||||
_C._log_api_usage_once("torch.compile")
|
_C._log_api_usage_once("torch.compile")
|
||||||
if sys.version_info >= (3, 14):
|
if sys.version_info >= (3, 14):
|
||||||
raise RuntimeError("torch.compile is not supported on Python 3.14+")
|
raise RuntimeError("torch.compile is not supported on Python 3.14+")
|
||||||
elif sysconfig.get_config_var("Py_GIL_DISABLED") == 1:
|
elif sysconfig.get_config_var("Py_GIL_DISABLED") == 1 and sys.version_info < (
|
||||||
|
3,
|
||||||
|
13,
|
||||||
|
3,
|
||||||
|
):
|
||||||
raise RuntimeError(
|
raise RuntimeError(
|
||||||
"torch.compile is not supported on Python built with GIL disabled"
|
"torch.compile is not supported on Python < 3.13.3 built with GIL disabled. "
|
||||||
|
"Please use Python 3.13.3+."
|
||||||
)
|
)
|
||||||
|
|
||||||
# Decorator mode
|
# Decorator mode
|
||||||
|
|
|
||||||
|
|
@ -896,9 +896,14 @@ class _NullDecorator(contextlib.nullcontext): # type: ignore[type-arg]
|
||||||
def check_if_dynamo_supported():
|
def check_if_dynamo_supported():
|
||||||
if sys.version_info >= (3, 14):
|
if sys.version_info >= (3, 14):
|
||||||
raise RuntimeError("Python 3.14+ not yet supported for torch.compile")
|
raise RuntimeError("Python 3.14+ not yet supported for torch.compile")
|
||||||
elif sysconfig.get_config_var("Py_GIL_DISABLED") == 1:
|
elif sysconfig.get_config_var("Py_GIL_DISABLED") == 1 and sys.version_info < (
|
||||||
|
3,
|
||||||
|
13,
|
||||||
|
3,
|
||||||
|
):
|
||||||
raise RuntimeError(
|
raise RuntimeError(
|
||||||
"torch.compile is not supported on Python built with GIL disabled"
|
"torch.compile is not supported on Python < 3.13.3 built with GIL disabled. "
|
||||||
|
"Please use Python 3.13.3+."
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2283,7 +2283,7 @@ class CppPythonBindingsCodeCache(CppCodeCache):
|
||||||
return NULL;
|
return NULL;
|
||||||
}}
|
}}
|
||||||
#ifdef Py_GIL_DISABLED
|
#ifdef Py_GIL_DISABLED
|
||||||
PyUnstable_Module_SetGIL(mod, Py_MOD_GIL_NOT_USED);
|
PyUnstable_Module_SetGIL(module, Py_MOD_GIL_NOT_USED);
|
||||||
#endif
|
#endif
|
||||||
return module;
|
return module;
|
||||||
}}
|
}}
|
||||||
|
|
|
||||||
|
|
@ -589,7 +589,10 @@ static PyObject* set_skip_guard_eval_unsafe(
|
||||||
}
|
}
|
||||||
|
|
||||||
static PyObject* get_eval_frame_callback_py(PyObject* dummy, PyObject* args) {
|
static PyObject* get_eval_frame_callback_py(PyObject* dummy, PyObject* args) {
|
||||||
return eval_frame_callback_get();
|
// New reference
|
||||||
|
PyObject* callback = eval_frame_callback_get();
|
||||||
|
Py_INCREF(callback);
|
||||||
|
return callback;
|
||||||
}
|
}
|
||||||
|
|
||||||
static PyObject* reset_code(PyObject* dummy, PyObject* code) {
|
static PyObject* reset_code(PyObject* dummy, PyObject* code) {
|
||||||
|
|
|
||||||
|
|
@ -940,13 +940,13 @@ std::string get_exception_message() {
|
||||||
PyErr_Fetch(&ptype, &pvalue, &ptraceback);
|
PyErr_Fetch(&ptype, &pvalue, &ptraceback);
|
||||||
|
|
||||||
PyObject* exc_message_pyobj = PyObject_Str(pvalue);
|
PyObject* exc_message_pyobj = PyObject_Str(pvalue);
|
||||||
const char* exc_message = PyUnicode_AsUTF8(exc_message_pyobj);
|
std::string exc_message = PyUnicode_AsUTF8(exc_message_pyobj);
|
||||||
|
|
||||||
Py_DECREF(exc_message_pyobj);
|
Py_DECREF(exc_message_pyobj);
|
||||||
Py_XDECREF(ptype);
|
Py_XDECREF(ptype);
|
||||||
Py_XDECREF(pvalue);
|
Py_XDECREF(pvalue);
|
||||||
Py_XDECREF(ptraceback);
|
Py_XDECREF(ptraceback);
|
||||||
return std::string(exc_message);
|
return exc_message;
|
||||||
}
|
}
|
||||||
|
|
||||||
bool is_immutable_object(py::handle example_value) {
|
bool is_immutable_object(py::handle example_value) {
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue
Block a user