/
vuron
/
adept
Обзор
Документация
Войти
/
vuron
/
adept
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
with_cpu
python/cpp_bindings/grad_guard_py.cpp
25 строк
706 B
kolkir
Refactor python folder structure
01 мар 2025, 22:16
01 мар 2025, 22:16
ef25f05
Код
Авторство
О чём код?
#include <pybind11/pybind11.h> #include <pybind11/stl.h> #include <adept/autograd/grad_guard.hpp> namespace py = pybind11; using namespace adept; namespace { struct PythonGradGuard { PythonGradGuard() : prev_mode(autograd_is_enabled()) {} void enter() { autograd_set_enabled(false); } void exit() { autograd_set_enabled(prev_mode); } bool prev_mode; }; } // namespace void bind_grad_guard(py::module& m) { py::class_<PythonGradGuard>(m, "no_grad") .def(py::init<>()) .def("__enter__", [&](PythonGradGuard& self) { self.enter(); }) .def("__exit__", [&](PythonGradGuard& self, void* exc_type, void* exc_value, void* traceback) { self.exit(); }); }