code: def test_eigh_batched(self, xp, dtype):
      a = xp.array(
          [
              [[1, 0, 3], [0, 5, 0], [7, 0, 9]],
              [[3, 0, 3], [0, 7, 0], [7, 0, 11]],
          ],
          dtype,
      )
      w, v = xp.linalg.eigh(a, UPLO=self.UPLO)
  
      # NumPy, cuSOLVER, rocSOLVER all sort in ascending order,
      # so w's should be directly comparable. However, both cuSOLVER
      # and rocSOLVER pick a different convention for constructing
      # eigenvectors, so v's are not directly comparible and we verify
      # them through the eigen equation A*v=w*v.
      A = _get_hermitian(xp, a, self.UPLO)
      for i in range(a.shape[0]):
          testing.assert_allclose(
              A[i].dot(v[i]), w[i] * v[i], rtol=1e-5, atol=1e-5
          )
      return w
  
imports: import numpy
  import pytest
  import cupy
  from cupy.cuda import driver
  from cupy.cuda import runtime
  from cupy import testing
label_desc: Use image node_id 2 for calling the TestEigenvalue obj's underlying member method code with example usage: obj.test_eigh_batched(xp, dtype) and returns: w