code: def test_nonzero_dynamic(self):
      # Test that nonzero gives upper bounds sizes when symbolic shape mode is enabled
      test_device = get_test_device()
      x1 = torch.tensor(
          [[0, 1.0, 2.0], [3.0, 0, 0]],
          device=test_device,
          requires_grad=True,
      )
      x1_lazy = clone_move(x1)
      x2_lazy = torch.nonzero(x1_lazy)
  
      # FIXME: Add bindings to get upper bounds
      # self.assertEqual(tuple(x2_lazy.size()), (6, 2))
  
      # We should still be able to instantiate it and get the actual result
      x2_eager = x2_lazy.cpu()
      self.assertEqual(tuple(x2_eager.size()), (3, 2))
  
imports: from typing import Sequence
  import torch
  import functools
  from torch.testing._internal.common_utils import run_tests, TestCase
  from torch.testing._internal.jit_utils import JitTestCase
  from torch.testing._internal.common_methods_invocations import op_db
  from torch.testing._internal.common_device_type import ops, instantiate_device_type_tests
  import torch._lazy
  import torch._lazy.config
  import torch._lazy.metrics
  import torch._lazy.ir_cache
  import torch._lazy.ts_backend
  import itertools
  import yaml
  import os
  import pathlib
  from unittest import skip
label_desc: Use image node_id 3 for calling the TestLazyDynamicOps obj's underlying member method code with example usage: obj.test_nonzero_dynamic() without return types