parsl 2024.5.27__py3-none-any.whl → 2024.6.10__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/__init__.py +9 -10
- parsl/addresses.py +6 -4
- parsl/app/app.py +3 -6
- parsl/app/bash.py +4 -4
- parsl/app/errors.py +5 -3
- parsl/app/futures.py +3 -3
- parsl/app/python.py +2 -1
- parsl/benchmark/perf.py +2 -1
- parsl/channels/__init__.py +2 -2
- parsl/channels/base.py +0 -1
- parsl/channels/errors.py +2 -1
- parsl/channels/oauth_ssh/oauth_ssh.py +4 -3
- parsl/channels/ssh/ssh.py +9 -1
- parsl/channels/ssh_il/ssh_il.py +1 -0
- parsl/concurrent/__init__.py +2 -2
- parsl/config.py +32 -9
- parsl/configs/ASPIRE1.py +3 -3
- parsl/configs/Azure.py +6 -7
- parsl/configs/ad_hoc.py +4 -3
- parsl/configs/bridges.py +3 -3
- parsl/configs/cc_in2p3.py +2 -2
- parsl/configs/ec2.py +1 -1
- parsl/configs/expanse.py +1 -2
- parsl/configs/frontera.py +2 -3
- parsl/configs/htex_local.py +1 -2
- parsl/configs/illinoiscluster.py +1 -1
- parsl/configs/kubernetes.py +1 -2
- parsl/configs/midway.py +3 -3
- parsl/configs/osg.py +1 -1
- parsl/configs/polaris.py +1 -1
- parsl/configs/stampede2.py +4 -5
- parsl/configs/summit.py +1 -3
- parsl/configs/toss3_llnl.py +1 -2
- parsl/configs/vineex_local.py +3 -3
- parsl/configs/wqex_local.py +2 -2
- parsl/data_provider/data_manager.py +3 -3
- parsl/data_provider/file_noop.py +1 -2
- parsl/data_provider/files.py +3 -3
- parsl/data_provider/ftp.py +1 -3
- parsl/data_provider/globus.py +7 -6
- parsl/data_provider/http.py +2 -2
- parsl/data_provider/rsync.py +1 -1
- parsl/data_provider/staging.py +2 -2
- parsl/data_provider/zip.py +4 -5
- parsl/dataflow/dflow.py +57 -26
- parsl/dataflow/errors.py +2 -1
- parsl/dataflow/futures.py +1 -2
- parsl/dataflow/memoization.py +5 -5
- parsl/dataflow/rundirs.py +1 -1
- parsl/dataflow/taskrecord.py +4 -5
- parsl/executors/__init__.py +3 -3
- parsl/executors/base.py +1 -0
- parsl/executors/flux/execute_parsl_task.py +2 -2
- parsl/executors/flux/executor.py +11 -12
- parsl/executors/flux/flux_instance_manager.py +3 -3
- parsl/executors/high_throughput/executor.py +31 -36
- parsl/executors/high_throughput/interchange.py +37 -38
- parsl/executors/high_throughput/manager_record.py +1 -0
- parsl/executors/high_throughput/monitoring_info.py +2 -1
- parsl/executors/high_throughput/mpi_executor.py +5 -2
- parsl/executors/high_throughput/mpi_prefix_composer.py +1 -1
- parsl/executors/high_throughput/mpi_resource_management.py +1 -2
- parsl/executors/high_throughput/probe.py +6 -4
- parsl/executors/high_throughput/process_worker_pool.py +31 -20
- parsl/executors/high_throughput/zmq_pipes.py +28 -14
- parsl/executors/radical/executor.py +15 -15
- parsl/executors/radical/rpex_master.py +1 -2
- parsl/executors/radical/rpex_resources.py +1 -2
- parsl/executors/radical/rpex_worker.py +2 -1
- parsl/executors/status_handling.py +5 -4
- parsl/executors/taskvine/__init__.py +1 -1
- parsl/executors/taskvine/errors.py +1 -1
- parsl/executors/taskvine/exec_parsl_function.py +2 -2
- parsl/executors/taskvine/executor.py +23 -24
- parsl/executors/taskvine/factory.py +1 -1
- parsl/executors/taskvine/manager.py +11 -13
- parsl/executors/threads.py +4 -5
- parsl/executors/workqueue/errors.py +1 -1
- parsl/executors/workqueue/exec_parsl_function.py +5 -4
- parsl/executors/workqueue/executor.py +26 -27
- parsl/executors/workqueue/parsl_coprocess.py +1 -1
- parsl/jobs/error_handlers.py +1 -1
- parsl/jobs/job_status_poller.py +2 -5
- parsl/jobs/states.py +1 -1
- parsl/jobs/strategy.py +2 -2
- parsl/launchers/__init__.py +12 -3
- parsl/launchers/errors.py +1 -1
- parsl/log_utils.py +1 -2
- parsl/monitoring/db_manager.py +16 -10
- parsl/monitoring/monitoring.py +11 -15
- parsl/monitoring/queries/pandas.py +1 -2
- parsl/monitoring/radios.py +2 -4
- parsl/monitoring/remote.py +13 -8
- parsl/monitoring/router.py +8 -11
- parsl/monitoring/types.py +2 -0
- parsl/monitoring/visualization/app.py +4 -2
- parsl/monitoring/visualization/models.py +0 -1
- parsl/monitoring/visualization/plots/default/workflow_plots.py +8 -4
- parsl/monitoring/visualization/plots/default/workflow_resource_plots.py +1 -0
- parsl/monitoring/visualization/utils.py +0 -1
- parsl/monitoring/visualization/views.py +16 -9
- parsl/multiprocessing.py +0 -1
- parsl/process_loggers.py +1 -2
- parsl/providers/__init__.py +9 -12
- parsl/providers/ad_hoc/ad_hoc.py +1 -1
- parsl/providers/aws/aws.py +2 -3
- parsl/providers/azure/azure.py +4 -5
- parsl/providers/base.py +1 -1
- parsl/providers/cluster_provider.py +1 -1
- parsl/providers/cobalt/cobalt.py +3 -3
- parsl/providers/condor/condor.py +4 -2
- parsl/providers/errors.py +2 -2
- parsl/providers/googlecloud/googlecloud.py +2 -1
- parsl/providers/grid_engine/grid_engine.py +2 -2
- parsl/providers/kubernetes/kube.py +24 -9
- parsl/providers/local/local.py +5 -1
- parsl/providers/lsf/lsf.py +2 -2
- parsl/providers/pbspro/pbspro.py +1 -1
- parsl/providers/slurm/slurm.py +36 -27
- parsl/providers/torque/torque.py +1 -1
- parsl/serialize/__init__.py +8 -3
- parsl/serialize/base.py +1 -2
- parsl/serialize/concretes.py +5 -4
- parsl/serialize/proxystore.py +3 -2
- parsl/tests/__init__.py +1 -1
- parsl/tests/configs/ad_hoc_cluster_htex.py +4 -4
- parsl/tests/configs/azure_single_node.py +4 -5
- parsl/tests/configs/bridges.py +3 -2
- parsl/tests/configs/cc_in2p3.py +2 -2
- parsl/tests/configs/comet.py +2 -1
- parsl/tests/configs/ec2_single_node.py +1 -2
- parsl/tests/configs/ec2_spot.py +1 -2
- parsl/tests/configs/flux_local.py +11 -0
- parsl/tests/configs/frontera.py +3 -2
- parsl/tests/configs/htex_ad_hoc_cluster.py +2 -4
- parsl/tests/configs/htex_local.py +2 -3
- parsl/tests/configs/htex_local_alternate.py +8 -11
- parsl/tests/configs/htex_local_intask_staging.py +5 -7
- parsl/tests/configs/htex_local_rsync_staging.py +4 -6
- parsl/tests/configs/local_adhoc.py +1 -1
- parsl/tests/configs/local_radical.py +1 -3
- parsl/tests/configs/local_radical_mpi.py +2 -2
- parsl/tests/configs/midway.py +2 -2
- parsl/tests/configs/nscc_singapore.py +3 -3
- parsl/tests/configs/osg_htex.py +1 -1
- parsl/tests/configs/petrelkube.py +3 -2
- parsl/tests/configs/summit.py +1 -0
- parsl/tests/configs/swan_htex.py +2 -2
- parsl/tests/configs/taskvine_ex.py +3 -5
- parsl/tests/configs/theta.py +2 -2
- parsl/tests/configs/workqueue_ex.py +3 -4
- parsl/tests/conftest.py +8 -4
- parsl/tests/integration/test_channels/test_ssh_errors.py +1 -1
- parsl/tests/integration/test_stress/test_python_simple.py +3 -4
- parsl/tests/integration/test_stress/test_python_threads.py +3 -5
- parsl/tests/manual_tests/htex_local.py +4 -4
- parsl/tests/manual_tests/test_ad_hoc_htex.py +2 -1
- parsl/tests/manual_tests/test_basic.py +1 -0
- parsl/tests/manual_tests/test_fan_in_out_htex_remote.py +4 -4
- parsl/tests/manual_tests/test_log_filter.py +3 -1
- parsl/tests/manual_tests/test_memory_limits.py +6 -6
- parsl/tests/manual_tests/test_regression_220.py +2 -1
- parsl/tests/manual_tests/test_udp_simple.py +4 -3
- parsl/tests/manual_tests/test_worker_count.py +3 -2
- parsl/tests/scaling_tests/htex_local.py +2 -2
- parsl/tests/scaling_tests/test_scale.py +0 -9
- parsl/tests/scaling_tests/vineex_condor.py +1 -2
- parsl/tests/scaling_tests/vineex_local.py +1 -2
- parsl/tests/site_tests/test_provider.py +3 -1
- parsl/tests/site_tests/test_site.py +2 -0
- parsl/tests/sites/test_affinity.py +7 -5
- parsl/tests/sites/test_dynamic_executor.py +3 -3
- parsl/tests/sites/test_ec2.py +3 -2
- parsl/tests/sites/test_local_adhoc.py +2 -1
- parsl/tests/sites/test_worker_info.py +4 -3
- parsl/tests/test_aalst_patterns.py +0 -1
- parsl/tests/test_bash_apps/test_apptimeout.py +2 -2
- parsl/tests/test_bash_apps/test_error_codes.py +1 -4
- parsl/tests/test_bash_apps/test_memoize_ignore_args.py +1 -0
- parsl/tests/test_bash_apps/test_memoize_ignore_args_regr.py +2 -2
- parsl/tests/test_bash_apps/test_pipeline.py +1 -1
- parsl/tests/test_bash_apps/test_std_uri.py +4 -3
- parsl/tests/test_bash_apps/test_stdout.py +20 -2
- parsl/tests/test_callables.py +2 -2
- parsl/tests/test_checkpointing/test_python_checkpoint_1.py +1 -0
- parsl/tests/test_checkpointing/test_python_checkpoint_2.py +2 -1
- parsl/tests/test_checkpointing/test_regression_239.py +1 -1
- parsl/tests/test_checkpointing/test_task_exit.py +1 -1
- parsl/tests/test_docs/test_from_slides.py +2 -2
- parsl/tests/test_docs/test_kwargs.py +1 -1
- parsl/tests/test_docs/test_tutorial_1.py +1 -2
- parsl/tests/test_docs/test_workflow1.py +2 -2
- parsl/tests/test_docs/test_workflow2.py +0 -1
- parsl/tests/test_error_handling/test_rand_fail.py +2 -2
- parsl/tests/test_error_handling/test_resource_spec.py +4 -2
- parsl/tests/test_error_handling/test_retries.py +2 -1
- parsl/tests/test_error_handling/test_retry_handler.py +1 -0
- parsl/tests/test_error_handling/test_retry_handler_failure.py +2 -1
- parsl/tests/test_error_handling/test_serialization_fail.py +1 -1
- parsl/tests/test_error_handling/test_wrap_with_logs.py +1 -0
- parsl/tests/test_flux.py +1 -1
- parsl/tests/test_htex/test_command_client_timeout.py +9 -12
- parsl/tests/test_htex/test_connected_blocks.py +3 -2
- parsl/tests/test_htex/test_cpu_affinity_explicit.py +5 -2
- parsl/tests/test_htex/test_disconnected_blocks.py +6 -4
- parsl/tests/test_htex/test_drain.py +5 -5
- parsl/tests/test_htex/test_htex.py +1 -2
- parsl/tests/test_htex/test_managers_command.py +3 -2
- parsl/tests/test_htex/test_multiple_disconnected_blocks.py +6 -4
- parsl/tests/test_htex/test_zmq_binding.py +22 -6
- parsl/tests/test_monitoring/test_app_names.py +3 -2
- parsl/tests/test_monitoring/test_basic.py +4 -4
- parsl/tests/test_monitoring/test_db_locks.py +6 -3
- parsl/tests/test_monitoring/test_fuzz_zmq.py +6 -3
- parsl/tests/test_monitoring/test_htex_init_blocks_vs_monitoring.py +5 -5
- parsl/tests/test_monitoring/test_incomplete_futures.py +5 -3
- parsl/tests/test_monitoring/test_memoization_representation.py +4 -1
- parsl/tests/test_monitoring/test_stdouterr.py +4 -4
- parsl/tests/test_monitoring/test_viz_colouring.py +1 -0
- parsl/tests/test_mpi_apps/test_bad_mpi_config.py +1 -1
- parsl/tests/test_mpi_apps/test_mpi_mode_disabled.py +2 -0
- parsl/tests/test_mpi_apps/test_mpi_mode_enabled.py +7 -5
- parsl/tests/test_mpi_apps/test_mpi_prefix.py +4 -4
- parsl/tests/test_mpi_apps/test_mpi_scheduler.py +7 -2
- parsl/tests/test_mpi_apps/test_mpiex.py +4 -3
- parsl/tests/test_mpi_apps/test_resource_spec.py +9 -10
- parsl/tests/test_providers/test_cobalt_deprecation_warning.py +2 -0
- parsl/tests/test_providers/test_local_provider.py +2 -1
- parsl/tests/test_providers/test_pbspro_template.py +1 -1
- parsl/tests/test_providers/test_slurm_template.py +1 -1
- parsl/tests/test_providers/test_submiterror_deprecation.py +2 -1
- parsl/tests/test_python_apps/test_context_manager.py +99 -3
- parsl/tests/test_python_apps/test_dep_standard_futures.py +2 -1
- parsl/tests/test_python_apps/test_dependencies_deep.py +59 -0
- parsl/tests/test_python_apps/test_futures.py +2 -1
- parsl/tests/test_python_apps/test_join.py +0 -1
- parsl/tests/test_python_apps/test_lifted.py +3 -3
- parsl/tests/test_python_apps/test_memoize_bad_id_for_memo.py +1 -0
- parsl/tests/test_python_apps/test_pluggable_future_resolution.py +1 -1
- parsl/tests/test_radical/test_mpi_funcs.py +1 -2
- parsl/tests/test_regression/test_1480.py +2 -1
- parsl/tests/test_regression/test_1653.py +2 -1
- parsl/tests/test_regression/test_2652.py +1 -0
- parsl/tests/test_regression/test_69a.py +0 -1
- parsl/tests/test_regression/test_854.py +4 -2
- parsl/tests/test_regression/test_97_parallelism_0.py +1 -2
- parsl/tests/test_regression/test_98.py +0 -1
- parsl/tests/test_scaling/test_block_error_handler.py +9 -4
- parsl/tests/test_scaling/test_scale_down.py +2 -3
- parsl/tests/test_scaling/test_scale_down_htex_auto_scale.py +4 -5
- parsl/tests/test_scaling/test_scale_down_htex_unregistered.py +3 -4
- parsl/tests/test_scaling/test_shutdown_scalein.py +1 -2
- parsl/tests/test_serialization/test_2555_caching_deserializer.py +1 -1
- parsl/tests/test_serialization/test_basic.py +2 -1
- parsl/tests/test_serialization/test_htex_code_cache.py +3 -4
- parsl/tests/test_serialization/test_pack_resource_spec.py +2 -1
- parsl/tests/test_serialization/test_proxystore_configured.py +10 -5
- parsl/tests/test_serialization/test_proxystore_impl.py +5 -3
- parsl/tests/test_shutdown/test_kill_monitoring.py +3 -2
- parsl/tests/test_staging/staging_provider.py +2 -2
- parsl/tests/test_staging/test_1316.py +3 -2
- parsl/tests/test_staging/test_docs_1.py +1 -1
- parsl/tests/test_staging/test_docs_2.py +2 -1
- parsl/tests/test_staging/test_elaborate_noop_file.py +2 -2
- parsl/tests/test_staging/test_staging_https.py +2 -2
- parsl/tests/test_staging/test_staging_stdout.py +4 -3
- parsl/tests/test_staging/test_zip_in.py +6 -8
- parsl/tests/test_staging/test_zip_out.py +7 -9
- parsl/tests/test_staging/test_zip_to_zip.py +6 -8
- parsl/tests/test_summary.py +2 -1
- parsl/tests/test_thread_parallelism.py +0 -1
- parsl/tests/test_threads/test_configs.py +1 -1
- parsl/tests/test_threads/test_lazy_errors.py +2 -1
- parsl/tests/unit/test_usage_tracking.py +45 -0
- parsl/usage_tracking/api.py +2 -3
- parsl/usage_tracking/levels.py +6 -0
- parsl/usage_tracking/usage.py +60 -39
- parsl/utils.py +13 -2
- parsl/version.py +1 -1
- {parsl-2024.5.27.data → parsl-2024.6.10.data}/scripts/exec_parsl_function.py +5 -4
- {parsl-2024.5.27.data → parsl-2024.6.10.data}/scripts/process_worker_pool.py +31 -20
- {parsl-2024.5.27.dist-info → parsl-2024.6.10.dist-info}/METADATA +2 -2
- parsl-2024.6.10.dist-info/RECORD +475 -0
- parsl-2024.5.27.dist-info/RECORD +0 -471
- {parsl-2024.5.27.data → parsl-2024.6.10.data}/scripts/parsl_coprocess.py +1 -1
- {parsl-2024.5.27.dist-info → parsl-2024.6.10.dist-info}/LICENSE +0 -0
- {parsl-2024.5.27.dist-info → parsl-2024.6.10.dist-info}/WHEEL +0 -0
- {parsl-2024.5.27.dist-info → parsl-2024.6.10.dist-info}/entry_points.txt +0 -0
- {parsl-2024.5.27.dist-info → parsl-2024.6.10.dist-info}/top_level.txt +0 -0
parsl/executors/threads.py
CHANGED
@@ -1,14 +1,13 @@
|
|
1
|
-
import logging
|
2
|
-
import typeguard
|
3
1
|
import concurrent.futures as cf
|
4
|
-
|
2
|
+
import logging
|
5
3
|
from typing import List, Optional
|
6
4
|
|
5
|
+
import typeguard
|
6
|
+
|
7
7
|
from parsl.data_provider.staging import Staging
|
8
8
|
from parsl.executors.base import ParslExecutor
|
9
|
-
from parsl.utils import RepresentationMixin
|
10
9
|
from parsl.executors.errors import UnsupportedFeatureError
|
11
|
-
|
10
|
+
from parsl.utils import RepresentationMixin
|
12
11
|
|
13
12
|
logger = logging.getLogger(__name__)
|
14
13
|
|
@@ -1,10 +1,11 @@
|
|
1
|
+
import pickle
|
2
|
+
import sys
|
3
|
+
import traceback
|
4
|
+
|
1
5
|
from parsl.app.errors import RemoteExceptionWrapper
|
2
6
|
from parsl.data_provider.files import File
|
3
|
-
from parsl.utils import get_std_fname_mode
|
4
|
-
import traceback
|
5
|
-
import sys
|
6
|
-
import pickle
|
7
7
|
from parsl.serialize import serialize
|
8
|
+
from parsl.utils import get_std_fname_mode
|
8
9
|
|
9
10
|
# This scripts executes a parsl function which is pickled in a file:
|
10
11
|
#
|
@@ -3,50 +3,49 @@ Cooperative Computing Lab (CCL) at Notre Dame to provide a fault-tolerant,
|
|
3
3
|
high-throughput system for delegating Parsl tasks to thousands of remote machines
|
4
4
|
"""
|
5
5
|
|
6
|
-
import threading
|
7
|
-
import multiprocessing
|
8
|
-
import logging
|
9
|
-
from concurrent.futures import Future
|
10
|
-
from ctypes import c_bool
|
11
|
-
|
12
|
-
import tempfile
|
13
6
|
import hashlib
|
14
|
-
import
|
7
|
+
import inspect
|
8
|
+
import itertools
|
9
|
+
import logging
|
10
|
+
import multiprocessing
|
15
11
|
import os
|
16
|
-
import socket
|
17
|
-
import time
|
18
12
|
import pickle
|
19
13
|
import queue
|
20
|
-
import inspect
|
21
14
|
import shutil
|
22
|
-
import
|
15
|
+
import socket
|
16
|
+
import subprocess
|
17
|
+
import tempfile
|
18
|
+
import threading
|
19
|
+
import time
|
20
|
+
from collections import namedtuple
|
21
|
+
from concurrent.futures import Future
|
22
|
+
from ctypes import c_bool
|
23
|
+
from typing import Dict, List, Optional, Set, Union
|
24
|
+
|
25
|
+
import typeguard
|
23
26
|
|
24
|
-
from parsl.serialize import pack_apply_message, deserialize
|
25
27
|
import parsl.utils as putils
|
26
|
-
from parsl.executors.errors import ExecutorError
|
27
28
|
from parsl.data_provider.files import File
|
29
|
+
from parsl.data_provider.staging import Staging
|
28
30
|
from parsl.errors import OptionalModuleMissing
|
31
|
+
from parsl.executors.errors import ExecutorError
|
29
32
|
from parsl.executors.status_handling import BlockProviderExecutor
|
30
|
-
from parsl.providers.base import ExecutionProvider
|
31
|
-
from parsl.providers import LocalProvider, CondorProvider
|
32
33
|
from parsl.executors.workqueue import exec_parsl_function
|
33
34
|
from parsl.process_loggers import wrap_with_logs
|
35
|
+
from parsl.providers import CondorProvider, LocalProvider
|
36
|
+
from parsl.providers.base import ExecutionProvider
|
37
|
+
from parsl.serialize import deserialize, pack_apply_message
|
34
38
|
from parsl.utils import setproctitle
|
35
39
|
|
36
|
-
import
|
37
|
-
from typing import Dict, List, Optional, Set, Union
|
38
|
-
from parsl.data_provider.staging import Staging
|
39
|
-
|
40
|
-
from .errors import WorkQueueTaskFailure
|
41
|
-
from .errors import WorkQueueFailure
|
42
|
-
|
43
|
-
from collections import namedtuple
|
40
|
+
from .errors import WorkQueueFailure, WorkQueueTaskFailure
|
44
41
|
|
45
42
|
try:
|
46
43
|
import work_queue as wq
|
47
|
-
from work_queue import
|
48
|
-
|
49
|
-
|
44
|
+
from work_queue import (
|
45
|
+
WORK_QUEUE_ALLOCATION_MODE_MAX_THROUGHPUT,
|
46
|
+
WORK_QUEUE_DEFAULT_PORT,
|
47
|
+
WorkQueue,
|
48
|
+
)
|
50
49
|
except ImportError:
|
51
50
|
_work_queue_enabled = False
|
52
51
|
WORK_QUEUE_DEFAULT_PORT = 0
|
parsl/jobs/error_handlers.py
CHANGED
@@ -3,8 +3,8 @@ from __future__ import annotations
|
|
3
3
|
from typing import Dict, Tuple
|
4
4
|
|
5
5
|
import parsl.executors.status_handling as status_handling
|
6
|
-
from parsl.jobs.states import JobStatus, JobState
|
7
6
|
from parsl.jobs.errors import TooManyJobFailuresError
|
7
|
+
from parsl.jobs.states import JobState, JobStatus
|
8
8
|
|
9
9
|
|
10
10
|
def noop_error_handler(executor: status_handling.BlockProviderExecutor, status: Dict[str, JobStatus], threshold: int = 3) -> None:
|
parsl/jobs/job_status_poller.py
CHANGED
@@ -1,13 +1,10 @@
|
|
1
1
|
import logging
|
2
|
-
from typing import List,
|
2
|
+
from typing import List, Optional, Sequence, Union
|
3
3
|
|
4
|
-
from parsl.jobs.strategy import Strategy
|
5
4
|
from parsl.executors.status_handling import BlockProviderExecutor
|
6
|
-
|
7
|
-
|
5
|
+
from parsl.jobs.strategy import Strategy
|
8
6
|
from parsl.utils import Timer
|
9
7
|
|
10
|
-
|
11
8
|
logger = logging.getLogger(__name__)
|
12
9
|
|
13
10
|
|
parsl/jobs/states.py
CHANGED
parsl/jobs/strategy.py
CHANGED
@@ -1,7 +1,8 @@
|
|
1
1
|
from __future__ import annotations
|
2
|
+
|
2
3
|
import logging
|
3
|
-
import time
|
4
4
|
import math
|
5
|
+
import time
|
5
6
|
import warnings
|
6
7
|
from typing import Dict, List, Optional, Sequence, TypedDict
|
7
8
|
|
@@ -11,7 +12,6 @@ from parsl.executors.status_handling import BlockProviderExecutor
|
|
11
12
|
from parsl.jobs.states import JobState
|
12
13
|
from parsl.process_loggers import wrap_with_logs
|
13
14
|
|
14
|
-
|
15
15
|
logger = logging.getLogger(__name__)
|
16
16
|
|
17
17
|
|
parsl/launchers/__init__.py
CHANGED
@@ -1,6 +1,15 @@
|
|
1
|
-
from parsl.launchers.launchers import
|
2
|
-
|
3
|
-
GnuParallelLauncher,
|
1
|
+
from parsl.launchers.launchers import (
|
2
|
+
AprunLauncher,
|
3
|
+
GnuParallelLauncher,
|
4
|
+
JsrunLauncher,
|
5
|
+
MpiExecLauncher,
|
6
|
+
MpiRunLauncher,
|
7
|
+
SimpleLauncher,
|
8
|
+
SingleNodeLauncher,
|
9
|
+
SrunLauncher,
|
10
|
+
SrunMPILauncher,
|
11
|
+
WrappedLauncher,
|
12
|
+
)
|
4
13
|
|
5
14
|
__all__ = ['SimpleLauncher',
|
6
15
|
'WrappedLauncher',
|
parsl/launchers/errors.py
CHANGED
parsl/log_utils.py
CHANGED
parsl/monitoring/db_manager.py
CHANGED
@@ -1,15 +1,14 @@
|
|
1
|
+
import datetime
|
1
2
|
import logging
|
2
|
-
import threading
|
3
|
-
import queue
|
4
3
|
import os
|
4
|
+
import queue
|
5
|
+
import threading
|
5
6
|
import time
|
6
|
-
import datetime
|
7
|
-
|
8
7
|
from typing import Any, Dict, List, Optional, Set, Tuple, TypeVar, cast
|
9
8
|
|
10
|
-
from parsl.log_utils import set_file_logger
|
11
9
|
from parsl.dataflow.states import States
|
12
10
|
from parsl.errors import OptionalModuleMissing
|
11
|
+
from parsl.log_utils import set_file_logger
|
13
12
|
from parsl.monitoring.message_type import MessageType
|
14
13
|
from parsl.monitoring.types import MonitoringMessage, TaggedMonitoringMessage
|
15
14
|
from parsl.process_loggers import wrap_with_logs
|
@@ -21,11 +20,18 @@ X = TypeVar('X')
|
|
21
20
|
|
22
21
|
try:
|
23
22
|
import sqlalchemy as sa
|
24
|
-
from sqlalchemy import
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
23
|
+
from sqlalchemy import (
|
24
|
+
BigInteger,
|
25
|
+
Boolean,
|
26
|
+
Column,
|
27
|
+
DateTime,
|
28
|
+
Float,
|
29
|
+
Integer,
|
30
|
+
PrimaryKeyConstraint,
|
31
|
+
Table,
|
32
|
+
Text,
|
33
|
+
)
|
34
|
+
from sqlalchemy.orm import Mapper, declarative_base, mapperlib, sessionmaker
|
29
35
|
except ImportError:
|
30
36
|
_sqlalchemy_enabled = False
|
31
37
|
else:
|
parsl/monitoring/monitoring.py
CHANGED
@@ -1,29 +1,25 @@
|
|
1
1
|
from __future__ import annotations
|
2
2
|
|
3
|
-
import os
|
4
|
-
import time
|
5
3
|
import logging
|
6
4
|
import multiprocessing.synchronize as ms
|
7
|
-
import
|
8
|
-
|
5
|
+
import os
|
9
6
|
import queue
|
10
|
-
|
11
|
-
from
|
12
|
-
from multiprocessing import Process
|
13
|
-
from multiprocessing import Event
|
7
|
+
import time
|
8
|
+
from multiprocessing import Event, Process
|
14
9
|
from multiprocessing.queues import Queue
|
15
|
-
from
|
16
|
-
from parsl.utils import RepresentationMixin
|
17
|
-
from parsl.process_loggers import wrap_with_logs
|
18
|
-
from parsl.utils import setproctitle
|
10
|
+
from typing import TYPE_CHECKING, Any, Optional, Tuple, Union, cast
|
19
11
|
|
20
|
-
|
12
|
+
import typeguard
|
21
13
|
|
14
|
+
from parsl.log_utils import set_file_logger
|
15
|
+
from parsl.monitoring.message_type import MessageType
|
22
16
|
from parsl.monitoring.radios import MultiprocessingQueueRadio
|
23
17
|
from parsl.monitoring.router import router_starter
|
24
|
-
from parsl.monitoring.message_type import MessageType
|
25
18
|
from parsl.monitoring.types import AddressedMonitoringMessage
|
26
|
-
from
|
19
|
+
from parsl.multiprocessing import ForkProcess, SizedQueue
|
20
|
+
from parsl.process_loggers import wrap_with_logs
|
21
|
+
from parsl.serialize import deserialize
|
22
|
+
from parsl.utils import RepresentationMixin, setproctitle
|
27
23
|
|
28
24
|
_db_manager_excepts: Optional[Exception]
|
29
25
|
|
parsl/monitoring/radios.py
CHANGED
parsl/monitoring/remote.py
CHANGED
@@ -1,16 +1,20 @@
|
|
1
|
+
import datetime
|
2
|
+
import logging
|
1
3
|
import os
|
2
4
|
import time
|
3
|
-
import logging
|
4
|
-
import datetime
|
5
5
|
from functools import wraps
|
6
|
-
|
7
|
-
from parsl.multiprocessing import ForkProcess
|
8
6
|
from multiprocessing import Event
|
9
|
-
from
|
7
|
+
from typing import Any, Callable, Dict, List, Sequence, Tuple
|
10
8
|
|
11
9
|
from parsl.monitoring.message_type import MessageType
|
12
|
-
from parsl.monitoring.radios import
|
13
|
-
|
10
|
+
from parsl.monitoring.radios import (
|
11
|
+
FilesystemRadio,
|
12
|
+
HTEXRadio,
|
13
|
+
MonitoringRadio,
|
14
|
+
UDPRadio,
|
15
|
+
)
|
16
|
+
from parsl.multiprocessing import ForkProcess
|
17
|
+
from parsl.process_loggers import wrap_with_logs
|
14
18
|
|
15
19
|
logger = logging.getLogger(__name__)
|
16
20
|
|
@@ -135,8 +139,8 @@ def send_first_last_message(try_id: int,
|
|
135
139
|
monitoring_hub_url: str,
|
136
140
|
run_id: str, radio_mode: str, run_dir: str,
|
137
141
|
is_last: bool) -> None:
|
138
|
-
import platform
|
139
142
|
import os
|
143
|
+
import platform
|
140
144
|
|
141
145
|
radio = get_radio(radio_mode, monitoring_hub_url, task_id, run_dir)
|
142
146
|
|
@@ -177,6 +181,7 @@ def monitor(pid: int,
|
|
177
181
|
"""
|
178
182
|
import logging
|
179
183
|
import platform
|
184
|
+
|
180
185
|
import psutil
|
181
186
|
|
182
187
|
from parsl.utils import setproctitle
|
parsl/monitoring/router.py
CHANGED
@@ -1,24 +1,21 @@
|
|
1
1
|
from __future__ import annotations
|
2
2
|
|
3
|
+
import logging
|
3
4
|
import os
|
5
|
+
import pickle
|
6
|
+
import queue
|
4
7
|
import socket
|
5
8
|
import time
|
6
|
-
import
|
7
|
-
import
|
8
|
-
import zmq
|
9
|
+
from multiprocessing.synchronize import Event
|
10
|
+
from typing import Optional, Tuple, Union
|
9
11
|
|
10
|
-
import
|
12
|
+
import zmq
|
11
13
|
|
12
14
|
from parsl.log_utils import set_file_logger
|
13
|
-
from parsl.process_loggers import wrap_with_logs
|
14
|
-
from parsl.utils import setproctitle
|
15
|
-
|
16
15
|
from parsl.monitoring.message_type import MessageType
|
17
16
|
from parsl.monitoring.types import AddressedMonitoringMessage, TaggedMonitoringMessage
|
18
|
-
|
19
|
-
from
|
20
|
-
from typing import Optional, Tuple, Union
|
21
|
-
|
17
|
+
from parsl.process_loggers import wrap_with_logs
|
18
|
+
from parsl.utils import setproctitle
|
22
19
|
|
23
20
|
logger = logging.getLogger(__name__)
|
24
21
|
|
parsl/monitoring/types.py
CHANGED
@@ -1,8 +1,10 @@
|
|
1
|
-
from flask import Flask
|
2
|
-
from parsl.monitoring.visualization.models import db
|
3
1
|
import argparse
|
4
2
|
import os
|
5
3
|
|
4
|
+
from flask import Flask
|
5
|
+
|
6
|
+
from parsl.monitoring.visualization.models import db
|
7
|
+
|
6
8
|
|
7
9
|
def cli_run():
|
8
10
|
""" Instantiates the Monitoring viz server
|
@@ -1,13 +1,17 @@
|
|
1
1
|
import math
|
2
|
+
|
3
|
+
import networkx as nx
|
2
4
|
import numpy as np
|
3
5
|
import pandas as pd
|
4
|
-
import plotly.graph_objs as go
|
5
6
|
import plotly.figure_factory as ff
|
7
|
+
import plotly.graph_objs as go
|
6
8
|
from plotly.offline import plot
|
7
|
-
import networkx as nx
|
8
|
-
|
9
|
-
from parsl.monitoring.visualization.utils import timestamp_to_int, num_to_timestamp, DB_DATE_FORMAT
|
10
9
|
|
10
|
+
from parsl.monitoring.visualization.utils import (
|
11
|
+
DB_DATE_FORMAT,
|
12
|
+
num_to_timestamp,
|
13
|
+
timestamp_to_int,
|
14
|
+
)
|
11
15
|
|
12
16
|
# gantt_colors must assign a color value for every state name defined
|
13
17
|
# in parsl/dataflow/states.py
|
@@ -1,15 +1,22 @@
|
|
1
|
-
from flask import render_template
|
2
|
-
from flask import current_app as app
|
3
1
|
import pandas as pd
|
2
|
+
from flask import current_app as app
|
3
|
+
from flask import render_template
|
4
4
|
|
5
5
|
import parsl.monitoring.queries.pandas as queries
|
6
|
-
|
7
|
-
from parsl.monitoring.visualization.
|
8
|
-
|
9
|
-
|
10
|
-
from parsl.monitoring.visualization.plots.default.
|
11
|
-
|
12
|
-
|
6
|
+
from parsl.monitoring.visualization.models import Status, Task, Workflow, db
|
7
|
+
from parsl.monitoring.visualization.plots.default.task_plots import (
|
8
|
+
time_series_memory_per_task_plot,
|
9
|
+
)
|
10
|
+
from parsl.monitoring.visualization.plots.default.workflow_plots import (
|
11
|
+
task_gantt_plot,
|
12
|
+
task_per_app_plot,
|
13
|
+
workflow_dag_plot,
|
14
|
+
)
|
15
|
+
from parsl.monitoring.visualization.plots.default.workflow_resource_plots import (
|
16
|
+
resource_distribution_plot,
|
17
|
+
resource_efficiency,
|
18
|
+
worker_efficiency,
|
19
|
+
)
|
13
20
|
|
14
21
|
dummy = True
|
15
22
|
|
parsl/multiprocessing.py
CHANGED
parsl/process_loggers.py
CHANGED
parsl/providers/__init__.py
CHANGED
@@ -1,24 +1,21 @@
|
|
1
1
|
# Workstation Provider
|
2
|
-
from parsl.providers.local.local import LocalProvider
|
3
|
-
|
4
|
-
# Cluster Providers
|
5
|
-
|
6
|
-
from parsl.providers.cobalt.cobalt import CobaltProvider
|
7
|
-
from parsl.providers.condor.condor import CondorProvider
|
8
|
-
from parsl.providers.grid_engine.grid_engine import GridEngineProvider
|
9
|
-
from parsl.providers.slurm.slurm import SlurmProvider
|
10
|
-
from parsl.providers.torque.torque import TorqueProvider
|
11
|
-
from parsl.providers.pbspro.pbspro import PBSProProvider
|
12
|
-
from parsl.providers.lsf.lsf import LSFProvider
|
13
2
|
from parsl.providers.ad_hoc.ad_hoc import AdHocProvider
|
14
3
|
|
15
4
|
# Cloud Providers
|
16
5
|
from parsl.providers.aws.aws import AWSProvider
|
17
|
-
from parsl.providers.googlecloud.googlecloud import GoogleCloudProvider
|
18
6
|
from parsl.providers.azure.azure import AzureProvider
|
7
|
+
from parsl.providers.cobalt.cobalt import CobaltProvider
|
8
|
+
from parsl.providers.condor.condor import CondorProvider
|
9
|
+
from parsl.providers.googlecloud.googlecloud import GoogleCloudProvider
|
10
|
+
from parsl.providers.grid_engine.grid_engine import GridEngineProvider
|
19
11
|
|
20
12
|
# Kubernetes
|
21
13
|
from parsl.providers.kubernetes.kube import KubernetesProvider
|
14
|
+
from parsl.providers.local.local import LocalProvider
|
15
|
+
from parsl.providers.lsf.lsf import LSFProvider
|
16
|
+
from parsl.providers.pbspro.pbspro import PBSProProvider
|
17
|
+
from parsl.providers.slurm.slurm import SlurmProvider
|
18
|
+
from parsl.providers.torque.torque import TorqueProvider
|
22
19
|
|
23
20
|
__all__ = ['LocalProvider',
|
24
21
|
'CobaltProvider',
|
parsl/providers/ad_hoc/ad_hoc.py
CHANGED
@@ -3,7 +3,7 @@ import os
|
|
3
3
|
import time
|
4
4
|
|
5
5
|
from parsl.channels import LocalChannel
|
6
|
-
from parsl.jobs.states import
|
6
|
+
from parsl.jobs.states import JobState, JobStatus
|
7
7
|
from parsl.launchers import SimpleLauncher
|
8
8
|
from parsl.providers.base import ExecutionProvider
|
9
9
|
from parsl.providers.errors import ScriptPathError
|
parsl/providers/aws/aws.py
CHANGED
@@ -4,13 +4,12 @@ import os
|
|
4
4
|
import time
|
5
5
|
from string import Template
|
6
6
|
|
7
|
-
from parsl.errors import ConfigurationError
|
7
|
+
from parsl.errors import ConfigurationError, OptionalModuleMissing
|
8
8
|
from parsl.jobs.states import JobState, JobStatus
|
9
|
+
from parsl.launchers import SingleNodeLauncher
|
9
10
|
from parsl.providers.aws.template import template_string
|
10
11
|
from parsl.providers.base import ExecutionProvider
|
11
|
-
from parsl.errors import OptionalModuleMissing
|
12
12
|
from parsl.utils import RepresentationMixin
|
13
|
-
from parsl.launchers import SingleNodeLauncher
|
14
13
|
|
15
14
|
logger = logging.getLogger(__name__)
|
16
15
|
|
parsl/providers/azure/azure.py
CHANGED
@@ -4,22 +4,21 @@ import os
|
|
4
4
|
import time
|
5
5
|
from string import Template
|
6
6
|
|
7
|
-
from parsl.errors import ConfigurationError
|
7
|
+
from parsl.errors import ConfigurationError, OptionalModuleMissing
|
8
8
|
from parsl.jobs.states import JobState, JobStatus
|
9
|
+
from parsl.launchers import SingleNodeLauncher
|
9
10
|
from parsl.providers.azure.template import template_string
|
10
11
|
from parsl.providers.base import ExecutionProvider
|
11
|
-
from parsl.errors import OptionalModuleMissing
|
12
12
|
from parsl.utils import RepresentationMixin
|
13
|
-
from parsl.launchers import SingleNodeLauncher
|
14
13
|
|
15
14
|
logger = logging.getLogger(__name__)
|
16
15
|
|
17
16
|
try:
|
18
17
|
from azure.common.credentials import ServicePrincipalCredentials
|
19
|
-
from azure.mgmt.resource import ResourceManagementClient
|
20
|
-
from azure.mgmt.network import NetworkManagementClient
|
21
18
|
from azure.mgmt.compute import ComputeManagementClient
|
22
19
|
from azure.mgmt.compute.models import DiskCreateOption
|
20
|
+
from azure.mgmt.network import NetworkManagementClient
|
21
|
+
from azure.mgmt.resource import ResourceManagementClient
|
23
22
|
from msrestazure.azure_exceptions import CloudError
|
24
23
|
|
25
24
|
_api_enabled = True
|
parsl/providers/base.py
CHANGED
@@ -2,10 +2,10 @@ import logging
|
|
2
2
|
from abc import abstractmethod
|
3
3
|
from string import Template
|
4
4
|
|
5
|
-
from parsl.providers.errors import SchedulerMissingArgs, ScriptPathError
|
6
5
|
from parsl.launchers.base import Launcher
|
7
6
|
from parsl.launchers.errors import BadLauncher
|
8
7
|
from parsl.providers.base import ExecutionProvider
|
8
|
+
from parsl.providers.errors import SchedulerMissingArgs, ScriptPathError
|
9
9
|
|
10
10
|
logger = logging.getLogger(__name__)
|
11
11
|
|
parsl/providers/cobalt/cobalt.py
CHANGED
@@ -3,12 +3,12 @@ import os
|
|
3
3
|
import time
|
4
4
|
import warnings
|
5
5
|
|
6
|
-
from parsl.providers.errors import ScaleOutFailed
|
7
6
|
from parsl.channels import LocalChannel
|
7
|
+
from parsl.jobs.states import JobState, JobStatus
|
8
8
|
from parsl.launchers import AprunLauncher
|
9
|
-
from parsl.providers.cobalt.template import template_string
|
10
9
|
from parsl.providers.cluster_provider import ClusterProvider
|
11
|
-
from parsl.
|
10
|
+
from parsl.providers.cobalt.template import template_string
|
11
|
+
from parsl.providers.errors import ScaleOutFailed
|
12
12
|
from parsl.utils import RepresentationMixin, wtime_to_minutes
|
13
13
|
|
14
14
|
logger = logging.getLogger(__name__)
|