From 163ecdae69d8ce7fce313e347d90a7db8de78718 Mon Sep 17 00:00:00 2001 From: leej3 <“johnleenimh@gmail.com> Date: Thu, 25 Apr 2024 12:02:38 +0000 Subject: [PATCH 01/13] fix mypy errors --- ignite/metrics/frequency.py | 2 +- ignite/metrics/gan/fid.py | 2 +- ignite/metrics/gan/inception_score.py | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/ignite/metrics/frequency.py b/ignite/metrics/frequency.py index 8c63edd1ec9..52f02565ac4 100644 --- a/ignite/metrics/frequency.py +++ b/ignite/metrics/frequency.py @@ -49,7 +49,7 @@ def reset(self) -> None: self._acc = 0 self._n = 0 self._elapsed = 0.0 - super(Frequency, self).reset() + super(Frequency, self).reset() # type: ignore @reinit__is_reduced def update(self, output: int) -> None: diff --git a/ignite/metrics/gan/fid.py b/ignite/metrics/gan/fid.py index 188bad5035a..b74efe3e0e9 100644 --- a/ignite/metrics/gan/fid.py +++ b/ignite/metrics/gan/fid.py @@ -226,7 +226,7 @@ def reset(self) -> None: self._test_total = torch.zeros(self._num_features, dtype=torch.float64, device=self._device) self._num_examples: int = 0 - super(FID, self).reset() + super(FID, self).reset() # type: ignore @reinit__is_reduced def update(self, output: Sequence[torch.Tensor]) -> None: diff --git a/ignite/metrics/gan/inception_score.py b/ignite/metrics/gan/inception_score.py index 60b1d4785f7..b2a179fa65d 100644 --- a/ignite/metrics/gan/inception_score.py +++ b/ignite/metrics/gan/inception_score.py @@ -106,7 +106,7 @@ def reset(self) -> None: self._prob_total = torch.zeros(self._num_features, dtype=torch.float64, device=self._device) self._total_kl_d = torch.zeros(self._num_features, dtype=torch.float64, device=self._device) - super(InceptionScore, self).reset() + super(InceptionScore, self).reset() # type: ignore @reinit__is_reduced def update(self, output: torch.Tensor) -> None: From ee98c25826ca28b43cb0bf047220c0c07494e300 Mon Sep 17 00:00:00 2001 From: leej3 <“johnleenimh@gmail.com> Date: Fri, 26 Apr 2024 13:07:42 +0000 Subject: [PATCH 02/13] improve robustness of tqdm tests fixes error when running tests using pytest -n >1 this fixes the with of the test time progress bars to avoid some failures in tests. --- tests/ignite/handlers/test_tqdm_logger.py | 102 +++++++++++----------- 1 file changed, 50 insertions(+), 52 deletions(-) diff --git a/tests/ignite/handlers/test_tqdm_logger.py b/tests/ignite/handlers/test_tqdm_logger.py index 0f9a501ebf8..cae59ac15b4 100644 --- a/tests/ignite/handlers/test_tqdm_logger.py +++ b/tests/ignite/handlers/test_tqdm_logger.py @@ -33,9 +33,9 @@ def update_fn(engine, batch): def test_pbar_errors(): with pytest.raises(ModuleNotFoundError, match=r"This contrib module requires tqdm to be installed"): with patch.dict("sys.modules", {"tqdm.autonotebook": None}): - ProgressBar() + ProgressBar(ncols=80) - pbar = ProgressBar() + pbar = ProgressBar(ncols=80) with pytest.raises(ValueError, match=r"Logging event abc is not in allowed"): pbar.attach(Engine(lambda e, b: None), event_name=Namespace(name="abc")) @@ -45,7 +45,7 @@ def test_pbar(capsys): loader = [1, 2] engine = Engine(update_fn) - pbar = ProgressBar() + pbar = ProgressBar(ncols=80) pbar.attach(engine, ["a"]) engine.run(loader, max_epochs=n_epochs) @@ -55,9 +55,9 @@ def test_pbar(capsys): err = list(map(lambda x: x.strip(), err)) err = list(filter(None, err)) if get_tqdm_version() < Version("4.49.0"): - expected = "Epoch [2/2]: [1/2] 50%|█████ , a=1 [00:00<00:00]" + expected = "Epoch 8 -*- , a=1 [00:00<00:00]" else: - expected = "Epoch [2/2]: [1/2] 50%|█████ , a=1 [00:00 Date: Fri, 26 Apr 2024 14:57:34 +0000 Subject: [PATCH 03/13] use xdist for distributed tests Tests from a loadgroup are all run sequentially on a single worker. --- tests/ignite/conftest.py | 6 ++++++ tests/ignite/metrics/test_precision.py | 1 + tests/ignite/metrics/test_recall.py | 1 + tests/run_cpu_tests.sh | 2 +- 4 files changed, 9 insertions(+), 1 deletion(-) diff --git a/tests/ignite/conftest.py b/tests/ignite/conftest.py index 9855fd8eb9f..6740fadde0c 100644 --- a/tests/ignite/conftest.py +++ b/tests/ignite/conftest.py @@ -492,3 +492,9 @@ def xla_worker(index, fn): assert ex_.code == 0, "Didn't successfully exit in XLA test" pyfuncitem.obj = functools.partial(testfunc_wrapper, pyfuncitem.obj) + + +def pytest_collection_modifyitems(items): + for item in items: + if "distributed" in item.fixturenames: + item.add_marker(pytest.mark.xdist_group("distributed")) diff --git a/tests/ignite/metrics/test_precision.py b/tests/ignite/metrics/test_precision.py index 20583a00f00..38f29319878 100644 --- a/tests/ignite/metrics/test_precision.py +++ b/tests/ignite/metrics/test_precision.py @@ -419,6 +419,7 @@ def test_incorrect_y_classes(average): @pytest.mark.usefixtures("distributed") +@pytest.mark.xdist_group(name="distributed") class TestDistributed: @pytest.mark.parametrize("average", [False, "macro", "weighted", "micro"]) @pytest.mark.parametrize("n_epochs", [1, 2]) diff --git a/tests/ignite/metrics/test_recall.py b/tests/ignite/metrics/test_recall.py index 389f288a34c..780be865f41 100644 --- a/tests/ignite/metrics/test_recall.py +++ b/tests/ignite/metrics/test_recall.py @@ -420,6 +420,7 @@ def test_incorrect_y_classes(average): @pytest.mark.usefixtures("distributed") +@pytest.mark.xdist_group(name="distributed") class TestDistributed: @pytest.mark.parametrize("average", [False, "macro", "weighted", "micro"]) @pytest.mark.parametrize("n_epochs", [1, 2]) diff --git a/tests/run_cpu_tests.sh b/tests/run_cpu_tests.sh index 2297be94219..224e395f414 100644 --- a/tests/run_cpu_tests.sh +++ b/tests/run_cpu_tests.sh @@ -10,7 +10,7 @@ fi MATCH_TESTS_EXPRESSION=${1:-""} -CUDA_VISIBLE_DEVICES="" pytest --tx 4*popen//python=python --cov ignite --cov-report term-missing --cov-report xml -vvv tests "${skip_distrib_opt[@]}" -k "$MATCH_TESTS_EXPRESSION" +CUDA_VISIBLE_DEVICES="" pytest --tx 4*popen//python=python --dist=loadgroup --cov ignite --cov-report term-missing --cov-report xml -vvv tests "${skip_distrib_opt[@]}" -k "$MATCH_TESTS_EXPRESSION" # https://pubs.opengroup.org/onlinepubs/009695399/utilities/xcu_chap02.html#tag_02_06_02 if [ "${SKIP_DISTRIB_TESTS:-0}" -eq "1" ]; then From d4d76b791fff5760fcd5df255f536f09b3840ed4 Mon Sep 17 00:00:00 2001 From: leej3 <“johnleenimh@gmail.com> Date: Fri, 26 Apr 2024 14:59:33 +0000 Subject: [PATCH 04/13] remove warnings for unregistered marks seems to miss marks in the conftest.py file itself though. --- tests/ignite/conftest.py | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/tests/ignite/conftest.py b/tests/ignite/conftest.py index 6740fadde0c..39f3570bcf3 100644 --- a/tests/ignite/conftest.py +++ b/tests/ignite/conftest.py @@ -13,6 +13,12 @@ import ignite.distributed as idist +def pytest_configure(config): + config.addinivalue_line("markers", "distributed: run distributed") + config.addinivalue_line("markers", "multinode_distributed: distributed") + config.addinivalue_line("markers", "tpu: run on tpu") + + @pytest.fixture( params=[ "cpu", From b9abd5ed652bb80b811355771cdb1c0867cce3c7 Mon Sep 17 00:00:00 2001 From: leej3 <“johnleenimh@gmail.com> Date: Fri, 26 Apr 2024 15:39:07 +0000 Subject: [PATCH 05/13] improve execution of visdom tests limit setup/teardown of visdom servers using a session scoped fixture. Add visdom tests to an xdist group to run them serially to avoid issues with server connection. add timeout to the tests explicitly requesting the server to further limit any future issues. --- tests/ignite/handlers/conftest.py | 62 +++++++++------------ tests/ignite/handlers/test_visdom_logger.py | 4 +- 2 files changed, 28 insertions(+), 38 deletions(-) diff --git a/tests/ignite/handlers/conftest.py b/tests/ignite/handlers/conftest.py index 9d7bb999463..060c99a911d 100644 --- a/tests/ignite/handlers/conftest.py +++ b/tests/ignite/handlers/conftest.py @@ -1,58 +1,40 @@ -import random +import subprocess +import time from pathlib import Path from unittest.mock import Mock import pytest import torch +from visdom import Visdom +from visdom.server.build import download_scripts -vd_hostname = None -vd_port = None -vd_server_process = None - -@pytest.fixture() +@pytest.fixture(scope="session") def visdom_server(): # Start Visdom server once and stop it with visdom_server_stop - global vd_hostname, vd_port, vd_server_process - - if vd_server_process is None: - import subprocess - import time - - from visdom import Visdom - from visdom.server.build import download_scripts - + vd_hostname = "localhost" + if not (Path.home() / ".visdom").exists(): (Path.home() / ".visdom").mkdir(exist_ok=True) download_scripts() + vis = None - vd_hostname = "localhost" - vd_port = random.randint(8089, 8887) - + vd_port = 29777 + vd_server_process = subprocess.Popen( + ["python", "-m", "visdom.server", "--hostname", vd_hostname, "-port", str(vd_port)] + ) + time.sleep(2) + for ii in range(5): try: + time.sleep(1) vis = Visdom(server=vd_hostname, port=vd_port, raise_exceptions=True) + break except ConnectionError: - pass - - vd_server_process = subprocess.Popen( - ["python", "-m", "visdom.server", "--hostname", vd_hostname, "-port", str(vd_port)] - ) - time.sleep(5) - - vis = Visdom(server=vd_hostname, port=vd_port) - assert vis.check_connection() - vis.close() + continue + assert vis and vis.check_connection() yield (vd_hostname, vd_port) - - -@pytest.fixture() -def visdom_server_stop(): - yield None - - import time - + vis.close() vd_server_process.kill() - time.sleep(2) @pytest.fixture @@ -116,3 +98,9 @@ def get_dummy_model(with_grads=True, with_frozen_layer=False, with_buffer=False) return model return get_dummy_model + + +def pytest_collection_modifyitems(items): + for item in items: + if "visdom_server" in item.fixturenames: + item.add_marker(pytest.mark.timeout(30)) diff --git a/tests/ignite/handlers/test_visdom_logger.py b/tests/ignite/handlers/test_visdom_logger.py index 40657d180cf..f843ee96bb2 100644 --- a/tests/ignite/handlers/test_visdom_logger.py +++ b/tests/ignite/handlers/test_visdom_logger.py @@ -16,6 +16,8 @@ WeightsScalarHandler, ) +pytestmark = pytest.mark.xdist_group(name="visdom") + def test_optimizer_params_handler_wrong_setup(): with pytest.raises(TypeError): @@ -948,7 +950,7 @@ def update_fn(engine, batch): @pytest.mark.skipif(sys.platform.startswith("win"), reason="Skip on Windows") -def test_integration_with_executor_as_context_manager(visdom_server, visdom_server_stop): +def test_integration_with_executor_as_context_manager(visdom_server): n_epochs = 5 data = list(range(50)) From ecc4d71acc69d14bf911ea481c4df7a3360f54ea Mon Sep 17 00:00:00 2001 From: leej3 <“johnleenimh@gmail.com> Date: Mon, 29 Apr 2024 09:47:10 +0000 Subject: [PATCH 06/13] Improve visdom tests Do not clean up visdom_server fixture. Session scoped fixtures are not guaranteed to be executed just once when using xdist and trying to cleanup twice can cause hangs. Timeout all visdom tests to avoid future issues with a hanging/dead server --- tests/ignite/handlers/conftest.py | 11 +++-------- tests/ignite/handlers/test_visdom_logger.py | 2 +- 2 files changed, 4 insertions(+), 9 deletions(-) diff --git a/tests/ignite/handlers/conftest.py b/tests/ignite/handlers/conftest.py index 060c99a911d..79ac0809698 100644 --- a/tests/ignite/handlers/conftest.py +++ b/tests/ignite/handlers/conftest.py @@ -33,8 +33,9 @@ def visdom_server(): assert vis and vis.check_connection() yield (vd_hostname, vd_port) - vis.close() - vd_server_process.kill() + # Trying to clean up slows things down and sometimes causes hangs. + # vis.close() + # vd_server_process.kill() @pytest.fixture @@ -98,9 +99,3 @@ def get_dummy_model(with_grads=True, with_frozen_layer=False, with_buffer=False) return model return get_dummy_model - - -def pytest_collection_modifyitems(items): - for item in items: - if "visdom_server" in item.fixturenames: - item.add_marker(pytest.mark.timeout(30)) diff --git a/tests/ignite/handlers/test_visdom_logger.py b/tests/ignite/handlers/test_visdom_logger.py index f843ee96bb2..5e496f44b30 100644 --- a/tests/ignite/handlers/test_visdom_logger.py +++ b/tests/ignite/handlers/test_visdom_logger.py @@ -16,7 +16,7 @@ WeightsScalarHandler, ) -pytestmark = pytest.mark.xdist_group(name="visdom") +pytestmark = [pytest.mark.timeout(30), pytest.mark.xdist_group(name="visdom")] def test_optimizer_params_handler_wrong_setup(): From 0ff77acab4c35aab6fcacbaa541f1836d4d85a8f Mon Sep 17 00:00:00 2001 From: leej3 <“johnleenimh@gmail.com> Date: Mon, 29 Apr 2024 09:47:33 +0000 Subject: [PATCH 07/13] remove superfluous marks --- tests/ignite/metrics/test_precision.py | 1 - tests/ignite/metrics/test_recall.py | 1 - 2 files changed, 2 deletions(-) diff --git a/tests/ignite/metrics/test_precision.py b/tests/ignite/metrics/test_precision.py index 38f29319878..20583a00f00 100644 --- a/tests/ignite/metrics/test_precision.py +++ b/tests/ignite/metrics/test_precision.py @@ -419,7 +419,6 @@ def test_incorrect_y_classes(average): @pytest.mark.usefixtures("distributed") -@pytest.mark.xdist_group(name="distributed") class TestDistributed: @pytest.mark.parametrize("average", [False, "macro", "weighted", "micro"]) @pytest.mark.parametrize("n_epochs", [1, 2]) diff --git a/tests/ignite/metrics/test_recall.py b/tests/ignite/metrics/test_recall.py index 780be865f41..389f288a34c 100644 --- a/tests/ignite/metrics/test_recall.py +++ b/tests/ignite/metrics/test_recall.py @@ -420,7 +420,6 @@ def test_incorrect_y_classes(average): @pytest.mark.usefixtures("distributed") -@pytest.mark.xdist_group(name="distributed") class TestDistributed: @pytest.mark.parametrize("average", [False, "macro", "weighted", "micro"]) @pytest.mark.parametrize("n_epochs", [1, 2]) From a5bed39ff99d6e0c61367ccf9d381cc0cb3c7b1d Mon Sep 17 00:00:00 2001 From: leej3 <“johnleenimh@gmail.com> Date: Mon, 29 Apr 2024 09:51:05 +0000 Subject: [PATCH 08/13] add comments --- tests/ignite/conftest.py | 2 ++ tests/ignite/handlers/test_visdom_logger.py | 2 ++ 2 files changed, 4 insertions(+) diff --git a/tests/ignite/conftest.py b/tests/ignite/conftest.py index 39f3570bcf3..a258adc8993 100644 --- a/tests/ignite/conftest.py +++ b/tests/ignite/conftest.py @@ -503,4 +503,6 @@ def xla_worker(index, fn): def pytest_collection_modifyitems(items): for item in items: if "distributed" in item.fixturenames: + # Run distributed tests on a single worker to avoid RACE conditions + # This requires that the --dist=loadgroup option be passed to pytest. item.add_marker(pytest.mark.xdist_group("distributed")) diff --git a/tests/ignite/handlers/test_visdom_logger.py b/tests/ignite/handlers/test_visdom_logger.py index 5e496f44b30..e41f108f291 100644 --- a/tests/ignite/handlers/test_visdom_logger.py +++ b/tests/ignite/handlers/test_visdom_logger.py @@ -16,6 +16,8 @@ WeightsScalarHandler, ) +# Run tests on a single worker to avoid issues with connecting to the visdom +# server This requires that the --dist=loadgroup option be passed to pytest. pytestmark = [pytest.mark.timeout(30), pytest.mark.xdist_group(name="visdom")] From e6827d0f13e36b9a8bf37ca4da53e8ff36959d80 Mon Sep 17 00:00:00 2001 From: leej3 <“johnleenimh@gmail.com> Date: Mon, 29 Apr 2024 10:04:20 +0000 Subject: [PATCH 09/13] avoid multiple downloads of nltk punkt --- tests/ignite/metrics/nlp/test_rouge.py | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/tests/ignite/metrics/nlp/test_rouge.py b/tests/ignite/metrics/nlp/test_rouge.py index c2fb7505182..f5da5490ffc 100644 --- a/tests/ignite/metrics/nlp/test_rouge.py +++ b/tests/ignite/metrics/nlp/test_rouge.py @@ -12,7 +12,12 @@ from . import CorpusForTest -nltk.download("punkt") + +@pytest.fixture(scope="session", autouse=True) +def download_nltk_punkt(): + if not nltk.data.find("tokenizers/punkt"): + nltk.download("punkt") + corpus = CorpusForTest() From 2c027f62f5ed0f27be045dfe86e2f71008de906a Mon Sep 17 00:00:00 2001 From: leej3 <“johnleenimh@gmail.com> Date: Mon, 29 Apr 2024 10:50:45 +0000 Subject: [PATCH 10/13] fixup --- tests/ignite/metrics/nlp/test_rouge.py | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/tests/ignite/metrics/nlp/test_rouge.py b/tests/ignite/metrics/nlp/test_rouge.py index f5da5490ffc..5d8562866c8 100644 --- a/tests/ignite/metrics/nlp/test_rouge.py +++ b/tests/ignite/metrics/nlp/test_rouge.py @@ -1,5 +1,7 @@ import os +import filelock + import nltk import pytest import rouge as pyrouge @@ -14,9 +16,17 @@ @pytest.fixture(scope="session", autouse=True) -def download_nltk_punkt(): - if not nltk.data.find("tokenizers/punkt"): - nltk.download("punkt") +def download_nltk_punkt(worker_id, tmp_path_factory): + root_tmp_dir = tmp_path_factory.getbasetemp().parent + while True: + try: + with filelock.FileLock(root_tmp_dir / "nltk_download.lock", timeout=0.2) as fn: + fn.acquire() + nltk.download("punkt") + fn.release() + break + except filelock._error.Timeout: + pass corpus = CorpusForTest() From febf2b42ffddd9bf55d78167eae35602af556294 Mon Sep 17 00:00:00 2001 From: leej3 <“johnleenimh@gmail.com> Date: Mon, 29 Apr 2024 11:09:46 +0000 Subject: [PATCH 11/13] add timeout for all distributed tests --- tests/ignite/conftest.py | 3 +++ tests/ignite/distributed/comp_models/test_native.py | 2 -- tests/ignite/distributed/test_launcher.py | 2 -- 3 files changed, 3 insertions(+), 4 deletions(-) diff --git a/tests/ignite/conftest.py b/tests/ignite/conftest.py index a258adc8993..4e6712c43cf 100644 --- a/tests/ignite/conftest.py +++ b/tests/ignite/conftest.py @@ -506,3 +506,6 @@ def pytest_collection_modifyitems(items): # Run distributed tests on a single worker to avoid RACE conditions # This requires that the --dist=loadgroup option be passed to pytest. item.add_marker(pytest.mark.xdist_group("distributed")) + item.add_marker(pytest.mark.timeout(45)) + if "multinode_distributed" in item.fixturenames: + item.add_marker(pytest.mark.timeout(45)) diff --git a/tests/ignite/distributed/comp_models/test_native.py b/tests/ignite/distributed/comp_models/test_native.py index c771da4148c..09e4d305460 100644 --- a/tests/ignite/distributed/comp_models/test_native.py +++ b/tests/ignite/distributed/comp_models/test_native.py @@ -11,8 +11,6 @@ else: from ignite.distributed.comp_models.native import _expand_hostlist, _NativeDistModel, _setup_ddp_vars_from_slurm_env -pytestmark = pytest.mark.timeout(60) - # tests from https://github.com/LLNL/py-hostlist/blob/master/hostlist/unittest_hostlist.py @pytest.mark.parametrize( diff --git a/tests/ignite/distributed/test_launcher.py b/tests/ignite/distributed/test_launcher.py index 10083ed1bc2..b12e2acf1c2 100644 --- a/tests/ignite/distributed/test_launcher.py +++ b/tests/ignite/distributed/test_launcher.py @@ -10,8 +10,6 @@ import ignite.distributed as idist from ignite.distributed.utils import has_hvd_support, has_native_dist_support, has_xla_support -pytestmark = pytest.mark.timeout(60) - def test_parallel_wrong_inputs(): with pytest.raises(ValueError, match=r"Unknown backend 'abc'. Available backends:"): From 4d034e95bb2a5e0813241f536d713f0b7a9f8260 Mon Sep 17 00:00:00 2001 From: leej3 <“johnleenimh@gmail.com> Date: Mon, 29 Apr 2024 11:44:01 +0000 Subject: [PATCH 12/13] download mnist once --- tests/ignite/handlers/test_lr_finder.py | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/tests/ignite/handlers/test_lr_finder.py b/tests/ignite/handlers/test_lr_finder.py index e12d951dfbf..23b823d9ce4 100644 --- a/tests/ignite/handlers/test_lr_finder.py +++ b/tests/ignite/handlers/test_lr_finder.py @@ -3,6 +3,8 @@ from pathlib import Path from unittest.mock import MagicMock +import filelock + import matplotlib import pytest import torch @@ -144,16 +146,27 @@ def dataloader_plot(): @pytest.fixture -def mnist_dataloader(): +def mnist_dataloader(tmp_path_factory): from torch.utils.data import DataLoader from torchvision.datasets import MNIST from torchvision.transforms import Compose, Normalize, ToTensor data_transform = Compose([ToTensor(), Normalize((0.1307,), (0.3081,))]) - train_loader = DataLoader( - MNIST(download=True, root="/tmp", transform=data_transform, train=True), batch_size=256, shuffle=True - ) + root_tmp_dir = tmp_path_factory.getbasetemp().parent + while True: + try: + with filelock.FileLock(root_tmp_dir / "mnist_download.lock", timeout=0.2) as fn: + fn.acquire() + train_loader = DataLoader( + MNIST(download=True, root="/tmp", transform=data_transform, train=True), + batch_size=256, + shuffle=True, + ) + fn.release() + break + except filelock._error.Timeout: + pass yield train_loader From f62c649c372a2c16fc97cfd0623cc5111f325166 Mon Sep 17 00:00:00 2001 From: leej3 <“johnleenimh@gmail.com> Date: Mon, 29 Apr 2024 11:46:06 +0000 Subject: [PATCH 13/13] do not use --dist=loadgroup on ci for now --- tests/run_cpu_tests.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests/run_cpu_tests.sh b/tests/run_cpu_tests.sh index 224e395f414..2297be94219 100644 --- a/tests/run_cpu_tests.sh +++ b/tests/run_cpu_tests.sh @@ -10,7 +10,7 @@ fi MATCH_TESTS_EXPRESSION=${1:-""} -CUDA_VISIBLE_DEVICES="" pytest --tx 4*popen//python=python --dist=loadgroup --cov ignite --cov-report term-missing --cov-report xml -vvv tests "${skip_distrib_opt[@]}" -k "$MATCH_TESTS_EXPRESSION" +CUDA_VISIBLE_DEVICES="" pytest --tx 4*popen//python=python --cov ignite --cov-report term-missing --cov-report xml -vvv tests "${skip_distrib_opt[@]}" -k "$MATCH_TESTS_EXPRESSION" # https://pubs.opengroup.org/onlinepubs/009695399/utilities/xcu_chap02.html#tag_02_06_02 if [ "${SKIP_DISTRIB_TESTS:-0}" -eq "1" ]; then