code: def test_stable_sort_by_key(self, order):
      if runtime.is_hip:
          pytest.skip("See https://github.com/cupy/cupy/pull/7162")
  
      @jit.rawkernel()
      def stable_sort_by_key(x, y):
          i = jit.threadIdx.x
          x_array = x[i]
          y_array = y[i]
          jit.thrust.stable_sort_by_key(
              jit.thrust.device,
              x_array.begin(),
              x_array.end(),
              y_array.begin(),
          )
  
      h, w = (256, 256)
      x = cupy.arange(h * w, dtype=numpy.int32)
      cupy.random.shuffle(x)
      x = x.reshape(h, w)
      y = testing.shaped_random(
          (h, w), dtype=numpy.int32, scale=20000, order=order, seed=1
      )
      x_numpy = cupy.asnumpy(x)
      y_numpy = cupy.asnumpy(y)
      stable_sort_by_key[1, 256](x, y)
  
      indices = numpy.argsort(x_numpy, axis=-1)
      x_expected = numpy.array([a[i] for a, i in zip(x_numpy, indices)])
      y_expected = numpy.array([a[i] for a, i in zip(y_numpy, indices)])
      testing.assert_array_equal(x, x_expected)
      testing.assert_array_equal(y, y_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 49 for calling the TestThrust obj's underlying member method code with example usage: obj.test_stable_sort_by_key(order) without return types