[dynamo][easy] forbid_in_graph check to use getattr_static (#124445)
Pull Request resolved: https://github.com/pytorch/pytorch/pull/124445
Approved by: https://github.com/yanboliang, https://github.com/jansel
diff --git a/test/dynamo_expected_failures/TestFakeSparsity.test_jit_trace b/test/dynamo_expected_failures/TestFakeSparsity.test_jit_trace
deleted file mode 100644
index e69de29..0000000
--- a/test/dynamo_expected_failures/TestFakeSparsity.test_jit_trace
+++ /dev/null
diff --git a/test/dynamo_expected_failures/TestMkldnnCPU.test_batch_norm_2d_cpu b/test/dynamo_expected_failures/TestMkldnnCPU.test_batch_norm_2d_cpu
deleted file mode 100644
index e69de29..0000000
--- a/test/dynamo_expected_failures/TestMkldnnCPU.test_batch_norm_2d_cpu
+++ /dev/null
diff --git a/test/dynamo_expected_failures/TestMkldnnCPU.test_batch_norm_3d_cpu b/test/dynamo_expected_failures/TestMkldnnCPU.test_batch_norm_3d_cpu
deleted file mode 100644
index e69de29..0000000
--- a/test/dynamo_expected_failures/TestMkldnnCPU.test_batch_norm_3d_cpu
+++ /dev/null
diff --git a/test/dynamo_expected_failures/TestMkldnnCPU.test_conv1d_cpu b/test/dynamo_expected_failures/TestMkldnnCPU.test_conv1d_cpu
deleted file mode 100644
index e69de29..0000000
--- a/test/dynamo_expected_failures/TestMkldnnCPU.test_conv1d_cpu
+++ /dev/null
diff --git a/test/dynamo_expected_failures/TestMkldnnCPU.test_conv2d_cpu b/test/dynamo_expected_failures/TestMkldnnCPU.test_conv2d_cpu
deleted file mode 100644
index e69de29..0000000
--- a/test/dynamo_expected_failures/TestMkldnnCPU.test_conv2d_cpu
+++ /dev/null
diff --git a/test/dynamo_expected_failures/TestMkldnnCPU.test_conv3d_cpu b/test/dynamo_expected_failures/TestMkldnnCPU.test_conv3d_cpu
deleted file mode 100644
index e69de29..0000000
--- a/test/dynamo_expected_failures/TestMkldnnCPU.test_conv3d_cpu
+++ /dev/null
diff --git a/test/dynamo_expected_failures/TestMkldnnCPU.test_linear_cpu b/test/dynamo_expected_failures/TestMkldnnCPU.test_linear_cpu
deleted file mode 100644
index e69de29..0000000
--- a/test/dynamo_expected_failures/TestMkldnnCPU.test_linear_cpu
+++ /dev/null
diff --git a/test/dynamo_expected_failures/TestMkldnnCPU.test_linear_lowp_cpu_float16 b/test/dynamo_expected_failures/TestMkldnnCPU.test_linear_lowp_cpu_float16
deleted file mode 100644
index e69de29..0000000
--- a/test/dynamo_expected_failures/TestMkldnnCPU.test_linear_lowp_cpu_float16
+++ /dev/null
diff --git a/test/dynamo_expected_failures/TestMkldnnCPU.test_prelu_bf16_cpu b/test/dynamo_expected_failures/TestMkldnnCPU.test_prelu_bf16_cpu
deleted file mode 100644
index e69de29..0000000
--- a/test/dynamo_expected_failures/TestMkldnnCPU.test_prelu_bf16_cpu
+++ /dev/null
diff --git a/test/dynamo_expected_failures/TestMkldnnCPU.test_prelu_cpu b/test/dynamo_expected_failures/TestMkldnnCPU.test_prelu_cpu
deleted file mode 100644
index e69de29..0000000
--- a/test/dynamo_expected_failures/TestMkldnnCPU.test_prelu_cpu
+++ /dev/null
diff --git a/test/dynamo_expected_failures/TestMkldnnCPU.test_reshape_blocked_format_cpu b/test/dynamo_expected_failures/TestMkldnnCPU.test_reshape_blocked_format_cpu
deleted file mode 100644
index e69de29..0000000
--- a/test/dynamo_expected_failures/TestMkldnnCPU.test_reshape_blocked_format_cpu
+++ /dev/null
diff --git a/test/dynamo_expected_failures/TestMkldnnCPU.test_resnet18_cpu b/test/dynamo_expected_failures/TestMkldnnCPU.test_resnet18_cpu
deleted file mode 100644
index e69de29..0000000
--- a/test/dynamo_expected_failures/TestMkldnnCPU.test_resnet18_cpu
+++ /dev/null
diff --git a/test/dynamo_expected_failures/TestMkldnnCPU.test_resnext50_32x4d_cpu b/test/dynamo_expected_failures/TestMkldnnCPU.test_resnext50_32x4d_cpu
deleted file mode 100644
index e69de29..0000000
--- a/test/dynamo_expected_failures/TestMkldnnCPU.test_resnext50_32x4d_cpu
+++ /dev/null
diff --git a/test/dynamo_expected_failures/TestNN.test_ParameterDict_replication b/test/dynamo_expected_failures/TestNN.test_ParameterDict_replication
deleted file mode 100644
index e69de29..0000000
--- a/test/dynamo_expected_failures/TestNN.test_ParameterDict_replication
+++ /dev/null
diff --git a/test/dynamo_expected_failures/TestNN.test_ParameterList_replication b/test/dynamo_expected_failures/TestNN.test_ParameterList_replication
deleted file mode 100644
index e69de29..0000000
--- a/test/dynamo_expected_failures/TestNN.test_ParameterList_replication
+++ /dev/null
diff --git a/test/dynamo_expected_failures/TestNNDeviceTypeCPU.test_triplet_margin_with_distance_loss_cpu b/test/dynamo_expected_failures/TestNNDeviceTypeCPU.test_triplet_margin_with_distance_loss_cpu
deleted file mode 100644
index e69de29..0000000
--- a/test/dynamo_expected_failures/TestNNDeviceTypeCPU.test_triplet_margin_with_distance_loss_cpu
+++ /dev/null
diff --git a/test/dynamo_expected_failures/TestNNParametrization.test_deepcopy_after_parametrization_swap_False b/test/dynamo_expected_failures/TestNNParametrization.test_deepcopy_after_parametrization_swap_False
deleted file mode 100644
index e69de29..0000000
--- a/test/dynamo_expected_failures/TestNNParametrization.test_deepcopy_after_parametrization_swap_False
+++ /dev/null
diff --git a/test/dynamo_expected_failures/TestScript.test_nn_GRU b/test/dynamo_expected_failures/TestScript.test_nn_GRU
deleted file mode 100644
index e69de29..0000000
--- a/test/dynamo_expected_failures/TestScript.test_nn_GRU
+++ /dev/null
diff --git a/test/dynamo_expected_failures/TestScript.test_nn_LSTM_with_layers b/test/dynamo_expected_failures/TestScript.test_nn_LSTM_with_layers
deleted file mode 100644
index e69de29..0000000
--- a/test/dynamo_expected_failures/TestScript.test_nn_LSTM_with_layers
+++ /dev/null
diff --git a/test/dynamo_expected_failures/TestScript.test_pack_unpack_state b/test/dynamo_expected_failures/TestScript.test_pack_unpack_state
deleted file mode 100644
index e69de29..0000000
--- a/test/dynamo_expected_failures/TestScript.test_pack_unpack_state
+++ /dev/null
diff --git a/torch/_dynamo/trace_rules.py b/torch/_dynamo/trace_rules.py
index daeb862..72a880a 100644
--- a/torch/_dynamo/trace_rules.py
+++ b/torch/_dynamo/trace_rules.py
@@ -3064,7 +3064,7 @@
def is_forbidden(obj) -> bool:
_maybe_init_lazy_module(obj)
- return getattr(obj, "_dynamo_forbidden", False)
+ return inspect.getattr_static(obj, "_dynamo_forbidden", False)
def is_builtin_callable(obj) -> bool:
diff --git a/torch/_dynamo/variables/nn_module.py b/torch/_dynamo/variables/nn_module.py
index 32ef830..ffd5917 100644
--- a/torch/_dynamo/variables/nn_module.py
+++ b/torch/_dynamo/variables/nn_module.py
@@ -791,7 +791,10 @@
kwargs,
)
- if id(method.__code__) in self._nn_module_method_ids():
+ if (
+ hasattr(method, "__code__")
+ and id(method.__code__) in self._nn_module_method_ids()
+ ):
unimplemented(f"UnspecializedNNModuleVariable missing {name}")
# "_parameters" in self.value.__dict__ checks that module is initialized