code: def test_df_apply_rows(nelem):
      def kernel(in1, in2, in3, out1, out2, extra1, extra2):
          for i, (x, y, z) in enumerate(zip(in1, in2, in3)):
              out1[i] = extra2 * x - extra1 * y
              out2[i] = y - extra1 * z
  
      df = DataFrame()
      df["in1"] = in1 = np.arange(nelem)
      df["in2"] = in2 = np.arange(nelem)
      df["in3"] = in3 = np.arange(nelem)
  
      extra1 = 2.3
      extra2 = 3.4
  
      expect_out1 = extra2 * in1 - extra1 * in2
      expect_out2 = in2 - extra1 * in3
  
      outdf = df.apply_rows(
          kernel,
          incols=["in1", "in2", "in3"],
          outcols=dict(out1=np.float64, out2=np.float64),
          kwargs=dict(extra1=extra1, extra2=extra2),
      )
  
      got_out1 = outdf["out1"].to_numpy()
      got_out2 = outdf["out2"].to_numpy()
  
      np.testing.assert_array_almost_equal(got_out1, expect_out1)
      np.testing.assert_array_almost_equal(got_out2, expect_out2)
  
file_path: cudf/python/cudf/cudf/tests/test_cuda_apply.py
imports: import numpy
  import pytest
  from numba import cuda
  from cudf import DataFrame
  from cudf.testing._utils import assert_eq
label_desc: Use image node_id 1 for calling a global function with example usage: test_df_apply_rows(nelem) without return types