| # Owner(s): ["module: autograd"] |
| |
| import os |
| |
| import subprocess |
| import tempfile |
| import unittest |
| |
| from torch.testing._internal.common_utils import ( |
| IS_WINDOWS, |
| run_tests, |
| slowTest, |
| TestCase, |
| ) |
| |
| PYTORCH_COLLECT_COVERAGE = bool(os.environ.get("PYTORCH_COLLECT_COVERAGE")) |
| |
| |
| # This is a very simple smoke test for the functional autograd benchmarking script. |
| class TestFunctionalAutogradBenchmark(TestCase): |
| def _test_runner(self, model, disable_gpu=False): |
| # Note about windows: |
| # The temporary file is exclusively open by this process and the child process |
| # is not allowed to open it again. As this is a simple smoke test, we choose for now |
| # not to run this on windows and keep the code here simple. |
| with tempfile.NamedTemporaryFile() as out_file: |
| cmd = [ |
| "python3", |
| "../benchmarks/functional_autograd_benchmark/functional_autograd_benchmark.py", |
| ] |
| # Only run the warmup |
| cmd += ["--num-iters", "0"] |
| # Only run the vjp task (fastest one) |
| cmd += ["--task-filter", "vjp"] |
| # Only run the specified model |
| cmd += ["--model-filter", model] |
| # Output file |
| cmd += ["--output", out_file.name] |
| if disable_gpu: |
| cmd += ["--gpu", "-1"] |
| |
| res = subprocess.run(cmd) |
| |
| self.assertTrue(res.returncode == 0) |
| # Check that something was written to the file |
| out_file.seek(0, os.SEEK_END) |
| self.assertTrue(out_file.tell() > 0) |
| |
| @unittest.skipIf( |
| IS_WINDOWS, |
| "NamedTemporaryFile on windows does not have all the features we need.", |
| ) |
| @unittest.skipIf( |
| PYTORCH_COLLECT_COVERAGE, |
| "Can deadlocks with gcov, see https://github.com/pytorch/pytorch/issues/49656", |
| ) |
| def test_fast_tasks(self): |
| fast_tasks = [ |
| "resnet18", |
| "ppl_simple_reg", |
| "ppl_robust_reg", |
| "wav2letter", |
| "transformer", |
| "multiheadattn", |
| ] |
| |
| for task in fast_tasks: |
| self._test_runner(task) |
| |
| @slowTest |
| @unittest.skipIf( |
| IS_WINDOWS, |
| "NamedTemporaryFile on windows does not have all the features we need.", |
| ) |
| def test_slow_tasks(self): |
| slow_tasks = ["fcn_resnet", "detr"] |
| # deepspeech is voluntarily excluded as it takes too long to run without |
| # proper tuning of the number of threads it should use. |
| |
| for task in slow_tasks: |
| # Disable GPU for slow test as the CI GPU don't have enough memory |
| self._test_runner(task, disable_gpu=True) |
| |
| |
| if __name__ == "__main__": |
| run_tests() |