docstr: Ensure torch.mm(A, B_sparse.t()) is correct
docstr_tok: ["Ensure","torch.mm","(","A",",","B_sparse.t","(",")",")","is","correct"]
code: def test_mm_sparse_second_NT(
      self, dense_input_shape, dtype, device, backend
  ):
      """
      Ensure torch.mm(A, B_sparse.t()) is correct
      """
      SparseSemiStructuredTensor._FORCE_CUTLASS = backend == "cutlass"
      B = rand_sparse_semi_structured_mask(256, 128, dtype=dtype)
      B_sparse = to_sparse_semi_structured(B)
  
      A = torch.rand(dense_input_shape, device=B_sparse.device).to(
          dtype
      )
  
      # Currently we don't support int matmul on GPU, so evaluate on CPU and copy over
      if dtype is torch.int8:
          dense_result = torch.mm(A.cpu(), B.t().cpu()).to(
              device, dtype=torch.int8
          )
          sparse_result = torch.mm(A, B_sparse.t())
      else:
          dense_result = torch.mm(A, B.t())
          sparse_result = torch.mm(A, B_sparse.t())
  
      assert torch.allclose(
          dense_result, sparse_result, rtol=1e-3, atol=1e-3
      )
  
imports: import itertools
  import random
  import unittest
  import torch
  from torch import nn
  from torch.sparse.semi_structured import _DTYPE_TO_SEMI_STRUCTURED_SPARSE_CONFIG, SparseSemiStructuredTensor, to_sparse_semi_structured
  from torch.testing import make_tensor
  from torch.testing._internal.common_device_type import dtypes, instantiate_device_type_tests
  from torch.testing._internal.common_dtype import all_types_and_complex
  import torch._dynamo.test_case
  from torch.testing._internal.common_utils import parametrize, run_tests, subtest, TestCase, TEST_WITH_ROCM, IS_WINDOWS
  from torch.utils._triton import has_triton
label_desc: Use image node_id 6 for calling the TestSparseSemiStructured obj's underlying member method code with example usage: obj.test_mm_sparse_second_NT(dense_input_shape, dtype, device, backend) without return types