mirror of
https://github.com/zebrajr/pytorch.git
synced 2025-12-06 12:20:52 +01:00
[inductor] fix test_functional_call_sequential_params_and_buffers expectation on Windows (#134394)
This UT actual code only one empty line wrap difference(`linear` and `add`) between Windows/Linux, and the context is right.
Reproduce UTs:
```cmd
pytest test\dynamo\test_higher_order_ops.py -v -k test_functional_call_sequential_params_and_buffers
```
We can add `empty_line_normalizer` to fix it.
```cmd
______________________________________________________________________________________________ FuncTorchHigherOrderOpTests.test_functional_call_sequential_params_and_buffers _______________________________________________________________________________________________
Traceback (most recent call last):
File "D:\xu_git\dnnl_cb\pytorch\test\dynamo\test_higher_order_ops.py", line 3676, in test_functional_call_sequential_params_and_buffers
self.assertExpectedInline(
File "C:\Users\Xuhan\.conda\envs\win_mkl_static\lib\site-packages\torch\testing\_internal\common_utils.py", line 2871, in assertExpectedInline
return super().assertExpectedInline(actual if isinstance(actual, str) else str(actual), expect, skip + 1)
File "C:\Users\Xuhan\.conda\envs\win_mkl_static\lib\site-packages\expecttest\__init__.py", line 271, in assertExpectedInline
self.assertMultiLineEqualMaybeCppStack(expect, actual, msg=help_text)
File "C:\Users\Xuhan\.conda\envs\win_mkl_static\lib\site-packages\expecttest\__init__.py", line 292, in assertMultiLineEqualMaybeCppStack
self.assertMultiLineEqual(expect, actual, *args, **kwargs)
File "C:\Users\Xuhan\.conda\envs\win_mkl_static\lib\unittest\case.py", line 1226, in assertMultiLineEqual
self.fail(self._formatMessage(msg, standardMsg))
File "C:\Users\Xuhan\.conda\envs\win_mkl_static\lib\unittest\case.py", line 675, in fail
raise self.failureException(msg)
AssertionError: 'clas[509 chars]one\n add: "f32[1, 1]" = linear + l_buf[69 chars],)\n' != 'clas[509 chars]one\n\n add: "f32[1, 1]" = linear + l_b[71 chars],)\n'
class GraphModule(torch.nn.Module):
def forward(self, L_params_l1_weight_: "f32[1, 1]", L_params_l1_bias_: "f32[1]", L_buffers_buffer_: "f32[1]", L_inputs_: "f32[1, 1]"):
l_params_l1_weight_ = L_params_l1_weight_
l_params_l1_bias_ = L_params_l1_bias_
l_buffers_buffer_ = L_buffers_buffer_
l_inputs_ = L_inputs_
linear: "f32[1, 1]" = torch._C._nn.linear(l_inputs_, l_params_l1_weight_, l_params_l1_bias_); l_inputs_ = l_params_l1_weight_ = l_params_l1_bias_ = None
+ <<<< (difference is here )
add: "f32[1, 1]" = linear + l_buffers_buffer_; linear = l_buffers_buffer_ = None
return (add,)
: To accept the new output, re-run test with envvar EXPECTTEST_ACCEPT=1 (we recommend staging/committing your changes before doing this)
To execute this test, run the following from the base repo dir:
python test\dynamo\test_higher_order_ops.py FuncTorchHigherOrderOpTests.test_functional_call_sequential_params_and_buffers
This message can be suppressed by setting PYTORCH_PRINT_REPRO_ON_FAILURE=0
========================================================================================================================== short test summary info ==========================================================================================================================
FAILED [0.4275s] test/dynamo/test_higher_order_ops.py::FuncTorchHigherOrderOpTests::test_functional_call_sequential_params_and_buffers - AssertionError: 'clas[509 chars]one\n add: "f32[1, 1]" = linear + l_buf[69 chars],)\n' != 'clas[509 chars]one\n\n add: "f32[1, 1]" = linear + l_b[71 chars],)\n'
```
Pull Request resolved: https://github.com/pytorch/pytorch/pull/134394
Approved by: https://github.com/jansel
Co-authored-by: Jason Ansel <jansel@jansel.net>
This commit is contained in:
parent
7af38eb98b
commit
2ec149cd3e
|
|
@ -19,6 +19,7 @@ from torch._dynamo.testing import (
|
|||
CompileCounter,
|
||||
CompileCounterWithBackend,
|
||||
EagerAndRecordGraphs,
|
||||
empty_line_normalizer,
|
||||
normalize_gm,
|
||||
)
|
||||
from torch._dynamo.utils import counters, ifdynstaticdefault
|
||||
|
|
@ -3673,9 +3674,7 @@ class GraphModule(torch.nn.Module):
|
|||
|
||||
actual = normalize_gm(wrapped_gm.print_readable(print_output=False))
|
||||
if torch._dynamo.config.inline_inbuilt_nn_modules:
|
||||
self.assertExpectedInline(
|
||||
actual,
|
||||
"""\
|
||||
expected = """\
|
||||
class GraphModule(torch.nn.Module):
|
||||
def forward(self, L_params_l1_weight_: "f32[1, 1]", L_params_l1_bias_: "f32[1]", L_buffers_buffer_: "f32[1]", L_inputs_: "f32[1, 1]"):
|
||||
l_params_l1_weight_ = L_params_l1_weight_
|
||||
|
|
@ -3684,9 +3683,14 @@ class GraphModule(torch.nn.Module):
|
|||
l_inputs_ = L_inputs_
|
||||
|
||||
linear: "f32[1, 1]" = torch._C._nn.linear(l_inputs_, l_params_l1_weight_, l_params_l1_bias_); l_inputs_ = l_params_l1_weight_ = l_params_l1_bias_ = None
|
||||
|
||||
add: "f32[1, 1]" = linear + l_buffers_buffer_; linear = l_buffers_buffer_ = None
|
||||
return (add,)
|
||||
""",
|
||||
"""
|
||||
# We found Windows/Linux have some empty line difference, empty_line_normalizer will help fix it.
|
||||
self.assertExpectedInline(
|
||||
empty_line_normalizer(actual),
|
||||
empty_line_normalizer(normalize_gm(expected)),
|
||||
)
|
||||
else:
|
||||
self.assertExpectedInline(
|
||||
|
|
|
|||
|
|
@ -229,6 +229,14 @@ def normalize_gm(gm_str) -> str:
|
|||
return remove_trailing_space(strip_comment(gm_str))
|
||||
|
||||
|
||||
def empty_line_normalizer(code: str) -> str:
|
||||
"""
|
||||
Normalize code: remove empty lines.
|
||||
"""
|
||||
normal_code = re.sub(r"[\r\n]+", "\n", code)
|
||||
return normal_code
|
||||
|
||||
|
||||
def standard_test(
|
||||
self,
|
||||
fn,
|
||||
|
|
|
|||
Loading…
Reference in New Issue
Block a user