code: def spspmm(A: SparseMatrix, B: SparseMatrix) -> SparseMatrix:
      """Multiplies a sparse matrix by a sparse matrix, equivalent to ``A @ B``.
  
      The non-zero values of the two sparse matrices must be 1D.
  
      Parameters
      ----------
      A : SparseMatrix
          Sparse matrix of shape ``(L, M)``
      B : SparseMatrix
          Sparse matrix of shape ``(M, N)``
  
      Returns
      -------
      SparseMatrix
          Sparse matrix of shape ``(L, N)``.
  
      Examples
      --------
  
      >>> indices1 = torch.tensor([[0, 1, 1], [1, 0, 1]])
      >>> val1 = torch.ones(len(row1))
      >>> A = dglsp.spmatrix(indices1, val1)
      >>> indices2 = torch.tensor([[0, 1, 1], [0, 2, 1]])
      >>> val2 = torch.ones(len(row2))
      >>> B = dglsp.spmatrix(indices2, val2)
      >>> dglsp.spspmm(A, B)
      SparseMatrix(indices=tensor([[0, 0, 1, 1, 1],
                                   [1, 2, 0, 1, 2]]),
                   values=tensor([1., 1., 1., 1., 1.]),
                   shape=(2, 3), nnz=5)
      """
      assert isinstance(
          A, SparseMatrix
      ), f"Expect A1 to be a SparseMatrix object, got {type(A)}."
      assert isinstance(
          B, SparseMatrix
      ), f"Expect A2 to be a SparseMatrix object, got {type(B)}."
  
      return SparseMatrix(
          torch.ops.dgl_sparse.spspmm(
              A.c_sparse_matrix, B.c_sparse_matrix
          )
      )
  
imports: from typing import Union
  import torch
  from .sparse_matrix import SparseMatrix
label_desc: Use image node_id 3 for calling a global function with example usage: spspmm(A, B) and returns: SparseMatrix