code: def test_max_pool2d(self, dtype):
      for [
          spatial,
          kernel,
          padding,
          stride,
          dilation,
          ceil_mode,
      ] in itertools.product(
          [15, 16, 17, 18, 19],
          [4, 5],
          [0, 1, 2],
          [1, 2],  # [1, 2, 4], TODO: fix issue in pad calculation
          [1],  # [1, 2], TODO: backend support for dilation
          [True, False],
      ):
          m = nn.MaxPool2d(
              kernel_size=kernel,
              stride=stride,
              padding=padding,
              dilation=dilation,
              ceil_mode=ceil_mode,
          )
  
          x = torch.rand(1, 4, spatial, spatial)
          _, graph = self.checkTrace(m, [x], dtype)
          self.assertGraphContainsExactly(graph, LLGA_FUSION_GROUP, 1)
  
imports: import sys
  import torch
  import unittest
  import itertools
  import torch.nn
  from functools import wraps
  from concurrent import futures
  import torch.nn.functional
  import torch.fx.experimental.optimization
  from torch.testing._internal.jit_utils import JitTestCase
  from torch.testing._internal.common_utils import run_tests, TEST_SCIPY, IS_WINDOWS, IS_MACOS
  from torch.testing._internal.common_device_type import instantiate_device_type_tests, onlyCPU, dtypes
label_desc: Use image node_id 4 for calling the TestOp obj's underlying member method code with example usage: obj.test_max_pool2d(dtype) without return types