Пример #1
0
 def test_dgmm_out(self, dtype):
     self._setup(dtype)
     if self.side == 'L':
         ref = cupy.diag(self.x) @ self.a
     elif self.side == 'R':
         ref = self.a @ cupy.diag(self.x)
     c = cupy.empty(self.shape, order=self.orderc, dtype=dtype)
     cublas.dgmm(self.side, self.a, self.x, out=c)
     cupy.testing.assert_allclose(c, ref, rtol=self.tol, atol=self.tol)
Пример #2
0
 def test_dgmm_inplace(self, dtype):
     if self.orderc != 'F':
         pytest.skip()
     self._setup(dtype)
     if self.side == 'L':
         ref = cupy.diag(self.x) @ self.a
     elif self.side == 'R':
         ref = self.a @ cupy.diag(self.x)
     cublas.dgmm(self.side, self.a, self.x, out=self.a)
     cupy.testing.assert_allclose(self.a, ref, rtol=self.tol, atol=self.tol)
Пример #3
0
 def test_dgmm_x_scalar(self, dtype):
     if self.orderc != 'F':
         pytest.skip()
     self._setup(dtype, xdim=0)
     ref = self.x * self.a
     c = cublas.dgmm(self.side, self.a, self.x, incx=0)
     cupy.testing.assert_allclose(c, ref, rtol=self.tol, atol=self.tol)
Пример #4
0
 def test_dgmm(self, dtype):
     if self.orderc != 'F':
         raise unittest.SkipTest()
     self._setup(dtype)
     if self.side == 'L':
         ref = cupy.diag(self.x) @ self.a
     elif self.side == 'R':
         ref = self.a @ cupy.diag(self.x)
     c = cublas.dgmm(self.side, self.a, self.x)
     cupy.testing.assert_allclose(c, ref, rtol=self.tol, atol=self.tol)
Пример #5
0
 def test_gdmm_incx_minus_one(self, dtype):
     if self.orderc != 'F':
         raise unittest.SkipTest()
     self._setup(dtype)
     if self.side == 'L':
         ref = cupy.diag(self.x[::-1]) @ self.a
     elif self.side == 'R':
         ref = self.a @ cupy.diag(self.x[::-1])
     c = cublas.dgmm(self.side, self.a, self.x, incx=-1)
     cupy.testing.assert_allclose(c, ref, rtol=self.tol, atol=self.tol)
Пример #6
0
 def test_dgmm_x_matrix(self, dtype):
     if self.orderc != 'F':
         pytest.skip()
     self._setup(dtype, xdim=2)
     if self.side == 'L':
         ref = cupy.diag(cupy.diag(self.x)) @ self.a
         incx = self.shape[0] + 1
     elif self.side == 'R':
         ref = self.a @ cupy.diag(cupy.diag(self.x))
         incx = self.shape[1] + 1
     c = cublas.dgmm(self.side, self.a, self.x, incx=incx)
     cupy.testing.assert_allclose(c, ref, rtol=self.tol, atol=self.tol)
Пример #7
0
 def test_dgmm_incx_minus_one(self, dtype):
     if self.orderc != 'F':
         pytest.skip()
     if cupy.cuda.runtime.is_hip:
         if self._check_dgmm_incx_minus_one_hip_skip_condition():
             pytest.xfail('HIP dgmm may have a bug')
     self._setup(dtype)
     if self.side == 'L':
         ref = cupy.diag(self.x[::-1]) @ self.a
     elif self.side == 'R':
         ref = self.a @ cupy.diag(self.x[::-1])
     c = cublas.dgmm(self.side, self.a, self.x, incx=-1)
     cupy.testing.assert_allclose(c, ref, rtol=self.tol, atol=self.tol)