code: def setUp(self):
      if not cusolver.check_availability("gesv"):
          pytest.skip("gesv is not available")
      self.dtype = numpy.dtype(self.dtype)
      self.r_dtype = self.dtype.char.lower()
      a = self._make_well_conditioned_matrix((self.n, self.n))
      if self.nrhs is None:
          x_shape = (self.n,)
      else:
          x_shape = (self.n, self.nrhs)
      self.x_ref = self._make_random_matrix(x_shape, cupy)
      b = numpy.dot(a, self.x_ref)
      self.tol = self._tol[self.r_dtype]
      self.a = cupy.array(a)
      self.b = cupy.array(b)
      if self.compute_type is not None:
          old_compute_type = _linalg.get_compute_type(self.dtype)
          _linalg.set_compute_type(self.dtype, self.compute_type)
          yield
          _linalg.set_compute_type(self.dtype, old_compute_type)
      else:
          yield
  
imports: import numpy
  import pytest
  import cupy
  from cupyx import cusolver
  from cupy import testing
  from cupy._core import _routines_linalg
  import cupyx
label_desc: Use image node_id 3 for calling the TestGesv obj's underlying member method code with example usage: obj.setUp() without return types