def check_normal(self, dtype): vals = self.generate_many( self.args[0], self.args[1], self.size, dtype, _count=10) shape = core.get_size(self.size) for val in vals: assert isinstance(val, cupy.ndarray) assert val.dtype == dtype assert val.shape == shape
def check_random_sample(self, dtype): vals = [self.rs.random_sample(self.size, dtype) for _ in range(10)] shape = core.get_size(self.size) for val in vals: assert isinstance(val, cupy.ndarray) assert val.dtype == dtype assert val.shape == shape assert (0 <= val).all() assert (val < 1).all()
def check_multivariate_normal(self, dtype): vals = self.generate_many( mean=self.args[0], cov=self.args[1], size=self.size, tol=self.tol, dtype=dtype, _count=10) shape = core.get_size(self.size) for val in vals: assert isinstance(val, cupy.ndarray) assert val.dtype == dtype assert val.shape == shape + (2,)
def check_normal(self, curand_func, dtype): shape = core.get_size(self.size) exp_size = six.moves.reduce(operator.mul, shape, 1) if exp_size % 2 == 1: exp_size += 1 curand_func.return_value = cupy.zeros(exp_size, dtype=dtype) out = self.rs.normal(self.args[0], self.args[1], self.size, dtype) gen, _, size, loc, scale = curand_func.call_args[0] self.assertIs(gen, self.rs._generator) self.assertEqual(size, exp_size) self.assertIs(loc, self.args[0]) self.assertIs(scale, self.args[1]) self.assertEqual(out.shape, shape)
def _generate_normal(self, func, size, dtype, *args): # curand functions below don't support odd size. # * curand.generateNormal # * curand.generateNormalDouble # * curand.generateLogNormal # * curand.generateLogNormalDouble size = core.get_size(size) element_size = six.moves.reduce(operator.mul, size, 1) if element_size % 2 == 0: out = cupy.empty(size, dtype=dtype) func(self._generator, out.data.ptr, out.size, *args) return out else: out = cupy.empty((element_size + 1,), dtype=dtype) func(self._generator, out.data.ptr, out.size, *args) return out[:element_size].reshape(size)
def _generate_normal(self, func, size, dtype, *args): # curand functions below don't support odd size. # * curand.generateNormal # * curand.generateNormalDouble # * curand.generateLogNormal # * curand.generateLogNormalDouble size = core.get_size(size) element_size = six.moves.reduce(operator.mul, size, 1) if element_size % 2 == 0: out = cupy.empty(size, dtype=dtype) func(self._generator, out.data.ptr, out.size, *args) return out else: out = cupy.empty((element_size + 1, ), dtype=dtype) func(self._generator, out.data.ptr, out.size, *args) return out[:element_size].reshape(size)
def _generate_normal(self, func, size, dtype, *args): # curand functions below don't support odd size. # * curand.generateNormal # * curand.generateNormalDouble # * curand.generateLogNormal # * curand.generateLogNormalDouble if size is None: size = () # TODO(kataoka): Remove this after #4615 is merged size = core.get_size(size) element_size = core.internal.prod(size) if element_size % 2 == 0: out = cupy.empty(size, dtype=dtype) func(self._generator, out.data.ptr, out.size, *args) return out else: out = cupy.empty((element_size + 1, ), dtype=dtype) func(self._generator, out.data.ptr, out.size, *args) return out[:element_size].reshape(size)
def test_none(self): assert core.get_size(None) == ()
def test_float(self): with self.assertRaises(ValueError): core.get_size(1.0)
def test_int(self): self.assertEqual(core.get_size(1), (1, ))
def check_collection(self, a): self.assertEqual(core.get_size(a), tuple(a))
def test_float(self): with pytest.raises(ValueError): core.get_size(1.0)
def test_int(self): self.assertEqual(core.get_size(1), (1,))
def check_collection(self, a): assert core.get_size(a) == tuple(a)
def test_int(self): assert core.get_size(1) == (1,)
def test_none(self): self.assertEqual(core.get_size(None), ())