|
| 1 | +From c7c7460fd3a49a9d289394b80d9ecf61898edf49 Mon Sep 17 00:00:00 2001 |
| 2 | +From: Alexander Grund < [email protected]> |
| 3 | +Date: Wed, 9 Sep 2020 08:47:03 +0200 |
| 4 | +Subject: [PATCH] Choose test affinity based on current affinity |
| 5 | + |
| 6 | +--- |
| 7 | + test/test_dataloader.py | 18 ++++++++++++------ |
| 8 | + 1 file changed, 12 insertions(+), 6 deletions(-) |
| 9 | + |
| 10 | +diff --git a/test/test_dataloader.py b/test/test_dataloader.py |
| 11 | +index ca0c9e6cb511f..745942bcf01f2 100644 |
| 12 | +--- a/test/test_dataloader.py |
| 13 | ++++ b/test/test_dataloader.py |
| 14 | +@@ -2128,22 +2128,28 @@ def __iter__(self): |
| 15 | + after = os.sched_getaffinity(0) |
| 16 | + return iter(after) |
| 17 | + |
| 18 | +- |
| 19 | +-def worker_set_affinity(_): |
| 20 | +- os.sched_setaffinity(0, [2]) |
| 21 | +- |
| 22 | +- |
| 23 | + @unittest.skipIf( |
| 24 | + not hasattr(os, 'sched_setaffinity'), |
| 25 | + "os.sched_setaffinity is not available") |
| 26 | + class TestSetAffinity(TestCase): |
| 27 | + def test_set_affinity_in_worker_init(self): |
| 28 | ++ # Query the current affinity mask to avoid setting a disallowed one |
| 29 | ++ old_affinity = os.sched_getaffinity(0) |
| 30 | ++ if not old_affinity: |
| 31 | ++ self.skipTest("No affinity information") |
| 32 | ++ # Choose any |
| 33 | ++ expected_affinity = list(old_affinity)[-1] |
| 34 | ++ |
| 35 | ++ def worker_set_affinity(_): |
| 36 | ++ os.sched_setaffinity(0, [expected_affinity]) |
| 37 | ++ |
| 38 | ++ |
| 39 | + dataset = SetAffinityDataset() |
| 40 | + |
| 41 | + dataloader = torch.utils.data.DataLoader( |
| 42 | + dataset, num_workers=2, worker_init_fn=worker_set_affinity) |
| 43 | + for sample in dataloader: |
| 44 | +- self.assertEqual(sample, [2]) |
| 45 | ++ self.assertEqual(sample, [expected_affinity]) |
| 46 | + |
| 47 | + |
| 48 | + |
0 commit comments