mirror of
https://github.com/zebrajr/pytorch.git
synced 2025-12-06 12:20:52 +01:00
Summary:
Description:
- Before this, logging level could only be changed by changing the env
variable "PYTORCH_JIT_LOG_LEVEL"
- Can change the level from python now
- Have not added stream configuration for now
- Configuration is stored in a singleton class managing the options
Issue Link: https://github.com/pytorch/pytorch/issues/54188
Gotchas:
- Created separate functions
`::torch::jit::get_jit_logging_levels/set_jit_logging_levels` instead of
using the singleton class's method directly
- This is because when running test cases, two different instances
of the singleton are created for the test suite and the actual code
(`jit_log.cpp`)
- On using these methods directly, `is_enabled` calls the singleton
in `jit_log.cpp` while we are setting the config using another
singleton
- See: https://stackoverflow.com/questions/55467246/my-singleton-can-be-called-multiple-times
API:
- To set the level: `torch._C._jit_set_logging_option("level")`
- To get the level: `torch._C._jit_get_logging_option()`
Testing:
- UTs were added for C++
- A very simple UT was added for python to just check if the API is
being called correctly
- The API was checked by running trace in a sample python file
- Set env variable to "" and used `_jit_set_logging_option` in python to set the variable to `>dead_code_elimination`
- The error output had logs of form [DUMP..] [UPDATE...] etc
Fixes https://github.com/pytorch/pytorch/issues/54188
Pull Request resolved: https://github.com/pytorch/pytorch/pull/58821
Reviewed By: soulitzer
Differential Revision: D29116712
Pulled By: ZolotukhinM
fbshipit-source-id: 8f2861ee2bd567fb63b405953d035ca657a3200f
42 lines
1.3 KiB
C++
42 lines
1.3 KiB
C++
#include <gtest/gtest.h>
|
|
#include <test/cpp/jit/test_utils.h>
|
|
|
|
#include <torch/csrc/jit/jit_log.h>
|
|
#include <iostream>
|
|
|
|
namespace torch {
|
|
namespace jit {
|
|
|
|
TEST(JitLoggingLevelsTest, CheckSetLoggingLevel) {
|
|
::torch::jit::set_jit_logging_levels("file_to_test");
|
|
ASSERT_TRUE(::torch::jit::is_enabled(
|
|
"file_to_test.cpp", JitLoggingLevels::GRAPH_DUMP));
|
|
}
|
|
|
|
TEST(JitLoggingLevelsTest, CheckSetMultipleLogLevels) {
|
|
::torch::jit::set_jit_logging_levels("f1:>f2:>>f3");
|
|
ASSERT_TRUE(::torch::jit::is_enabled("f1.cpp", JitLoggingLevels::GRAPH_DUMP));
|
|
ASSERT_TRUE(
|
|
::torch::jit::is_enabled("f2.cpp", JitLoggingLevels::GRAPH_UPDATE));
|
|
ASSERT_TRUE(
|
|
::torch::jit::is_enabled("f3.cpp", JitLoggingLevels::GRAPH_DEBUG));
|
|
}
|
|
|
|
TEST(JitLoggingLevelsTest, CheckLoggingLevelAfterUnset) {
|
|
::torch::jit::set_jit_logging_levels("f1");
|
|
ASSERT_EQ("f1", ::torch::jit::get_jit_logging_levels());
|
|
::torch::jit::set_jit_logging_levels("invalid");
|
|
ASSERT_FALSE(
|
|
::torch::jit::is_enabled("f1.cpp", JitLoggingLevels::GRAPH_DUMP));
|
|
}
|
|
|
|
TEST(JitLoggingLevelsTest, CheckAfterChangingLevel) {
|
|
::torch::jit::set_jit_logging_levels("f1");
|
|
::torch::jit::set_jit_logging_levels(">f1");
|
|
ASSERT_TRUE(
|
|
::torch::jit::is_enabled("f1.cpp", JitLoggingLevels::GRAPH_UPDATE));
|
|
}
|
|
|
|
} // namespace jit
|
|
} // namespace torch
|