parsl 2025.7.28__py3-none-any.whl → 2025.8.4__py3-none-any.whl
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- parsl/dataflow/dflow.py +11 -1
- parsl/executors/high_throughput/executor.py +0 -1
- parsl/executors/status_handling.py +1 -1
- parsl/executors/taskvine/executor.py +1 -2
- parsl/executors/workqueue/executor.py +1 -2
- parsl/jobs/strategy.py +1 -1
- parsl/log_utils.py +21 -3
- parsl/tests/site_tests/test_site.py +2 -2
- parsl/tests/test_scaling/test_regression_3696_oscillation.py +2 -2
- parsl/tests/test_scaling/test_scale_down.py +2 -2
- parsl/tests/test_scaling/test_scale_down_htex_auto_scale.py +2 -2
- parsl/tests/test_utils/test_logutils.py +70 -0
- parsl/version.py +1 -1
- {parsl-2025.7.28.dist-info → parsl-2025.8.4.dist-info}/METADATA +2 -2
- {parsl-2025.7.28.dist-info → parsl-2025.8.4.dist-info}/RECORD +23 -30
- parsl/tests/scaling_tests/__init__.py +0 -0
- parsl/tests/scaling_tests/htex_local.py +0 -20
- parsl/tests/scaling_tests/local_threads.py +0 -4
- parsl/tests/scaling_tests/test_scale.py +0 -135
- parsl/tests/scaling_tests/vineex_condor.py +0 -9
- parsl/tests/scaling_tests/vineex_local.py +0 -10
- parsl/tests/scaling_tests/wqex_condor.py +0 -12
- parsl/tests/scaling_tests/wqex_local.py +0 -12
- {parsl-2025.7.28.data → parsl-2025.8.4.data}/scripts/exec_parsl_function.py +0 -0
- {parsl-2025.7.28.data → parsl-2025.8.4.data}/scripts/interchange.py +0 -0
- {parsl-2025.7.28.data → parsl-2025.8.4.data}/scripts/parsl_coprocess.py +0 -0
- {parsl-2025.7.28.data → parsl-2025.8.4.data}/scripts/process_worker_pool.py +0 -0
- {parsl-2025.7.28.dist-info → parsl-2025.8.4.dist-info}/LICENSE +0 -0
- {parsl-2025.7.28.dist-info → parsl-2025.8.4.dist-info}/WHEEL +0 -0
- {parsl-2025.7.28.dist-info → parsl-2025.8.4.dist-info}/entry_points.txt +0 -0
- {parsl-2025.7.28.dist-info → parsl-2025.8.4.dist-info}/top_level.txt +0 -0
parsl/dataflow/dflow.py
CHANGED
|
@@ -91,8 +91,11 @@ class DataFlowKernel:
|
|
|
91
91
|
self._config = config
|
|
92
92
|
self.run_dir = make_rundir(config.run_dir)
|
|
93
93
|
|
|
94
|
+
self._logging_unregister_callback: Optional[Callable[[], None]]
|
|
94
95
|
if config.initialize_logging:
|
|
95
|
-
parsl.set_file_logger("{}/parsl.log".format(self.run_dir), level=logging.DEBUG)
|
|
96
|
+
self._logging_unregister_callback = parsl.set_file_logger("{}/parsl.log".format(self.run_dir), level=logging.DEBUG)
|
|
97
|
+
else:
|
|
98
|
+
self._logging_unregister_callback = None
|
|
96
99
|
|
|
97
100
|
logger.info("Starting DataFlowKernel with config\n{}".format(config))
|
|
98
101
|
|
|
@@ -1255,6 +1258,13 @@ class DataFlowKernel:
|
|
|
1255
1258
|
else:
|
|
1256
1259
|
logger.debug("Cleaning up non-default DFK - not unregistering")
|
|
1257
1260
|
|
|
1261
|
+
if self._logging_unregister_callback:
|
|
1262
|
+
logger.info("Unregistering log handler")
|
|
1263
|
+
self._logging_unregister_callback()
|
|
1264
|
+
logger.info("Unregistered log handler")
|
|
1265
|
+
|
|
1266
|
+
# This message won't go to the default parsl.log, but other handlers
|
|
1267
|
+
# should still see it.
|
|
1258
1268
|
logger.info("DFK cleanup complete")
|
|
1259
1269
|
|
|
1260
1270
|
def checkpoint(self, tasks: Optional[Sequence[TaskRecord]] = None) -> str:
|
|
@@ -621,7 +621,6 @@ class HighThroughputExecutor(BlockProviderExecutor, RepresentationMixin, UsageIn
|
|
|
621
621
|
self.command_client.run("HOLD_WORKER;{}".format(manager_id))
|
|
622
622
|
logger.debug("Sent hold request to manager: {}".format(manager_id))
|
|
623
623
|
|
|
624
|
-
@property
|
|
625
624
|
def outstanding(self) -> int:
|
|
626
625
|
"""Returns the count of tasks outstanding across the interchange
|
|
627
626
|
and managers"""
|
|
@@ -122,7 +122,7 @@ class BlockProviderExecutor(ParslExecutor):
|
|
|
122
122
|
else:
|
|
123
123
|
return self._provider.status_polling_interval
|
|
124
124
|
|
|
125
|
-
@
|
|
125
|
+
@abstractmethod
|
|
126
126
|
def outstanding(self) -> int:
|
|
127
127
|
"""This should return the number of tasks that the executor has been given to run (waiting to run, and running now)"""
|
|
128
128
|
|
|
@@ -573,7 +573,6 @@ class TaskVineExecutor(BlockProviderExecutor, putils.RepresentationMixin):
|
|
|
573
573
|
self._worker_command = self._construct_worker_command()
|
|
574
574
|
self._patch_providers()
|
|
575
575
|
|
|
576
|
-
@property
|
|
577
576
|
def outstanding(self) -> int:
|
|
578
577
|
"""Count the number of outstanding tasks."""
|
|
579
578
|
logger.debug(f"Counted {self._outstanding_tasks} outstanding tasks")
|
|
@@ -659,7 +658,7 @@ class TaskVineExecutor(BlockProviderExecutor, putils.RepresentationMixin):
|
|
|
659
658
|
with self._outstanding_tasks_lock:
|
|
660
659
|
self._outstanding_tasks -= 1
|
|
661
660
|
finally:
|
|
662
|
-
logger.debug(f"Marking all {self.outstanding} outstanding tasks as failed")
|
|
661
|
+
logger.debug(f"Marking all {self.outstanding()} outstanding tasks as failed")
|
|
663
662
|
logger.debug("Acquiring tasks_lock")
|
|
664
663
|
with self._tasks_lock:
|
|
665
664
|
logger.debug("Acquired tasks_lock")
|
|
@@ -674,7 +674,6 @@ class WorkQueueExecutor(BlockProviderExecutor, putils.RepresentationMixin):
|
|
|
674
674
|
self.worker_command = self._construct_worker_command()
|
|
675
675
|
self._patch_providers()
|
|
676
676
|
|
|
677
|
-
@property
|
|
678
677
|
def outstanding(self) -> int:
|
|
679
678
|
"""Count the number of outstanding slots required. This is inefficiently
|
|
680
679
|
implemented and probably could be replaced with a counter.
|
|
@@ -983,7 +982,7 @@ def _work_queue_submit_wait(*,
|
|
|
983
982
|
continue
|
|
984
983
|
# When a task is found:
|
|
985
984
|
executor_task_id = t.tag
|
|
986
|
-
logger.
|
|
985
|
+
logger.info("Completed Work Queue task {}, executor task {}".format(t.id, t.tag))
|
|
987
986
|
result_file = result_file_of_task_id.pop(t.tag)
|
|
988
987
|
|
|
989
988
|
# A tasks completes 'succesfully' if it has result file.
|
parsl/jobs/strategy.py
CHANGED
parsl/log_utils.py
CHANGED
|
@@ -7,7 +7,7 @@ when working in a Jupyter notebook.
|
|
|
7
7
|
"""
|
|
8
8
|
import io
|
|
9
9
|
import logging
|
|
10
|
-
from typing import Optional
|
|
10
|
+
from typing import Callable, Optional
|
|
11
11
|
|
|
12
12
|
import typeguard
|
|
13
13
|
|
|
@@ -22,7 +22,7 @@ DEFAULT_FORMAT = (
|
|
|
22
22
|
def set_stream_logger(name: str = 'parsl',
|
|
23
23
|
level: int = logging.DEBUG,
|
|
24
24
|
format_string: Optional[str] = None,
|
|
25
|
-
stream: Optional[io.
|
|
25
|
+
stream: Optional[io.TextIOBase] = None) -> Callable[[], None]:
|
|
26
26
|
"""Add a stream log handler.
|
|
27
27
|
|
|
28
28
|
Args:
|
|
@@ -50,12 +50,18 @@ def set_stream_logger(name: str = 'parsl',
|
|
|
50
50
|
futures_logger = logging.getLogger("concurrent.futures")
|
|
51
51
|
futures_logger.addHandler(handler)
|
|
52
52
|
|
|
53
|
+
def unregister_callback():
|
|
54
|
+
logger.removeHandler(handler)
|
|
55
|
+
futures_logger.removeHandler(handler)
|
|
56
|
+
|
|
57
|
+
return unregister_callback
|
|
58
|
+
|
|
53
59
|
|
|
54
60
|
@typeguard.typechecked
|
|
55
61
|
def set_file_logger(filename: str,
|
|
56
62
|
name: str = 'parsl',
|
|
57
63
|
level: int = logging.DEBUG,
|
|
58
|
-
format_string: Optional[str] = None) -> None:
|
|
64
|
+
format_string: Optional[str] = None) -> Callable[[], None]:
|
|
59
65
|
"""Add a file log handler.
|
|
60
66
|
|
|
61
67
|
Args:
|
|
@@ -63,6 +69,12 @@ def set_file_logger(filename: str,
|
|
|
63
69
|
- name (string): Logger name
|
|
64
70
|
- level (logging.LEVEL): Set the logging level.
|
|
65
71
|
- format_string (string): Set the format string
|
|
72
|
+
|
|
73
|
+
Returns:
|
|
74
|
+
- a callable which, when invoked, will reverse the log handler
|
|
75
|
+
attachments made by this call. (compare to how object based pieces
|
|
76
|
+
of parsl model this as a close/shutdown/cleanup method on the
|
|
77
|
+
object))
|
|
66
78
|
"""
|
|
67
79
|
if format_string is None:
|
|
68
80
|
format_string = DEFAULT_FORMAT
|
|
@@ -79,3 +91,9 @@ def set_file_logger(filename: str,
|
|
|
79
91
|
# concurrent.futures
|
|
80
92
|
futures_logger = logging.getLogger("concurrent.futures")
|
|
81
93
|
futures_logger.addHandler(handler)
|
|
94
|
+
|
|
95
|
+
def unregister_callback():
|
|
96
|
+
logger.removeHandler(handler)
|
|
97
|
+
futures_logger.removeHandler(handler)
|
|
98
|
+
|
|
99
|
+
return unregister_callback
|
|
@@ -3,7 +3,7 @@ import argparse
|
|
|
3
3
|
import pytest
|
|
4
4
|
|
|
5
5
|
import parsl
|
|
6
|
-
from parsl.app.app import python_app
|
|
6
|
+
from parsl.app.app import python_app
|
|
7
7
|
from parsl.tests.site_tests.site_config_selector import fresh_config
|
|
8
8
|
|
|
9
9
|
|
|
@@ -36,7 +36,7 @@ def test_platform(n=2, sleep_dur=10):
|
|
|
36
36
|
|
|
37
37
|
print("Executor : ", dfk.executors[name])
|
|
38
38
|
print("Connected : ", dfk.executors[name].connected_workers)
|
|
39
|
-
print("Outstanding : ", dfk.executors[name].outstanding)
|
|
39
|
+
print("Outstanding : ", dfk.executors[name].outstanding())
|
|
40
40
|
|
|
41
41
|
d = []
|
|
42
42
|
for i in range(0, n):
|
|
@@ -48,7 +48,7 @@ def test_htex_strategy_does_not_oscillate(ns):
|
|
|
48
48
|
statuses = {}
|
|
49
49
|
|
|
50
50
|
executor.provider = provider
|
|
51
|
-
executor.outstanding = n_tasks
|
|
51
|
+
executor.outstanding = lambda: n_tasks
|
|
52
52
|
executor.status_facade = statuses
|
|
53
53
|
executor.workers_per_node = n_workers
|
|
54
54
|
|
|
@@ -97,7 +97,7 @@ def test_htex_strategy_does_not_oscillate(ns):
|
|
|
97
97
|
# this assert fails due to issue #3696
|
|
98
98
|
|
|
99
99
|
# Now check scale in happens with 0 load
|
|
100
|
-
executor.outstanding = 0
|
|
100
|
+
executor.outstanding = lambda: 0
|
|
101
101
|
s.strategize([executor])
|
|
102
102
|
executor.scale_in_facade.assert_called()
|
|
103
103
|
assert len([k for k in statuses if statuses[k].state == JobState.PENDING]) == 0
|
|
@@ -66,7 +66,7 @@ def test_scale_out(tmpd_cwd, try_assert):
|
|
|
66
66
|
num_managers = len(dfk.executors['htex_local'].connected_managers())
|
|
67
67
|
|
|
68
68
|
assert num_managers == 0, "Expected 0 managers at start"
|
|
69
|
-
assert dfk.executors['htex_local'].outstanding == 0, "Expected 0 tasks at start"
|
|
69
|
+
assert dfk.executors['htex_local'].outstanding() == 0, "Expected 0 tasks at start"
|
|
70
70
|
|
|
71
71
|
ntasks = 10
|
|
72
72
|
ready_path = tmpd_cwd / "workers_ready"
|
|
@@ -85,7 +85,7 @@ def test_scale_out(tmpd_cwd, try_assert):
|
|
|
85
85
|
finish_path.touch() # Approximation of Event, via files
|
|
86
86
|
[x.result() for x in futs]
|
|
87
87
|
|
|
88
|
-
assert dfk.executors['htex_local'].outstanding == 0
|
|
88
|
+
assert dfk.executors['htex_local'].outstanding() == 0
|
|
89
89
|
|
|
90
90
|
def assert_kernel():
|
|
91
91
|
return len(dfk.executors['htex_local'].connected_managers()) == _min_blocks
|
|
@@ -63,7 +63,7 @@ def test_scale_out(tmpd_cwd, try_assert):
|
|
|
63
63
|
num_managers = len(dfk.executors['htex_local'].connected_managers())
|
|
64
64
|
|
|
65
65
|
assert num_managers == 0, "Expected 0 managers at start"
|
|
66
|
-
assert dfk.executors['htex_local'].outstanding == 0, "Expected 0 tasks at start"
|
|
66
|
+
assert dfk.executors['htex_local'].outstanding() == 0, "Expected 0 tasks at start"
|
|
67
67
|
|
|
68
68
|
ntasks = _max_blocks * 2
|
|
69
69
|
ready_path = tmpd_cwd / "workers_ready"
|
|
@@ -84,7 +84,7 @@ def test_scale_out(tmpd_cwd, try_assert):
|
|
|
84
84
|
finish_path.touch() # Approximation of Event, via files
|
|
85
85
|
[x.result() for x in futs]
|
|
86
86
|
|
|
87
|
-
assert dfk.executors['htex_local'].outstanding == 0
|
|
87
|
+
assert dfk.executors['htex_local'].outstanding() == 0
|
|
88
88
|
|
|
89
89
|
# now we can launch one "long" task -
|
|
90
90
|
# and what should happen is that the connected_managers count "eventually" (?) converges to 1 and stays there.
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import io
|
|
2
|
+
import logging
|
|
3
|
+
|
|
4
|
+
import pytest
|
|
5
|
+
|
|
6
|
+
from parsl.log_utils import set_file_logger, set_stream_logger
|
|
7
|
+
|
|
8
|
+
|
|
9
|
+
@pytest.mark.local
|
|
10
|
+
def test_stream_close():
|
|
11
|
+
"""Tests that set_stream_logger callback detaches log handler.
|
|
12
|
+
"""
|
|
13
|
+
|
|
14
|
+
logger = logging.getLogger("parsl")
|
|
15
|
+
|
|
16
|
+
s1 = io.StringIO()
|
|
17
|
+
close_callback_1 = set_stream_logger(stream=s1)
|
|
18
|
+
logger.info("AAA")
|
|
19
|
+
close_callback_1()
|
|
20
|
+
|
|
21
|
+
s2 = io.StringIO()
|
|
22
|
+
close_callback_2 = set_stream_logger(stream=s2)
|
|
23
|
+
logger.info("BBB")
|
|
24
|
+
close_callback_2()
|
|
25
|
+
|
|
26
|
+
logger.info("CCC")
|
|
27
|
+
|
|
28
|
+
assert "AAA" in s1.getvalue()
|
|
29
|
+
assert "AAA" not in s2.getvalue()
|
|
30
|
+
|
|
31
|
+
assert "BBB" not in s1.getvalue()
|
|
32
|
+
assert "BBB" in s2.getvalue()
|
|
33
|
+
|
|
34
|
+
assert "CCC" not in s1.getvalue()
|
|
35
|
+
assert "CCC" not in s2.getvalue()
|
|
36
|
+
|
|
37
|
+
|
|
38
|
+
@pytest.mark.local
|
|
39
|
+
def test_file_close(tmpd_cwd):
|
|
40
|
+
"""Tests that set_file_Logger callback detaches log handler.
|
|
41
|
+
"""
|
|
42
|
+
|
|
43
|
+
logger = logging.getLogger("parsl")
|
|
44
|
+
|
|
45
|
+
f1 = str(tmpd_cwd / "log1")
|
|
46
|
+
close_callback_1 = set_file_logger(filename=f1)
|
|
47
|
+
logger.info("AAA")
|
|
48
|
+
close_callback_1()
|
|
49
|
+
|
|
50
|
+
f2 = str(tmpd_cwd / "log2")
|
|
51
|
+
close_callback_2 = set_file_logger(filename=f2)
|
|
52
|
+
logger.info("BBB")
|
|
53
|
+
close_callback_2()
|
|
54
|
+
|
|
55
|
+
logger.info("CCC")
|
|
56
|
+
|
|
57
|
+
with open(f1, "r") as f:
|
|
58
|
+
s1 = f.read()
|
|
59
|
+
|
|
60
|
+
with open(f2, "r") as f:
|
|
61
|
+
s2 = f.read()
|
|
62
|
+
|
|
63
|
+
assert "AAA" in s1
|
|
64
|
+
assert "AAA" not in s2
|
|
65
|
+
|
|
66
|
+
assert "BBB" not in s1
|
|
67
|
+
assert "BBB" in s2
|
|
68
|
+
|
|
69
|
+
assert "CCC" not in s1
|
|
70
|
+
assert "CCC" not in s2
|
parsl/version.py
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: parsl
|
|
3
|
-
Version: 2025.
|
|
3
|
+
Version: 2025.8.4
|
|
4
4
|
Summary: Simple data dependent workflows in Python
|
|
5
5
|
Home-page: https://github.com/Parsl/parsl
|
|
6
|
-
Download-URL: https://github.com/Parsl/parsl/archive/2025.
|
|
6
|
+
Download-URL: https://github.com/Parsl/parsl/archive/2025.08.04.tar.gz
|
|
7
7
|
Author: The Parsl Team
|
|
8
8
|
Author-email: parsl@googlegroups.com
|
|
9
9
|
License: Apache 2.0
|
|
@@ -3,12 +3,12 @@ parsl/addresses.py,sha256=z5GnIWdbzz4klRiMZtX8XmRT7OP8dJYvAk8RIKD2kzI,5290
|
|
|
3
3
|
parsl/config.py,sha256=p5HQoxLj5aMagUAYfngcXG2kw0s6SJoc6u7vH2sVhPU,9635
|
|
4
4
|
parsl/curvezmq.py,sha256=6Zi7RqTP_eKWi3DFgapfK2t-Jw8vJS-ZtN1bsrByPeo,7073
|
|
5
5
|
parsl/errors.py,sha256=SzINzQFZDBDbj9l-DPQznD0TbGkNhHIRAPkcBCogf_A,1019
|
|
6
|
-
parsl/log_utils.py,sha256=
|
|
6
|
+
parsl/log_utils.py,sha256=7L3uzvK9ew11pj5D25us-Hs12QTL_jwXNs1LL8dZhOI,3559
|
|
7
7
|
parsl/multiprocessing.py,sha256=JNAfgdZvQSsxVyUp229OOUqWwf_ZUhpmw8X9CdF3i6k,3614
|
|
8
8
|
parsl/process_loggers.py,sha256=uQ7Gd0W72Jz7rrcYlOMfLsAEhkRltxXJL2MgdduJjEw,1136
|
|
9
9
|
parsl/py.typed,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
10
10
|
parsl/utils.py,sha256=codTX6_KLhgeTwNkRzc1lo4bgc1M93eJ-lkqOO98fvk,14331
|
|
11
|
-
parsl/version.py,sha256=
|
|
11
|
+
parsl/version.py,sha256=5pN0o1LQOFq0nJT9CXG5Zs6Ui_R2YoLH5yNXtovCNAg,131
|
|
12
12
|
parsl/app/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
13
13
|
parsl/app/app.py,sha256=0gbM4AH2OtFOLsv07I5nglpElcwMSOi-FzdZZfrk7So,8532
|
|
14
14
|
parsl/app/bash.py,sha256=jm2AvePlCT9DZR7H_4ANDWxatp5dN_22FUlT_gWhZ-g,5528
|
|
@@ -55,7 +55,7 @@ parsl/data_provider/staging.py,sha256=ZDZuuFg38pjUStegKPcvPsfGp3iMeReMzfU6DSwtJj
|
|
|
55
55
|
parsl/data_provider/zip.py,sha256=S4kVuH9lxAegRURYbvIUR7EYYBOccyslaqyCrVWUBhw,4497
|
|
56
56
|
parsl/dataflow/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
57
57
|
parsl/dataflow/dependency_resolvers.py,sha256=Om8Dgh7a0ZwgXAc6TlhxLSzvxXHDlNNV1aBNiD3JTNY,3325
|
|
58
|
-
parsl/dataflow/dflow.py,sha256=
|
|
58
|
+
parsl/dataflow/dflow.py,sha256=q0nh_GP_4j4zWTOp-q-MbHlfAkgB-2VvpJwEhVL0V4c,62968
|
|
59
59
|
parsl/dataflow/errors.py,sha256=daVfr2BWs1zRsGD6JtosEMttWHvK1df1Npiu_MUvFKg,3998
|
|
60
60
|
parsl/dataflow/futures.py,sha256=08LuP-HFiHBIZmeKCjlsazw_WpQ5fwevrU2_WbidkYw,6080
|
|
61
61
|
parsl/dataflow/memoization.py,sha256=QUkTduZ_gdr8i08VWNWrqhfEvoMGsPDZegWUE2_7sGQ,12579
|
|
@@ -67,7 +67,7 @@ parsl/executors/base.py,sha256=Qlc7Qa-jbfGpQcGB29JUFXCdhcSN63bjGubEcbDk270,4948
|
|
|
67
67
|
parsl/executors/errors.py,sha256=ZxL3nK5samPos8Xixo_jpRtPIiRJfZ5D397_qaXj2g0,2515
|
|
68
68
|
parsl/executors/execute_task.py,sha256=PtqHxk778UQaNah1AN-TJV5emZbOcU5TGtWDxFn3_F4,1079
|
|
69
69
|
parsl/executors/globus_compute.py,sha256=p59iBrv2BvYUAZ3YZSpOrm_Wpai592ueiJm3zFS7gvY,5304
|
|
70
|
-
parsl/executors/status_handling.py,sha256=
|
|
70
|
+
parsl/executors/status_handling.py,sha256=aRlp0zNrkoaEQEcVoSsk6YNazzHtw0mPYy0GIaEh3qw,15744
|
|
71
71
|
parsl/executors/threads.py,sha256=lX9VuaMDBg_dqAObKfeaZlYCY4-ti33U-YMWOhWFGTY,4141
|
|
72
72
|
parsl/executors/flux/__init__.py,sha256=P9grTTeRPXfqXurFhlSS7XhmE6tTbnCnyQ1f9b-oYHE,136
|
|
73
73
|
parsl/executors/flux/execute_parsl_task.py,sha256=zHP5M7ILGiwnoalZ8WsfVVdZM7uP4iQo2ThVh4crxpM,1530
|
|
@@ -75,7 +75,7 @@ parsl/executors/flux/executor.py,sha256=NLdjOli5VjrSdEfyWbfqKN_8APvFkp_qFCouS_9N
|
|
|
75
75
|
parsl/executors/flux/flux_instance_manager.py,sha256=5T3Rp7ZM-mlT0Pf0Gxgs5_YmnaPrSF9ec7zvRfLfYJw,2129
|
|
76
76
|
parsl/executors/high_throughput/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
77
77
|
parsl/executors/high_throughput/errors.py,sha256=k2XuvvFdUfNs2foHFnxmS-BToRMfdXpYEa4EF3ELKq4,1554
|
|
78
|
-
parsl/executors/high_throughput/executor.py,sha256=
|
|
78
|
+
parsl/executors/high_throughput/executor.py,sha256=Olg0NMmg8UCj65zSk51I65c9NTerggLGba8T59aqidM,39925
|
|
79
79
|
parsl/executors/high_throughput/interchange.py,sha256=R6zcY7yh1daMJR8Ke8o9QCj8AtkH7lwzECS0MAWugvA,25964
|
|
80
80
|
parsl/executors/high_throughput/manager_record.py,sha256=ZMsqFxvreGLRXAw3N-JnODDa9Qfizw2tMmcBhm4lco4,490
|
|
81
81
|
parsl/executors/high_throughput/manager_selector.py,sha256=UKcUE6v0tO7PDMTThpKSKxVpOpOUilxDL7UbNgpZCxo,2116
|
|
@@ -93,7 +93,7 @@ parsl/executors/radical/rpex_worker.py,sha256=z6r82ZujKb6sdKIdHsQ_5EBMDIQieeGcrl
|
|
|
93
93
|
parsl/executors/taskvine/__init__.py,sha256=9rwp3M8B0YyEhZMLO0RHaNw7u1nc01WHbXLqnBTanu0,293
|
|
94
94
|
parsl/executors/taskvine/errors.py,sha256=euIYkSslrNSI85kyi2s0xzOaO9ik4c1fYHstMIeiBJk,652
|
|
95
95
|
parsl/executors/taskvine/exec_parsl_function.py,sha256=ftGdJU78lKPPkphSHlEi4rj164mhuMHJjghVqfgeXKk,7085
|
|
96
|
-
parsl/executors/taskvine/executor.py,sha256=
|
|
96
|
+
parsl/executors/taskvine/executor.py,sha256=VBQ5wNA2t4n2tWyvEAo-T_eu84F6Q2CHsIZhorS93D4,31314
|
|
97
97
|
parsl/executors/taskvine/factory.py,sha256=GU5JryEAKJuYKwrSc162BN-lhcKhapvBZHT820pxwic,2772
|
|
98
98
|
parsl/executors/taskvine/factory_config.py,sha256=ZQC5vyDe8cM0nuv7fbBCV2xnWGAZ87iLlT2UqmFFI1U,3695
|
|
99
99
|
parsl/executors/taskvine/manager.py,sha256=2GKpw9bnA2NQmti1AACZ6gHRVa8MN88NBk6j5VyTUIY,25935
|
|
@@ -102,7 +102,7 @@ parsl/executors/taskvine/utils.py,sha256=iSrIogeiauL3UNy_9tiZp1cBSNn6fIJkMYQRVi1
|
|
|
102
102
|
parsl/executors/workqueue/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
103
103
|
parsl/executors/workqueue/errors.py,sha256=XO2naYhAsHHyiOBH6hpObg3mPNDmvMoFqErsj0-v7jc,541
|
|
104
104
|
parsl/executors/workqueue/exec_parsl_function.py,sha256=YXKVVIa4zXmOtz-0Ca4E_5nQfN_3S2bh2tB75uZZB4w,7774
|
|
105
|
-
parsl/executors/workqueue/executor.py,sha256=
|
|
105
|
+
parsl/executors/workqueue/executor.py,sha256=U5l3Xx2FvTPe5r7hIiSvjW8H_54YFX7q3acqr3Ilprk,50188
|
|
106
106
|
parsl/executors/workqueue/parsl_coprocess.py,sha256=cF1UmTgVLoey6QzBcbYgEiEsRidSaFfuO54f1HFw_EM,5737
|
|
107
107
|
parsl/executors/workqueue/parsl_coprocess_stub.py,sha256=_bJmpPIgL42qM6bVzeEKt1Mn1trSP41rtJguXxPGfHI,735
|
|
108
108
|
parsl/jobs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -110,7 +110,7 @@ parsl/jobs/error_handlers.py,sha256=BBXwUAMJpBm0HxV1P-I6jv7ZF9wcrhnCfzSTlsd2g4w,
|
|
|
110
110
|
parsl/jobs/errors.py,sha256=cpSQXCrlKtuHsQf7usjF-lX8XsDkFnE5kWpmFjiN6OU,178
|
|
111
111
|
parsl/jobs/job_status_poller.py,sha256=b37JOqDpSesqeSreEh1HzfVTFnD5Aoy6k8JDXkkPDmk,2192
|
|
112
112
|
parsl/jobs/states.py,sha256=dUM8gC4YVpUjLMARJJ_tDERs6oHsoNheAtG6JWPIJt4,5058
|
|
113
|
-
parsl/jobs/strategy.py,sha256=
|
|
113
|
+
parsl/jobs/strategy.py,sha256=m5iKxp3KWWYuo4SMyi1vjxOi-En5KU6bJEIcn1UVoQc,13803
|
|
114
114
|
parsl/launchers/__init__.py,sha256=jJeDOWGKJjvpmWTLsj1zSqce_UAhWRc_IO-TzaOAlII,579
|
|
115
115
|
parsl/launchers/base.py,sha256=CblcvPTJiu-MNLWaRtFe29SZQ0BpTOlaY8CGcHdlHIE,538
|
|
116
116
|
parsl/launchers/errors.py,sha256=8YMV_CHpBNVa4eXkGE4x5DaFQlZkDCRCHmBktYcY6TA,467
|
|
@@ -256,18 +256,10 @@ parsl/tests/manual_tests/test_log_filter.py,sha256=jwKclAVuESdlGK_giBuHDkY6ryX6r
|
|
|
256
256
|
parsl/tests/manual_tests/test_memory_limits.py,sha256=fjQhGsZu1PUl2Z4v75mssqve51QmtVrK94q9zJWQefU,2593
|
|
257
257
|
parsl/tests/manual_tests/test_regression_220.py,sha256=Jo2puWt1W0r1rJfaJFgd2ZPgR3i6uOXzrLRcfYDZWDo,931
|
|
258
258
|
parsl/tests/manual_tests/test_worker_count.py,sha256=Cv8nAWMXAREiiGEBUr_8JyI87ffp8JGAyDqVXzcjX_0,2072
|
|
259
|
-
parsl/tests/scaling_tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
260
|
-
parsl/tests/scaling_tests/htex_local.py,sha256=opgR-l18aunWeReuqBvNP7nSAk8CpsYqhAZE9PNPV8M,483
|
|
261
|
-
parsl/tests/scaling_tests/local_threads.py,sha256=RbqOr2ELWBDFwmCCbvmyd4zEJDvonQGRbs7Apc6cy9g,138
|
|
262
|
-
parsl/tests/scaling_tests/test_scale.py,sha256=Lmrp0L8ndzhXb4imhtjz5m0Ru7AJLto4bKE58CJDOfs,3472
|
|
263
|
-
parsl/tests/scaling_tests/vineex_condor.py,sha256=xQvn5w7zmWxNlxdxVDd951lW6Y1d4SC2x9tNLFRDcI4,348
|
|
264
|
-
parsl/tests/scaling_tests/vineex_local.py,sha256=pPluQtOW7DblCGGCzm_LFbvqwAVq0uaKy1BvmTpBttc,402
|
|
265
|
-
parsl/tests/scaling_tests/wqex_condor.py,sha256=hMo1hK8aj-L36vj0PoByQvL9YQTVrenLn5UHiMXKIkc,547
|
|
266
|
-
parsl/tests/scaling_tests/wqex_local.py,sha256=C-eYESKhi4V4XZuHLO0lgP5rovEj8LNYGJOHLpUDdOM,545
|
|
267
259
|
parsl/tests/site_tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
268
260
|
parsl/tests/site_tests/site_config_selector.py,sha256=cpToBNdvHZPOxYfiFpGVuydSMlmxfeo27N3VEjRFLgw,1815
|
|
269
261
|
parsl/tests/site_tests/test_provider.py,sha256=o9pUn_qzQnUSnuh-OQGBec_dNrmOVTD79-i27p_K-N8,2696
|
|
270
|
-
parsl/tests/site_tests/test_site.py,sha256=
|
|
262
|
+
parsl/tests/site_tests/test_site.py,sha256=9_CKR8gVoIq0v3g-XJmSLuFhi53K56Ufqjb8XC0WM1c,1944
|
|
271
263
|
parsl/tests/sites/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
272
264
|
parsl/tests/sites/test_affinity.py,sha256=CCfYxSkpoznREGV2-K2As4YbsMY7bCiYqRMZkUp-zO0,1500
|
|
273
265
|
parsl/tests/sites/test_concurrent.py,sha256=ybHOnIsRyYs2tFPggv2ivRVoqH8Ts4PTEvb4IN3Obv8,1219
|
|
@@ -413,9 +405,9 @@ parsl/tests/test_scaling/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZ
|
|
|
413
405
|
parsl/tests/test_scaling/test_block_error_handler.py,sha256=OS1IyiK8gjRFI1VzpmOvEnKsPev2vKmC6Z2Hp5LaHpA,6068
|
|
414
406
|
parsl/tests/test_scaling/test_regression_1621.py,sha256=e3-bkHR3d8LxA-uY0BugyWgYzksh00I_UbaA-jHOzKY,1872
|
|
415
407
|
parsl/tests/test_scaling/test_regression_3568_scaledown_vs_MISSING.py,sha256=bjE_NIBoWK6heEz5LN0tzE1977vUA9kVemAYCqcIbzY,2942
|
|
416
|
-
parsl/tests/test_scaling/test_regression_3696_oscillation.py,sha256=
|
|
417
|
-
parsl/tests/test_scaling/test_scale_down.py,sha256=
|
|
418
|
-
parsl/tests/test_scaling/test_scale_down_htex_auto_scale.py,sha256=
|
|
408
|
+
parsl/tests/test_scaling/test_regression_3696_oscillation.py,sha256=xbRY1sNmPvpliwg0nLDCS2JcIviVPHHCOe3y1W9iIlY,3637
|
|
409
|
+
parsl/tests/test_scaling/test_scale_down.py,sha256=q_H6YAaID-n6Yj_FVElhufApzsbD08ItRopjgRBlDvU,2769
|
|
410
|
+
parsl/tests/test_scaling/test_scale_down_htex_auto_scale.py,sha256=2w4BxKyWXrow9PMRZzIFdiB1EVZ8YRTmqsP-RNoOx7Q,4525
|
|
419
411
|
parsl/tests/test_scaling/test_scale_down_htex_unregistered.py,sha256=OrdnYmd58n7UfkANPJ7mzha4WSCPdbgJRX1O1Zdu0tI,1954
|
|
420
412
|
parsl/tests/test_scaling/test_shutdown_scalein.py,sha256=sr40of5DwxeyQI97MDZxFqJILZSXZJb9Dv7qTf2gql8,2471
|
|
421
413
|
parsl/tests/test_scaling/test_worker_interchange_bad_messages_3262.py,sha256=wDv6JD-4OZ70Hw8pfOd12wOKzGtTuAsSqjoy-4tBV0k,2738
|
|
@@ -452,6 +444,7 @@ parsl/tests/test_threads/test_configs.py,sha256=POwCKY4FMkI5-RSFz77cQYC7R_ISj0iA
|
|
|
452
444
|
parsl/tests/test_threads/test_lazy_errors.py,sha256=6dJ65py5vUZkc0aRLL-LHuxBBp877Ktghb_jFDZsE98,543
|
|
453
445
|
parsl/tests/test_utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
454
446
|
parsl/tests/test_utils/test_execute_wait.py,sha256=J796rGuv2qi2spChgAPFB1oPETdnvdLOplpErDlOwL8,880
|
|
447
|
+
parsl/tests/test_utils/test_logutils.py,sha256=D4ELQ6xmoju7rxPwom3eB6N8JdTwNhUuAuNOfd-lRQE,1470
|
|
455
448
|
parsl/tests/test_utils/test_representation_mixin.py,sha256=kUZeIDwA2rlbJ3-beGzLLwf3dOplTMCrWJN87etHcyY,1633
|
|
456
449
|
parsl/tests/test_utils/test_sanitize_dns.py,sha256=8P_v5a5JLGU76OYf0LtclAwqJxGU0fMh_OZMVkMke3I,2954
|
|
457
450
|
parsl/tests/unit/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
|
|
@@ -463,13 +456,13 @@ parsl/usage_tracking/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hS
|
|
|
463
456
|
parsl/usage_tracking/api.py,sha256=iaCY58Dc5J4UM7_dJzEEs871P1p1HdxBMtNGyVdzc9g,1821
|
|
464
457
|
parsl/usage_tracking/levels.py,sha256=xbfzYEsd55KiZJ-mzNgPebvOH4rRHum04hROzEf41tU,291
|
|
465
458
|
parsl/usage_tracking/usage.py,sha256=hbMo5BYgIWqMcFWqN-HYP1TbwNrTonpv-usfwnCFJKY,9212
|
|
466
|
-
parsl-2025.
|
|
467
|
-
parsl-2025.
|
|
468
|
-
parsl-2025.
|
|
469
|
-
parsl-2025.
|
|
470
|
-
parsl-2025.
|
|
471
|
-
parsl-2025.
|
|
472
|
-
parsl-2025.
|
|
473
|
-
parsl-2025.
|
|
474
|
-
parsl-2025.
|
|
475
|
-
parsl-2025.
|
|
459
|
+
parsl-2025.8.4.data/scripts/exec_parsl_function.py,sha256=YXKVVIa4zXmOtz-0Ca4E_5nQfN_3S2bh2tB75uZZB4w,7774
|
|
460
|
+
parsl-2025.8.4.data/scripts/interchange.py,sha256=dh9_Q5bLvgHLhSRAXrFIlOd5Yo-ZkudDGFWz0N3hQBg,25951
|
|
461
|
+
parsl-2025.8.4.data/scripts/parsl_coprocess.py,sha256=zrVjEqQvFOHxsLufPi00xzMONagjVwLZbavPM7bbjK4,5722
|
|
462
|
+
parsl-2025.8.4.data/scripts/process_worker_pool.py,sha256=-5VLVjeab6oROulx7OwI9tdNNHd6uap45I1jltm-UDc,40524
|
|
463
|
+
parsl-2025.8.4.dist-info/LICENSE,sha256=tAkwu8-AdEyGxGoSvJ2gVmQdcicWw3j1ZZueVV74M-E,11357
|
|
464
|
+
parsl-2025.8.4.dist-info/METADATA,sha256=Z-Ljcajho6y34ACO7zbu2YtbMlMyc4pZ8YCE2us203A,4054
|
|
465
|
+
parsl-2025.8.4.dist-info/WHEEL,sha256=tZoeGjtWxWRfdplE7E3d45VPlLNQnvbKiYnx7gwAy8A,92
|
|
466
|
+
parsl-2025.8.4.dist-info/entry_points.txt,sha256=XqnsWDYoEcLbsMcpnYGKLEnSBmaIe1YoM5YsBdJG2tI,176
|
|
467
|
+
parsl-2025.8.4.dist-info/top_level.txt,sha256=PIheYoUFQtF2icLsgOykgU-Cjuwr2Oi6On2jo5RYgRM,6
|
|
468
|
+
parsl-2025.8.4.dist-info/RECORD,,
|
|
File without changes
|
|
@@ -1,20 +0,0 @@
|
|
|
1
|
-
from parsl.config import Config
|
|
2
|
-
from parsl.executors import HighThroughputExecutor
|
|
3
|
-
from parsl.providers import LocalProvider
|
|
4
|
-
|
|
5
|
-
# import os
|
|
6
|
-
config = Config(
|
|
7
|
-
executors=[
|
|
8
|
-
HighThroughputExecutor(
|
|
9
|
-
label="htex_local",
|
|
10
|
-
cores_per_worker=1,
|
|
11
|
-
max_workers_per_node=8,
|
|
12
|
-
encrypted=True,
|
|
13
|
-
provider=LocalProvider(
|
|
14
|
-
init_blocks=1,
|
|
15
|
-
max_blocks=1,
|
|
16
|
-
),
|
|
17
|
-
)
|
|
18
|
-
],
|
|
19
|
-
strategy='none',
|
|
20
|
-
)
|
|
@@ -1,135 +0,0 @@
|
|
|
1
|
-
#!/usr/bin/env python3
|
|
2
|
-
|
|
3
|
-
import argparse
|
|
4
|
-
import time
|
|
5
|
-
|
|
6
|
-
import parsl
|
|
7
|
-
from parsl.app.app import python_app # , bash_app
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
@python_app
|
|
11
|
-
def double(x):
|
|
12
|
-
return x * 2
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
@python_app
|
|
16
|
-
def echo(x, string, stdout=None):
|
|
17
|
-
print(string)
|
|
18
|
-
return x * 5
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
@python_app
|
|
22
|
-
def import_echo(x, string, stdout=None):
|
|
23
|
-
# from time import sleep
|
|
24
|
-
# sleep(0)
|
|
25
|
-
print(string)
|
|
26
|
-
return x * 5
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
@python_app
|
|
30
|
-
def platform(sleep=10, stdout=None):
|
|
31
|
-
import platform
|
|
32
|
-
import time
|
|
33
|
-
time.sleep(sleep)
|
|
34
|
-
return platform.uname()
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
def test_simple(n=2):
|
|
38
|
-
start = time.time()
|
|
39
|
-
x = double(n)
|
|
40
|
-
print("Result : ", x.result())
|
|
41
|
-
assert x.result() == n * \
|
|
42
|
-
2, "Expected double to return:{0} instead got:{1}".format(
|
|
43
|
-
n * 2, x.result())
|
|
44
|
-
print("Duration : {0}s".format(time.time() - start))
|
|
45
|
-
print("[TEST STATUS] test_parallel_for [SUCCESS]")
|
|
46
|
-
return True
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
def test_imports(n=2):
|
|
50
|
-
start = time.time()
|
|
51
|
-
x = import_echo(n, "hello world")
|
|
52
|
-
print("Result : ", x.result())
|
|
53
|
-
assert x.result() == n * \
|
|
54
|
-
5, "Expected double to return:{0} instead got:{1}".format(
|
|
55
|
-
n * 2, x.result())
|
|
56
|
-
print("Duration : {0}s".format(time.time() - start))
|
|
57
|
-
print("[TEST STATUS] test_parallel_for [SUCCESS]")
|
|
58
|
-
return True
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
def test_platform(n=2, sleep=1):
|
|
62
|
-
|
|
63
|
-
dfk = parsl.dfk()
|
|
64
|
-
# sync
|
|
65
|
-
x = platform(sleep=0)
|
|
66
|
-
print(x.result())
|
|
67
|
-
|
|
68
|
-
name = list(dfk.executors.keys())[0]
|
|
69
|
-
print("Trying to get executor : ", name)
|
|
70
|
-
|
|
71
|
-
print("Executor : ", dfk.executors[name])
|
|
72
|
-
print("Connected : ", dfk.executors[name].connected_workers)
|
|
73
|
-
print("Outstanding : ", dfk.executors[name].outstanding)
|
|
74
|
-
d = []
|
|
75
|
-
for i in range(0, n):
|
|
76
|
-
x = platform(sleep=sleep)
|
|
77
|
-
d.append(x)
|
|
78
|
-
|
|
79
|
-
print("Connected : ", dfk.executors[name].connected_workers)
|
|
80
|
-
print("Outstanding : ", dfk.executors[name].outstanding)
|
|
81
|
-
|
|
82
|
-
print(set([i.result()for i in d]))
|
|
83
|
-
|
|
84
|
-
print("Connected : ", dfk.executors[name].connected_workers)
|
|
85
|
-
print("Outstanding : ", dfk.executors[name].outstanding)
|
|
86
|
-
|
|
87
|
-
return True
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
def test_parallel_for(n=2, sleep=1):
|
|
91
|
-
d = {}
|
|
92
|
-
|
|
93
|
-
start = time.time()
|
|
94
|
-
print("Priming ...")
|
|
95
|
-
double(10).result()
|
|
96
|
-
delta = time.time() - start
|
|
97
|
-
print("Priming done in {} seconds".format(delta))
|
|
98
|
-
|
|
99
|
-
start = time.time()
|
|
100
|
-
for i in range(0, n):
|
|
101
|
-
d[i] = platform(sleep=sleep)
|
|
102
|
-
# d[i] = double(i)
|
|
103
|
-
# time.sleep(0.01)
|
|
104
|
-
[d[i].result() for i in d]
|
|
105
|
-
delta = time.time() - start
|
|
106
|
-
print("Time to complete {} tasks: {:8.3f} s".format(n, delta))
|
|
107
|
-
print("Throughput : {:8.3f} Tasks/s".format(n / delta))
|
|
108
|
-
return d
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
if __name__ == '__main__':
|
|
112
|
-
|
|
113
|
-
parser = argparse.ArgumentParser()
|
|
114
|
-
parser.add_argument("-s", "--sleep", default="0")
|
|
115
|
-
parser.add_argument("-c", "--count", default="10",
|
|
116
|
-
help="Count of apps to launch")
|
|
117
|
-
parser.add_argument("-d", "--debug", action='store_true',
|
|
118
|
-
help="Count of apps to launch")
|
|
119
|
-
parser.add_argument("-f", "--fileconfig", required=True)
|
|
120
|
-
|
|
121
|
-
args = parser.parse_args()
|
|
122
|
-
|
|
123
|
-
if args.debug:
|
|
124
|
-
parsl.set_stream_logger()
|
|
125
|
-
|
|
126
|
-
config = None
|
|
127
|
-
exec("from {} import config".format(args.fileconfig))
|
|
128
|
-
parsl.load(config)
|
|
129
|
-
# x = test_simple(int(args.count))
|
|
130
|
-
# x = test_imports()
|
|
131
|
-
x = test_parallel_for(int(args.count), float(args.sleep))
|
|
132
|
-
# x = test_platform(int(args.count), int(args.sleep))
|
|
133
|
-
# x = test_parallel_for(int(args.count))
|
|
134
|
-
# x = test_stdout()
|
|
135
|
-
# x = test_platform()
|
|
@@ -1,9 +0,0 @@
|
|
|
1
|
-
from parsl.config import Config
|
|
2
|
-
from parsl.executors.taskvine import TaskVineExecutor, TaskVineManagerConfig
|
|
3
|
-
from parsl.providers import CondorProvider
|
|
4
|
-
|
|
5
|
-
config = Config(
|
|
6
|
-
executors=[TaskVineExecutor(manager_config=TaskVineManagerConfig(port=50055),
|
|
7
|
-
provider=CondorProvider(),
|
|
8
|
-
)]
|
|
9
|
-
)
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
from parsl.config import Config
|
|
2
|
-
from parsl.executors.taskvine import TaskVineExecutor, TaskVineManagerConfig
|
|
3
|
-
from parsl.providers import LocalProvider
|
|
4
|
-
|
|
5
|
-
config = Config(
|
|
6
|
-
executors=[TaskVineExecutor(label='VineExec',
|
|
7
|
-
worker_launch_method='factory',
|
|
8
|
-
manager_config=TaskVineManagerConfig(port=50055),
|
|
9
|
-
)]
|
|
10
|
-
)
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
from parsl.config import Config
|
|
2
|
-
from parsl.executors import WorkQueueExecutor
|
|
3
|
-
from parsl.providers import CondorProvider
|
|
4
|
-
|
|
5
|
-
config = Config(
|
|
6
|
-
executors=[WorkQueueExecutor(port=50055,
|
|
7
|
-
source=True,
|
|
8
|
-
provider=CondorProvider(),
|
|
9
|
-
# init_command='source /home/yadu/src/wq_parsl/setup_parsl_env.sh;
|
|
10
|
-
# echo "Ran at $date" > /home/yadu/src/wq_parsl/parsl/tests/workqueue_tests/ran.log',
|
|
11
|
-
)]
|
|
12
|
-
)
|
|
@@ -1,12 +0,0 @@
|
|
|
1
|
-
from parsl.config import Config
|
|
2
|
-
from parsl.executors import WorkQueueExecutor
|
|
3
|
-
from parsl.providers import LocalProvider
|
|
4
|
-
|
|
5
|
-
config = Config(
|
|
6
|
-
executors=[WorkQueueExecutor(port=50055,
|
|
7
|
-
source=True,
|
|
8
|
-
provider=LocalProvider(),
|
|
9
|
-
# init_command='source /home/yadu/src/wq_parsl/setup_parsl_env.sh;
|
|
10
|
-
# echo "Ran at $date" > /home/yadu/src/wq_parsl/parsl/tests/workqueue_tests/ran.log',
|
|
11
|
-
)]
|
|
12
|
-
)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|