code: def inplace_csr_row_normalize_l2(X):
      """Normalize CSR matrix inplace with L2 norm
  
      Parameters
      ----------
      X : sparse CSR matrix
          Input array
  
      Returns
      -------
      Normalized matrix
      """
      n_rows = X.indptr.shape[0]
      max_nnz = cp.diff(X.indptr).max()
      tpb = (32, 32)
      bpg_x = ceil(n_rows / tpb[0])
      bpg_y = ceil(max_nnz / tpb[1])
      bpg = (bpg_x, bpg_y)
  
      norm = cp.zeros(n_rows - 1, dtype=X.dtype)
      l2_step1_k[bpg, tpb](X.indptr, X.data, norm)
      norm = cp.sqrt(norm)
      norm_step2_k[bpg, tpb](X.indptr, X.data, norm)
  
file_path: cuml/python/cuml/thirdparty_adapters/sparsefuncs_fast.py
imports: from math import ceil
  from cuml.internals.safe_imports import gpu_only_import_from
  from cuml.internals.safe_imports import gpu_only_import
label_desc: Use image node_id 8 for calling a global function with example usage: inplace_csr_row_normalize_l2(X) without return types