diff --git a/dev/linter.sh b/dev/linter.sh index 84f71342..b7496dba 100755 --- a/dev/linter.sh +++ b/dev/linter.sh @@ -10,7 +10,7 @@ DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" >/dev/null 2>&1 && pwd )" DIR=$(dirname "${DIR}") -if [[ -f "${DIR}/TARGETS" ]] +if [[ -f "${DIR}/BUCK" ]] then pyfmt "${DIR}" else diff --git a/setup.py b/setup.py index eddbddb4..5a6201ae 100755 --- a/setup.py +++ b/setup.py @@ -134,7 +134,7 @@ if os.getenv("PYTORCH3D_NO_NINJA", "0") == "1": class BuildExtension(torch.utils.cpp_extension.BuildExtension): def __init__(self, *args, **kwargs): - super().__init__(use_ninja=False, *args, **kwargs) + super().__init__(*args, use_ninja=False, **kwargs) else: BuildExtension = torch.utils.cpp_extension.BuildExtension diff --git a/tests/common_testing.py b/tests/common_testing.py index bb43575f..6855dc8f 100644 --- a/tests/common_testing.py +++ b/tests/common_testing.py @@ -31,6 +31,13 @@ def skip_opengl_requested() -> bool: usesOpengl = unittest.skipIf(skip_opengl_requested(), "uses opengl") +def have_multiple_gpus() -> bool: + return torch.cuda.device_count() > 1 + + +needs_multigpu = unittest.skipIf(not have_multiple_gpus(), "needs multiple GPUs") + + def get_tests_dir() -> Path: """ Returns Path for the directory containing this file. diff --git a/tests/test_knn.py b/tests/test_knn.py index bb77911e..e48a8edc 100644 --- a/tests/test_knn.py +++ b/tests/test_knn.py @@ -72,6 +72,7 @@ class TestKNN(TestCaseMixin, unittest.TestCase): factors = [Ns, Ds, P1s, P2s, Ks, norms] for N, D, P1, P2, K, norm in product(*factors): for version in versions: + torch.manual_seed(2) if version == 3 and K > 4: continue x = torch.randn(N, P1, D, device=device, requires_grad=True) diff --git a/tests/test_pointclouds.py b/tests/test_pointclouds.py index 07a36ec1..13d26af4 100644 --- a/tests/test_pointclouds.py +++ b/tests/test_pointclouds.py @@ -17,7 +17,7 @@ from pytorch3d.structures.pointclouds import ( Pointclouds, ) -from .common_testing import TestCaseMixin +from .common_testing import needs_multigpu, TestCaseMixin class TestPointclouds(TestCaseMixin, unittest.TestCase): @@ -703,6 +703,7 @@ class TestPointclouds(TestCaseMixin, unittest.TestCase): self.assertEqual(cuda_device, cloud.device) self.assertIsNot(cloud, converted_cloud) + @needs_multigpu def test_to_list(self): cloud = self.init_cloud(5, 100, 10) device = torch.device("cuda:1") @@ -740,6 +741,7 @@ class TestPointclouds(TestCaseMixin, unittest.TestCase): self.assertTrue(cloud._P == new_cloud._P) self.assertTrue(cloud._C == new_cloud._C) + @needs_multigpu def test_to_tensor(self): cloud = self.init_cloud(5, 100, 10, lists_to_tensors=True) device = torch.device("cuda:1") diff --git a/tests/test_points_alignment.py b/tests/test_points_alignment.py index 62da8672..7086c9cf 100644 --- a/tests/test_points_alignment.py +++ b/tests/test_points_alignment.py @@ -165,7 +165,7 @@ class TestICP(TestCaseMixin, unittest.TestCase): a set of randomly-sized Pointclouds and on their padded versions. """ - torch.manual_seed(4) + torch.manual_seed(14) device = torch.device("cuda:0") for estimate_scale in (True, False): diff --git a/tests/test_render_multigpu.py b/tests/test_render_multigpu.py index 6dd82568..2f282105 100644 --- a/tests/test_render_multigpu.py +++ b/tests/test_render_multigpu.py @@ -29,7 +29,7 @@ from pytorch3d.renderer.opengl import MeshRasterizerOpenGL from pytorch3d.structures import Meshes, Pointclouds from pytorch3d.utils.ico_sphere import ico_sphere -from .common_testing import TestCaseMixin, usesOpengl +from .common_testing import needs_multigpu, TestCaseMixin, usesOpengl # Set the number of GPUS you want to test with @@ -116,6 +116,7 @@ class TestRenderMeshesMultiGPU(TestCaseMixin, unittest.TestCase): output_images = renderer(mesh) self.assertEqual(output_images.device, device2) + @needs_multigpu def test_mesh_renderer_to(self): self._mesh_renderer_to(MeshRasterizer, SoftPhongShader) @@ -173,6 +174,7 @@ class TestRenderMeshesMultiGPU(TestCaseMixin, unittest.TestCase): for _ in range(100): model(verts, texs) + @needs_multigpu def test_render_meshes(self): self._render_meshes(MeshRasterizer, HardGouraudShader) diff --git a/tests/test_rendering_utils.py b/tests/test_rendering_utils.py index b5895c92..d9730daa 100644 --- a/tests/test_rendering_utils.py +++ b/tests/test_rendering_utils.py @@ -63,9 +63,6 @@ class TestTensorProperties(TestCaseMixin, unittest.TestCase): self.assertEqual(example_gpu.device.type, "cuda") self.assertIsNotNone(example_gpu.device.index) - example_gpu1 = example.cuda(1) - self.assertEqual(example_gpu1.device, torch.device("cuda:1")) - def test_clone(self): # Check clone method example = TensorPropertiesTestClass(x=10.0, y=(100.0, 200.0))