blob: 73fb4574c613c5b176688f547fb3e48607f9fbe3 [file] [log] [blame]
#pragma once
#include <string>
#include <torch/csrc/WindowsTorchApiMacro.h>
// To enable logging please set(export) PYTORCH_JIT_LOG_LEVEL to
// the ordinal value of one of the following logging levels: 1 for GRAPH_DUMP,
// 2 for GRAPH_UPDATE, 3 for GRAPH_DEBUG.
// * Use GRAPH_DUMP for dumping graphs after optimization passes
// * Use GRAPH_UPDATE for reporting graph transformations (i.e. node deletion,
// constant folding, CSE)
// * Use GRAPH_DEBUG to provide information useful for debugging
// the internals of a particular optimization pass or analysis
namespace torch {
namespace jit {
struct Node;
enum class JitLoggingLevels {
OFF,
GRAPH_DUMP,
GRAPH_UPDATE,
GRAPH_DEBUG,
};
std::string debugValueOrDefault(const Node* n);
TORCH_API JitLoggingLevels jit_log_level();
// Prefix every line in a multiline string \p IN_STR with \p PREFIX.
TORCH_API std::string jit_log_prefix(
const std::string& prefix,
const std::string& in_str);
TORCH_API std::string jit_log_prefix(
JitLoggingLevels level,
const char* fn,
int l,
const std::string& in_str);
TORCH_API std::ostream& operator<<(std::ostream& out, JitLoggingLevels level);
#define JIT_LOG(level, ...) \
if (jit_log_level() != JitLoggingLevels::OFF && jit_log_level() >= level) { \
std::cerr << jit_log_prefix( \
level, __FILE__, __LINE__, ::c10::str(__VA_ARGS__)); \
}
// use GRAPH_DUMP for dumping graphs after optimization passes
#define GRAPH_DUMP(MSG, G) \
JIT_LOG(JitLoggingLevels::GRAPH_DUMP, MSG, "\n", (G)->toString());
// use GRAPH_UPDATE for reporting graph transformations (i.e. node deletion,
// constant folding, CSE)
#define GRAPH_UPDATE(...) JIT_LOG(JitLoggingLevels::GRAPH_UPDATE, __VA_ARGS__);
// use GRAPH_DEBUG to provide information useful for debugging a particular opt
// pass
#define GRAPH_DEBUG(...) JIT_LOG(JitLoggingLevels::GRAPH_DEBUG, __VA_ARGS__);
} // namespace jit
} // namespace torch