From fa0d33e2e3c0b034bb8e04f3fcfcf5b263a12a86 Mon Sep 17 00:00:00 2001 From: niboshi Date: Mon, 4 Dec 2017 18:03:33 +0900 Subject: [PATCH 1/3] Merge pull request #805 from toslunar/cast-env-seed Cast CUPY_SEED environment variable to uint64 --- cupy/random/generator.py | 2 + .../cupy_tests/random_tests/test_generator.py | 49 ++++++++++++++----- 2 files changed, 39 insertions(+), 12 deletions(-) diff --git a/cupy/random/generator.py b/cupy/random/generator.py index 35c0ca5739c..d6a3cf95784 100644 --- a/cupy/random/generator.py +++ b/cupy/random/generator.py @@ -409,6 +409,8 @@ def get_random_state(): seed = os.getenv('CUPY_SEED') if seed is None: seed = os.getenv('CHAINER_SEED') + if seed is not None: + seed = numpy.uint64(int(seed)) rs = RandomState(seed) rs = _random_states.setdefault(dev.id, rs) return rs diff --git a/tests/cupy_tests/random_tests/test_generator.py b/tests/cupy_tests/random_tests/test_generator.py index ca5e35b7ca5..9c7ff3f89e7 100644 --- a/tests/cupy_tests/random_tests/test_generator.py +++ b/tests/cupy_tests/random_tests/test_generator.py @@ -1,4 +1,3 @@ -import mock import operator import os import threading @@ -551,15 +550,12 @@ def test_thread_safe(self): class TestGetRandomState2(unittest.TestCase): def setUp(self): - self.rs_tmp = generator.RandomState - generator.RandomState = mock.Mock() self.rs_dict = generator._random_states generator._random_states = {} self.cupy_seed = os.getenv('CUPY_SEED') self.chainer_seed = os.getenv('CHAINER_SEED') def tearDown(self, *args): - generator.RandomState = self.rs_tmp generator._random_states = self.rs_dict if self.cupy_seed is None: os.environ.pop('CUPY_SEED', None) @@ -573,26 +569,55 @@ def tearDown(self, *args): def test_get_random_state_no_cupy_no_chainer_seed(self): os.environ.pop('CUPY_SEED', None) os.environ.pop('CHAINER_SEED', None) - generator.get_random_state() - generator.RandomState.assert_called_with(None) + rvs0 = self._get_rvs_reset() + rvs1 = self._get_rvs_reset() + + self._check_different(rvs0, rvs1) def test_get_random_state_no_cupy_with_chainer_seed(self): + rvs0 = self._get_rvs(generator.RandomState(5)) + os.environ.pop('CUPY_SEED', None) os.environ['CHAINER_SEED'] = '5' - generator.get_random_state() - generator.RandomState.assert_called_with('5') + rvs1 = self._get_rvs_reset() + + self._check_same(rvs0, rvs1) def test_get_random_state_with_cupy_no_chainer_seed(self): + rvs0 = self._get_rvs(generator.RandomState(6)) + os.environ['CUPY_SEED'] = '6' os.environ.pop('CHAINER_SEED', None) - generator.get_random_state() - generator.RandomState.assert_called_with('6') + rvs1 = self._get_rvs_reset() + + self._check_same(rvs0, rvs1) def test_get_random_state_with_cupy_with_chainer_seed(self): + rvs0 = self._get_rvs(generator.RandomState(7)) + os.environ['CUPY_SEED'] = '7' os.environ['CHAINER_SEED'] = '8' - generator.get_random_state() - generator.RandomState.assert_called_with('7') + rvs1 = self._get_rvs_reset() + + self._check_same(rvs0, rvs1) + + def _get_rvs(self, rs): + rvu = rs.rand(4) + rvn = rs.randn(4) + return rvu, rvn + + def _get_rvs_reset(self): + generator.reset_states() + return self._get_rvs(generator.get_random_state()) + + def _check_same(self, rvs0, rvs1): + for rv0, rv1 in zip(rvs0, rvs1): + testing.assert_array_equal(rv0, rv1) + + def _check_different(self, rvs0, rvs1): + for rv0, rv1 in zip(rvs0, rvs1): + for r0, r1 in zip(rv0, rv1): + self.assertNotEqual(r0, r1) class TestCheckAndGetDtype(unittest.TestCase): From 69bed934f79a451ba5f02f4d208183e10199375c Mon Sep 17 00:00:00 2001 From: Seiya Tokui Date: Mon, 4 Dec 2017 18:23:18 +0900 Subject: [PATCH 2/3] Update to 2.1.0.1 --- cupy/_version.py | 2 +- docker/python2/Dockerfile | 2 +- docker/python3/Dockerfile | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/cupy/_version.py b/cupy/_version.py index a33997dd100..38da91ee5a4 100644 --- a/cupy/_version.py +++ b/cupy/_version.py @@ -1 +1 @@ -__version__ = '2.1.0' +__version__ = '2.1.0.1' diff --git a/docker/python2/Dockerfile b/docker/python2/Dockerfile index 675123c8279..3d7ca934793 100644 --- a/docker/python2/Dockerfile +++ b/docker/python2/Dockerfile @@ -6,4 +6,4 @@ RUN apt-get update -y && \ python-pip && \ rm -rf /var/lib/apt/lists/* /var/cache/apt/archives/* -RUN pip install cupy==2.1.0 +RUN pip install cupy==2.1.0.1 diff --git a/docker/python3/Dockerfile b/docker/python3/Dockerfile index 474f58956a8..170ec5e1167 100644 --- a/docker/python3/Dockerfile +++ b/docker/python3/Dockerfile @@ -6,4 +6,4 @@ RUN apt-get update -y && \ python3-pip && \ rm -rf /var/lib/apt/lists/* /var/cache/apt/archives/* -RUN pip3 install cupy==2.1.0 +RUN pip3 install cupy==2.1.0.1 From 2f8b7b33c001b3a99cb27dfed517830a176ed2f9 Mon Sep 17 00:00:00 2001 From: Seiya Tokui Date: Mon, 4 Dec 2017 18:54:54 +0900 Subject: [PATCH 3/3] Fix the incorrect merge conflict resolution --- tests/cupy_tests/random_tests/test_generator.py | 1 + 1 file changed, 1 insertion(+) diff --git a/tests/cupy_tests/random_tests/test_generator.py b/tests/cupy_tests/random_tests/test_generator.py index 9c7ff3f89e7..7277644cfcd 100644 --- a/tests/cupy_tests/random_tests/test_generator.py +++ b/tests/cupy_tests/random_tests/test_generator.py @@ -1,3 +1,4 @@ +import mock import operator import os import threading