code: def test_gpu_coordinate_from_cupy(self):
      # Training linear model is quite expensive, so we don't include it in
      # test_from_cupy.py
      import cupy
  
      params = {
          "booster": "gblinear",
          "updater": "gpu_coord_descent",
          "n_estimators": 100,
      }
      X, y = tm.get_california_housing()
      cpu_model = xgb.XGBRegressor(**params)
      cpu_model.fit(X, y)
      cpu_predt = cpu_model.predict(X)
  
      X = cupy.array(X)
      y = cupy.array(y)
      gpu_model = xgb.XGBRegressor(**params)
      gpu_model.fit(X, y)
      gpu_predt = gpu_model.predict(X)
      cupy.testing.assert_allclose(cpu_predt, gpu_predt)
  
file_path: xgboost/tests/python-gpu/test_gpu_linear.py
imports: import pytest
  from hypothesis import assume, given, note, settings, strategies
  import xgboost
  from xgboost import testing
label_desc: Use image node_id 3 for calling the TestGPULinear obj's underlying member method code with example usage: obj.test_gpu_coordinate_from_cupy() without return types