From 793c8e026ea2e9566a73d38183348a1dce950f69 Mon Sep 17 00:00:00 2001 From: Johannes M Dieterich Date: Fri, 17 Aug 2018 09:37:30 -0500 Subject: [PATCH 01/19] Import skipIfRocm macro --- test/test_distributions.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/test/test_distributions.py b/test/test_distributions.py index 0419206b827541..469c4fc77f2144 100644 --- a/test/test_distributions.py +++ b/test/test_distributions.py @@ -31,7 +31,7 @@ import torch from torch._six import inf -from common import TestCase, run_tests, set_rng_seed, TEST_WITH_UBSAN +from common import TestCase, run_tests, set_rng_seed, TEST_WITH_UBSAN, skipIfRocm from common_cuda import TEST_CUDA from torch.autograd import grad, gradcheck from torch.distributions import (Bernoulli, Beta, Binomial, Categorical, From 82548f1ff5571dc6fa6866244db1041dd9207c61 Mon Sep 17 00:00:00 2001 From: Johannes M Dieterich Date: Fri, 17 Aug 2018 09:39:30 -0500 Subject: [PATCH 02/19] Skip tests due to failed asserts. --- test/test_distributions.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/test/test_distributions.py b/test/test_distributions.py index 469c4fc77f2144..66718fd5dc0f0e 100644 --- a/test/test_distributions.py +++ b/test/test_distributions.py @@ -3951,6 +3951,7 @@ def test_biject_to(self): self.assertEqual(j.shape, x.shape[:x.dim() - t.event_dim]) @unittest.skipIf(not TEST_CUDA, "CUDA not found") + @skipIfRocm def test_biject_to_cuda(self): for constraint in self.get_constraints(is_cuda=True): try: @@ -3983,6 +3984,7 @@ def test_transform_to(self): self.assertEqual(y, y2, message="Error in transform_to({}) pseudoinverse".format(constraint)) @unittest.skipIf(not TEST_CUDA, "CUDA not found") + @skipIfRocm def test_transform_to_cuda(self): for constraint in self.get_constraints(is_cuda=True): t = transform_to(constraint) From 4543209b6dd97730be1a368aa6acec009017286d Mon Sep 17 00:00:00 2001 From: Johannes M Dieterich Date: Fri, 17 Aug 2018 09:41:55 -0500 Subject: [PATCH 03/19] Disable tests missing LAPACK on ROCm --- test/test_distributions.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/test/test_distributions.py b/test/test_distributions.py index 66718fd5dc0f0e..2aa18618f6a613 100644 --- a/test/test_distributions.py +++ b/test/test_distributions.py @@ -3252,6 +3252,7 @@ def test_kl_edgecases(self): self.assertEqual(kl_divergence(Bernoulli(1), Bernoulli(1)), 0) self.assertEqual(kl_divergence(Categorical(torch.tensor([0., 1.])), Categorical(torch.tensor([0., 1.]))), 0) + @skipIfRocm def test_kl_shape(self): for Dist, params in EXAMPLES: for i, param in enumerate(params): @@ -4002,6 +4003,7 @@ def setUp(self): super(TestCase, self).setUp() Distribution.set_default_validate_args(True) + @skipIfRocm def test_valid(self): for Dist, params in EXAMPLES: for i, param in enumerate(params): From f11c08a65dc5e2ad689dae44a182f0b54850ea51 Mon Sep 17 00:00:00 2001 From: Johannes M Dieterich Date: Fri, 17 Aug 2018 09:43:36 -0500 Subject: [PATCH 04/19] Missing LAPACK --- test/test_distributions.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/test/test_distributions.py b/test/test_distributions.py index 2aa18618f6a613..fc83cca301d9c0 100644 --- a/test/test_distributions.py +++ b/test/test_distributions.py @@ -3154,6 +3154,7 @@ def test_kl_multivariate_normal(self): 'Actual (analytic): {}'.format(actual), ])) + @skipIfRocm def test_kl_multivariate_normal_batched(self): b = 7 # Number of batches loc = [torch.randn(b, 3) for _ in range(0, 2)] @@ -3165,6 +3166,7 @@ def test_kl_multivariate_normal_batched(self): MultivariateNormal(loc[1], scale_tril=scale_tril[1])) self.assertEqual(expected_kl, actual_kl) + @skipIfRocm def test_kl_multivariate_normal_batched_broadcasted(self): b = 7 # Number of batches loc = [torch.randn(b, 3) for _ in range(0, 2)] From 3d0405130e7b20283cb97a44e609e76b8a8a0c02 Mon Sep 17 00:00:00 2001 From: Johannes M Dieterich Date: Fri, 17 Aug 2018 09:45:21 -0500 Subject: [PATCH 05/19] Missing LAPACK --- test/test_distributions.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/test/test_distributions.py b/test/test_distributions.py index fc83cca301d9c0..ee18fd43351321 100644 --- a/test/test_distributions.py +++ b/test/test_distributions.py @@ -3129,6 +3129,7 @@ def test_kl_monte_carlo(self): # Multivariate normal has a separate Monte Carlo based test due to the requirement of random generation of # positive (semi) definite matrices. n is set to 5, but can be increased during testing. + @skipIfRocm def test_kl_multivariate_normal(self): set_rng_seed(0) # see Note [Randomized statistical tests] n = 5 # Number of tests for multivariate_normal @@ -3219,6 +3220,7 @@ def test_kl_lowrank_multivariate_normal(self): 'Actual (analytic): {}'.format(actual_full_lowrank), ])) + @skipIfRocm def test_kl_lowrank_multivariate_normal_batched(self): b = 7 # Number of batches loc = [torch.randn(b, 3) for _ in range(0, 2)] From 37d9df39ffead1c1c25b8656627690093f5fbee6 Mon Sep 17 00:00:00 2001 From: Johannes M Dieterich Date: Fri, 17 Aug 2018 09:46:48 -0500 Subject: [PATCH 06/19] Missing LAPACK --- test/test_distributions.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/test/test_distributions.py b/test/test_distributions.py index ee18fd43351321..a11fcfb8fe8fb3 100644 --- a/test/test_distributions.py +++ b/test/test_distributions.py @@ -3180,6 +3180,7 @@ def test_kl_multivariate_normal_batched_broadcasted(self): MultivariateNormal(loc[1], scale_tril=scale_tril[1])) self.assertEqual(expected_kl, actual_kl) + @skipIfRocm def test_kl_lowrank_multivariate_normal(self): set_rng_seed(0) # see Note [Randomized statistical tests] n = 5 # Number of tests for lowrank_multivariate_normal @@ -3272,6 +3273,7 @@ def test_kl_shape(self): 'Actual {}'.format(kl.shape), ])) + @skipIfRocm def test_entropy_monte_carlo(self): set_rng_seed(0) # see Note [Randomized statistical tests] for Dist, params in EXAMPLES: From 5e969796aa5dc5b7f5dccc0db1f01b9fe25ceeb0 Mon Sep 17 00:00:00 2001 From: Johannes M Dieterich Date: Fri, 17 Aug 2018 09:48:10 -0500 Subject: [PATCH 07/19] Missing LAPACK --- test/test_distributions.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/test/test_distributions.py b/test/test_distributions.py index a11fcfb8fe8fb3..8ba8d61a2efeae 100644 --- a/test/test_distributions.py +++ b/test/test_distributions.py @@ -713,6 +713,7 @@ def _check_enumerate_support(self, dist, examples): actual = dist(param).enumerate_support() self.assertEqual(actual, expected) + @skipIfRocm def test_sample_detached(self): for Dist, params in EXAMPLES: for i, param in enumerate(params): @@ -725,6 +726,7 @@ def test_sample_detached(self): msg='{} example {}/{}, .sample() is not detached'.format( Dist.__name__, i + 1, len(params))) + @skipIfRocm def test_rsample_requires_grad(self): for Dist, params in EXAMPLES: for i, param in enumerate(params): From b9499be44823e8c626594c91b0237c5c70ba7543 Mon Sep 17 00:00:00 2001 From: Johannes M Dieterich Date: Fri, 17 Aug 2018 09:49:18 -0500 Subject: [PATCH 08/19] Missing LAPACK --- test/test_distributions.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/test/test_distributions.py b/test/test_distributions.py index 8ba8d61a2efeae..d64aa913c6b435 100644 --- a/test/test_distributions.py +++ b/test/test_distributions.py @@ -1645,6 +1645,7 @@ def test_lowrank_multivariate_normal_moments(self): empirical_var = samples.var(0) self.assertEqual(d.variance, empirical_var, prec=0.02) + @skipIfRocm def test_multivariate_normal_shape(self): mean = torch.randn(5, 3, requires_grad=True) mean_no_batch = torch.randn(3, requires_grad=True) @@ -1750,6 +1751,7 @@ def test_multivariate_normal_sample(self): 'MultivariateNormal(loc={}, scale_tril={})'.format(mean, scale_tril), multivariate=True) + @skipIfRocm def test_multivariate_normal_properties(self): loc = torch.randn(5) scale_tril = transform_to(constraints.lower_cholesky)(torch.randn(5, 5)) From fb40cf495095d256cb4c0752bf6e5b683966eab5 Mon Sep 17 00:00:00 2001 From: Johannes M Dieterich Date: Fri, 17 Aug 2018 09:50:30 -0500 Subject: [PATCH 09/19] Missing LAPACK --- test/test_distributions.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/test/test_distributions.py b/test/test_distributions.py index d64aa913c6b435..62a1f44c62056a 100644 --- a/test/test_distributions.py +++ b/test/test_distributions.py @@ -1526,6 +1526,7 @@ def test_normal_sample(self): scipy.stats.norm(loc=loc, scale=scale), 'Normal(mean={}, std={})'.format(loc, scale)) + @skipIfRocm def test_lowrank_multivariate_normal_shape(self): mean = torch.randn(5, 3, requires_grad=True) mean_no_batch = torch.randn(3, requires_grad=True) @@ -1619,6 +1620,7 @@ def test_lowrank_multivariate_normal_sample(self): 'LowRankMultivariateNormal(loc={}, cov_factor={}, cov_diag={})' .format(mean, cov_factor, cov_diag), multivariate=True) + @skipIfRocm def test_lowrank_multivariate_normal_properties(self): loc = torch.randn(5) cov_factor = torch.randn(5, 2) From 6ebe81ced3ceace42be8e1826786091ebbd7aeed Mon Sep 17 00:00:00 2001 From: Johannes M Dieterich Date: Fri, 17 Aug 2018 09:52:03 -0500 Subject: [PATCH 10/19] Missing LAPACK --- test/test_distributions.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/test/test_distributions.py b/test/test_distributions.py index 62a1f44c62056a..8bd63abaad77ba 100644 --- a/test/test_distributions.py +++ b/test/test_distributions.py @@ -751,6 +751,7 @@ def test_enumerate_support_type(self): except NotImplementedError: pass + @skipIfRocm def test_lazy_property_grad(self): x = torch.randn(1, requires_grad=True) @@ -1635,6 +1636,7 @@ def test_lowrank_multivariate_normal_properties(self): self.assertEqual(m1.precision_matrix, m2.precision_matrix) self.assertEqual(m1.entropy(), m2.entropy()) + @skipIfRocm def test_lowrank_multivariate_normal_moments(self): set_rng_seed(0) # see Note [Randomized statistical tests] mean = torch.randn(5) From 2e2238e3a143e4da969d26bfb53731cdd2c303b2 Mon Sep 17 00:00:00 2001 From: Johannes M Dieterich Date: Fri, 17 Aug 2018 09:53:35 -0500 Subject: [PATCH 11/19] Missing LAPACK --- test/test_distributions.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/test/test_distributions.py b/test/test_distributions.py index 8bd63abaad77ba..18526d0d1eaed9 100644 --- a/test/test_distributions.py +++ b/test/test_distributions.py @@ -740,6 +740,7 @@ def test_rsample_requires_grad(self): msg='{} example {}/{}, .rsample() does not require grad'.format( Dist.__name__, i + 1, len(params))) + @skipIfRocm def test_enumerate_support_type(self): for Dist, params in EXAMPLES: for i, param in enumerate(params): @@ -2146,6 +2147,7 @@ def test_beta_sample(self): x = Beta(Tensor([1e-6]), Tensor([1e-6])).sample()[0] self.assertTrue(np.isfinite(x) and x > 0, 'Invalid Beta.sample(): {}'.format(x)) + @skipIfRocm def test_independent_shape(self): for Dist, params in EXAMPLES: for i, param in enumerate(params): From 19a9e4ca4a515184d1ef9fcf94583f2f7f69382e Mon Sep 17 00:00:00 2001 From: Johannes M Dieterich Date: Fri, 17 Aug 2018 09:54:50 -0500 Subject: [PATCH 12/19] Missing LAPACK --- test/test_distributions.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/test/test_distributions.py b/test/test_distributions.py index 18526d0d1eaed9..71b6ae391fe675 100644 --- a/test/test_distributions.py +++ b/test/test_distributions.py @@ -2176,6 +2176,7 @@ def test_independent_shape(self): except NotImplementedError: pass + @skipIfRocm def test_cdf_icdf_inverse(self): # Tests the invertibility property on the distributions for Dist, params in EXAMPLES: @@ -2195,6 +2196,7 @@ def test_cdf_icdf_inverse(self): 'icdf(cdf(x)) = {}'.format(actual), ])) + @skipIfRocm def test_cdf_log_prob(self): # Tests if the differentiation of the CDF gives the PDF at a given value for Dist, params in EXAMPLES: From 1b2133af70bab8b07a049e8e2612570b2c360c40 Mon Sep 17 00:00:00 2001 From: Johannes M Dieterich Date: Fri, 17 Aug 2018 09:56:07 -0500 Subject: [PATCH 13/19] Missing LAPACK --- test/test_distributions.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/test/test_distributions.py b/test/test_distributions.py index 71b6ae391fe675..2ba05d78de5d5a 100644 --- a/test/test_distributions.py +++ b/test/test_distributions.py @@ -2588,6 +2588,7 @@ def tearDown(self): super(TestCase, self).tearDown() Distribution.set_default_validate_args(False) + @skipIfRocm def test_entropy_shape(self): for Dist, params in EXAMPLES: for i, param in enumerate(params): @@ -3352,6 +3353,7 @@ def test_params_contains(self): Dist.__name__, i + 1, len(params), name, value) self.assertTrue(constraint.check(value).all(), msg=message) + @skipIfRocm def test_support_contains(self): for Dist, params in EXAMPLES: self.assertIsInstance(Dist.support, Constraint) From d06f2402de6b9a1405728f2c822b454c46bc8826 Mon Sep 17 00:00:00 2001 From: Johannes M Dieterich Date: Fri, 17 Aug 2018 09:57:04 -0500 Subject: [PATCH 14/19] Missing LAPACK --- test/test_distributions.py | 1 + 1 file changed, 1 insertion(+) diff --git a/test/test_distributions.py b/test/test_distributions.py index 2ba05d78de5d5a..668aedf8ad05b6 100644 --- a/test/test_distributions.py +++ b/test/test_distributions.py @@ -3330,6 +3330,7 @@ def test_entropy_exponential_family(self): class TestConstraints(TestCase): + @skipIfRocm def test_params_contains(self): for Dist, params in EXAMPLES: for i, param in enumerate(params): From 820203190802cdaaeea3139e7bf18a8aa49a0527 Mon Sep 17 00:00:00 2001 From: Johannes M Dieterich Date: Fri, 17 Aug 2018 09:59:42 -0500 Subject: [PATCH 15/19] Remove distributions from blacklist. --- test/run_test.py | 1 - 1 file changed, 1 deletion(-) diff --git a/test/run_test.py b/test/run_test.py index 0c80581c7e51cb..70bf3d190411a1 100644 --- a/test/run_test.py +++ b/test/run_test.py @@ -44,7 +44,6 @@ 'cpp_extensions', 'cuda', 'distributed', - 'distributions', 'jit', 'legacy_nn', 'multiprocessing', From a2c75bca27bc231fa8bfe31d620f606a67dfbdb3 Mon Sep 17 00:00:00 2001 From: Johannes M Dieterich Date: Fri, 17 Aug 2018 11:38:09 -0500 Subject: [PATCH 16/19] Test fails on CI w/ symbol lookup error. --- test/test_distributions.py | 1 + 1 file changed, 1 insertion(+) diff --git a/test/test_distributions.py b/test/test_distributions.py index 668aedf8ad05b6..a140d642afbcaf 100644 --- a/test/test_distributions.py +++ b/test/test_distributions.py @@ -1915,6 +1915,7 @@ def test_gamma_sample(self): @unittest.skipIf(not TEST_CUDA, "CUDA not found") @unittest.skipIf(not TEST_NUMPY, "Numpy not found") + @skipIfRocm def test_gamma_gpu_sample(self): set_rng_seed(0) for alpha, beta in product([0.1, 1.0, 5.0], [0.1, 1.0, 10.0]): From 55994c45bc5f6a6ab43b704018320a2319b41555 Mon Sep 17 00:00:00 2001 From: Johannes M Dieterich Date: Fri, 17 Aug 2018 12:27:39 -0500 Subject: [PATCH 17/19] Fails on CI due to undefined symbol error. --- test/test_distributions.py | 1 + 1 file changed, 1 insertion(+) diff --git a/test/test_distributions.py b/test/test_distributions.py index a140d642afbcaf..e8797e384d8c32 100644 --- a/test/test_distributions.py +++ b/test/test_distributions.py @@ -1885,6 +1885,7 @@ def ref_log_prob(idx, x, log_prob): @unittest.skipIf(not TEST_CUDA, "CUDA not found") @unittest.skipIf(not TEST_NUMPY, "NumPy not found") + @skipIfRocm def test_gamma_gpu_shape(self): alpha = torch.tensor(torch.exp(torch.randn(2, 3).cuda()), requires_grad=True) beta = torch.tensor(torch.exp(torch.randn(2, 3).cuda()), requires_grad=True) From 757d130017a5b9bfe8132f2ca9ef03b5646dcf81 Mon Sep 17 00:00:00 2001 From: Johannes M Dieterich Date: Fri, 17 Aug 2018 15:08:56 -0500 Subject: [PATCH 18/19] Fails on CI w/ an unresolved symbol error. --- test/test_distributions.py | 1 + 1 file changed, 1 insertion(+) diff --git a/test/test_distributions.py b/test/test_distributions.py index e8797e384d8c32..60307bc9b885c9 100644 --- a/test/test_distributions.py +++ b/test/test_distributions.py @@ -1121,6 +1121,7 @@ def test_poisson_sample(self): @unittest.skipIf(not TEST_CUDA, "CUDA not found") @unittest.skipIf(not TEST_NUMPY, "Numpy not found") + @skipIfRocm def test_poisson_gpu_sample(self): set_rng_seed(1) for rate in [0.12, 0.9, 4.0]: From 3bd2704067b5a68688313cd38b038bd780ea6d95 Mon Sep 17 00:00:00 2001 From: Johannes M Dieterich Date: Fri, 17 Aug 2018 16:06:05 -0500 Subject: [PATCH 19/19] Missing LAPACK at compile time. --- test/test_distributions.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/test/test_distributions.py b/test/test_distributions.py index 60307bc9b885c9..7ae77dead800e7 100644 --- a/test/test_distributions.py +++ b/test/test_distributions.py @@ -1578,6 +1578,7 @@ def test_lowrank_multivariate_normal_shape(self): (mean_multi_batch, cov_factor_batched, cov_diag_batched)) @unittest.skipIf(not TEST_NUMPY, "Numpy not found") + @skipIfRocm def test_lowrank_multivariate_normal_log_prob(self): mean = torch.randn(3, requires_grad=True) cov_factor = torch.randn(3, 1, requires_grad=True) @@ -1611,6 +1612,7 @@ def test_lowrank_multivariate_normal_log_prob(self): self.assertAlmostEqual(0.0, (batched_prob - unbatched_prob).abs().max(), places=3) @unittest.skipIf(not TEST_NUMPY, "NumPy not found") + @skipIfRocm def test_lowrank_multivariate_normal_sample(self): set_rng_seed(0) # see Note [Randomized statistical tests] mean = torch.randn(5, requires_grad=True) @@ -1699,6 +1701,7 @@ def test_multivariate_normal_shape(self): self._gradcheck_log_prob(MultivariateNormal, (mean_no_batch, None, None, scale_tril_batched)) @unittest.skipIf(not TEST_NUMPY, "Numpy not found") + @skipIfRocm def test_multivariate_normal_log_prob(self): mean = torch.randn(3, requires_grad=True) tmp = torch.randn(3, 10) @@ -1736,6 +1739,7 @@ def test_multivariate_normal_log_prob(self): self.assertAlmostEqual(0.0, (batched_prob - unbatched_prob).abs().max(), places=3) @unittest.skipIf(not TEST_NUMPY, "NumPy not found") + @skipIfRocm def test_multivariate_normal_sample(self): set_rng_seed(0) # see Note [Randomized statistical tests] mean = torch.randn(3, requires_grad=True) @@ -3637,6 +3641,7 @@ def setUp(self): ) ] + @skipIfRocm def test_mean(self): for pytorch_dist, scipy_dist in self.distribution_pairs: if isinstance(pytorch_dist, (Cauchy, HalfCauchy)): @@ -3647,6 +3652,7 @@ def test_mean(self): else: self.assertEqual(pytorch_dist.mean, scipy_dist.mean(), allow_inf=True, message=pytorch_dist) + @skipIfRocm def test_variance_stddev(self): for pytorch_dist, scipy_dist in self.distribution_pairs: if isinstance(pytorch_dist, (Cauchy, HalfCauchy)): @@ -3662,6 +3668,7 @@ def test_variance_stddev(self): self.assertEqual(pytorch_dist.variance, scipy_dist.var(), allow_inf=True, message=pytorch_dist) self.assertEqual(pytorch_dist.stddev, scipy_dist.var() ** 0.5, message=pytorch_dist) + @skipIfRocm def test_cdf(self): for pytorch_dist, scipy_dist in self.distribution_pairs: samples = pytorch_dist.sample((5,)) @@ -3671,6 +3678,7 @@ def test_cdf(self): continue self.assertEqual(cdf, scipy_dist.cdf(samples), message=pytorch_dist) + @skipIfRocm def test_icdf(self): for pytorch_dist, scipy_dist in self.distribution_pairs: samples = torch.rand((5,) + pytorch_dist.batch_shape)