code: def spsolve(data, indices, indptr, b, tol=1e-6, reorder=1):
      """A sparse direct solver using QR factorization.
  
      Accepts a sparse matrix in CSR format `data, indices, indptr` arrays.
      Currently only the CUDA GPU backend is implemented.
  
      Args:
        data : An array containing the non-zero entries of the CSR matrix.
        indices : The column indices of the CSR matrix.
        indptr : The row pointer array of the CSR matrix.
        b : The right hand side of the linear system.
        tol : Tolerance to decide if singular or not. Defaults to 1e-6.
        reorder : The reordering scheme to use to reduce fill-in. No reordering if
          ``reorder=0``. Otherwise, symrcm, symamd, or csrmetisnd (``reorder=1,2,3``),
          respectively. Defaults to symrcm.
  
      Returns:
        An array with the same dtype and size as b representing the solution to
        the sparse linear system.
      """
      return spsolve_p.bind(
          data, indices, indptr, b, tol=tol, reorder=reorder
      )
  
imports: from __future__ import annotations
  from typing import Union, Callable
  import functools
  import jax
  import jax.numpy
  from jax.experimental import sparse
  from jax.interpreters import mlir
  from jax.interpreters import xla
  from jax._src import core
  from jax._src.interpreters import ad
  from jax._src.lib import gpu_solver
  import numpy
  from scipy.sparse import csr_matrix, linalg
label_desc: Use image node_id 20 for calling a global function with example usage: spsolve(data, indices, indptr, b, tol, reorder) and returns: spsolve_p