code: def test_gpu_tree_explainer_shap(task, feature_perturbation):
      model, X, _ = task
      gpu_ex = shap.GPUTreeExplainer(
          model, X, feature_perturbation=feature_perturbation
      )
      ex = shap.TreeExplainer(
          model, X, feature_perturbation=feature_perturbation
      )
      host_shap = ex.shap_values(X, check_additivity=True)
      gpu_shap = gpu_ex.shap_values(X, check_additivity=True)
  
      # Check outputs roughly the same as CPU algorithm
      assert np.allclose(
          ex.expected_value, gpu_ex.expected_value, 1e-3, 1e-3
      )
      assert np.allclose(host_shap, gpu_shap, 1e-3, 1e-3)
  
imports: import numpy
  import pytest
  import sklearn
  import shap
  from shap.utils import assert_import
label_desc: Use image node_id 15 for calling a global function with example usage: test_gpu_tree_explainer_shap(task, feature_perturbation) without return types