def test_syevj(self): a = cupy.array(self.a, order=self.order) w, v = cusolver.syevj(a, UPLO=self.UPLO, with_eigen_vector=True) # check eignvalue equation testing.assert_allclose(self.a.dot( v.get()), w * v, rtol=1e-3, atol=1e-4)
def test_syevjBatched(self): lda, m = self.a.shape na = numpy.stack([self.a, self.a + numpy.diag(numpy.ones(m))]) a = cupy.array(na, order=self.order) w, v = cusolver.syevj(a, UPLO=self.UPLO, with_eigen_vector=True) # check eignvalue equation batch_size = a.shape[0] for i in range(batch_size): testing.assert_allclose( na[i].dot(v[i].get()), w[i] * v[i], rtol=1e-3, atol=1e-4) # check arbitrary batch dimension shape na = numpy.stack([na, na, na]) a = cupy.array(na, order=self.order) w, v = cusolver.syevj(a, UPLO=self.UPLO, with_eigen_vector=True) assert v.shape == a.shape assert w.shape == a.shape[:-1]