def METHOD_NAME(self):
    i = torch.tensor([[0, 1, 1, 0, 1, 1], [2, 0, 2, 2, 0, 2]], dtype=torch.long)
    v = torch.tensor([3, 4, 5, 6, 7, 8], dtype=torch.float)
    sparse = torch.sparse.FloatTensor(i, v, torch.Size([2, 3]))
    dense = torch.randn(4, 2, 3, 4, requires_grad=True)
    dense_copy = dense.clone().detach().requires_grad_(True)
    res = linear_operator.dsmm(sparse, dense)
    actual = torch.matmul(sparse.to_dense(), dense_copy)
    self.assertLess(torch.norm(res - actual), 1e-5)
    grad_output = torch.randn(4, 2, 2, 4)
    res.backward(grad_output)
    actual.backward(grad_output)
    self.assertLess(torch.norm(dense.grad - dense_copy.grad).item(), 1e-5)
    i = torch.tensor(
        [[0, 0, 0, 1, 1, 1], [0, 1, 1, 0, 1, 1], [2, 0, 2, 2, 0, 2]],
        dtype=torch.long,
    )
    v = torch.tensor([3, 4, 5, 6, 7, 8], dtype=torch.float)
    sparse = torch.sparse.FloatTensor(i, v, torch.Size([2, 2, 3]))
    dense = torch.randn(4, 2, 3, 4, requires_grad=True)
    dense_copy = dense.clone().detach().requires_grad_(True)
    res = linear_operator.dsmm(sparse, dense)
    actual = torch.matmul(sparse.to_dense(), dense_copy)
    self.assertLess(torch.norm(res - actual), 1e-5)
    grad_output = torch.randn(4, 2, 2, 4)
    res.backward(grad_output)
    actual.backward(grad_output)
    self.assertLess(torch.norm(dense.grad - dense_copy.grad).item(), 1e-5)