code: def test_exclusive_scan_by_key(self):
      @jit.rawkernel()
      def exclusive_scan_by_key(key, value):
          jit.thrust.exclusive_scan_by_key(
              jit.thrust.device,
              key.begin(),
              key.end(),
              value.begin(),
              value.begin(),
              5,
          )
  
      key = cupy.array([0, 0, 0, 1, 1, 2, 3, 3, 3, 3])
      value = cupy.array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1])
      exclusive_scan_by_key[1, 1](key, value)
  
      expected = cupy.array([5, 6, 7, 5, 6, 5, 5, 6, 7, 8])
      testing.assert_array_equal(value, expected)
  
imports: import numpy
  import pytest
  import cupy
  from cupy import testing
  from cupy_backends.cuda.api import runtime
  from cupyx import jit
label_desc: Use image node_id 11 for calling the TestThrust obj's underlying member method code with example usage: obj.test_exclusive_scan_by_key() without return types