code: def _csrmm(A, A_weights, B, B_weights, num_vtypes):
      """Return a graph whose adjacency matrix is the sparse matrix multiplication
      of those of two given graphs.
  
      Note that the edge weights of both graphs must be scalar, i.e. :attr:`A_weights`
      and :attr:`B_weights` must be 1D vectors.
  
      Parameters
      ----------
      A : HeteroGraphIndex
          The input graph index as left operand.
      A_weights : Tensor
          The edge weights of graph A as 1D tensor.
      B : HeteroGraphIndex
          The input graph index as right operand.
      B_weights : Tensor
          The edge weights of graph B as 1D tensor.
      num_vtypes : int
          The number of node types for the returned graph (must be either 1 or 2).
  
      Returns
      -------
      C : HeteroGraphIndex
          The output graph index.
      C_weights : Tensor
          The edge weights of the output graph.
      """
      C, C_weights = _CAPI_DGLCSRMM(
          A,
          F.to_dgl_nd(A_weights),
          B,
          F.to_dgl_nd(B_weights),
          num_vtypes,
      )
      return C, F.from_dgl_nd(C_weights)
  
imports: from __future__ import absolute_import
  from .None import backend, ndarray
  from ._ffi.function import _init_api
  from .base import DGLError
label_desc: Use image node_id 19 for calling a global function with example usage: _csrmm(A, A_weights, B, B_weights, num_vtypes) and returns: C,  F