blob: 691ee2e0c2b6ee5da1fd6756db22c0264e5748f2 [file] [log] [blame]
#include <torch/csrc/autograd/utils/warnings.h>
namespace torch {
namespace autograd {
namespace utils {
void DelayWarningHandler::process(const c10::Warning& warning) {
std::lock_guard<std::mutex> lock(mutex_);
warnings_.push_back(warning);
}
void DelayWarningHandler::replay_warnings() {
std::lock_guard<std::mutex> lock(mutex_);
TORCH_INTERNAL_ASSERT(
c10::WarningUtils::get_warning_handler() != this,
"DelayWarningHandler cannot replay warnings into itself, this will cause a deadlock");
for (const auto& warning : warnings_) {
c10::warn(warning);
}
}
} // namespace utils
} // namespace autograd
} // namespace torch