code: def test_softmax(self, dtype):
      for dim in [-4, -3, -2, -1, 0, 1, 2, 3]:
          m = nn.Softmax(dim=dim)
          x = torch.rand(8, 12, 12, 12)
          _, graph = self.checkTrace(m, [x], dtype)
          # single-op partition shouldn't be created for softmax
          self.assertGraphContainsExactly(graph, LLGA_FUSION_GROUP, 0)
  
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 7 for calling the TestOp obj's underlying member method code with example usage: obj.test_softmax(dtype) without return types