parsl 2024.3.11__py3-none-any.whl → 2025.1.13__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 +29 -7
- parsl/app/app.py +7 -8
- parsl/app/bash.py +15 -8
- parsl/app/errors.py +10 -13
- parsl/app/futures.py +8 -10
- parsl/app/python.py +2 -1
- parsl/benchmark/perf.py +2 -1
- parsl/concurrent/__init__.py +2 -2
- parsl/config.py +57 -10
- parsl/configs/ASPIRE1.py +6 -5
- parsl/configs/Azure.py +9 -8
- parsl/configs/bridges.py +6 -4
- parsl/configs/cc_in2p3.py +3 -3
- parsl/configs/ec2.py +3 -1
- parsl/configs/expanse.py +4 -3
- parsl/configs/frontera.py +3 -4
- parsl/configs/htex_local.py +3 -4
- parsl/configs/illinoiscluster.py +3 -1
- parsl/configs/improv.py +34 -0
- parsl/configs/kubernetes.py +4 -3
- parsl/configs/local_threads.py +5 -1
- parsl/configs/midway.py +5 -3
- parsl/configs/osg.py +4 -2
- parsl/configs/polaris.py +4 -2
- parsl/configs/stampede2.py +6 -5
- parsl/configs/summit.py +3 -3
- parsl/configs/toss3_llnl.py +4 -3
- parsl/configs/vineex_local.py +6 -4
- parsl/configs/wqex_local.py +5 -3
- parsl/curvezmq.py +4 -0
- parsl/data_provider/data_manager.py +4 -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 +135 -0
- parsl/dataflow/dependency_resolvers.py +115 -0
- parsl/dataflow/dflow.py +262 -224
- parsl/dataflow/errors.py +3 -5
- parsl/dataflow/futures.py +27 -14
- parsl/dataflow/memoization.py +5 -5
- parsl/dataflow/rundirs.py +5 -6
- parsl/dataflow/taskrecord.py +4 -5
- parsl/executors/__init__.py +4 -2
- parsl/executors/base.py +45 -15
- parsl/executors/errors.py +13 -0
- parsl/executors/execute_task.py +37 -0
- parsl/executors/flux/execute_parsl_task.py +3 -3
- parsl/executors/flux/executor.py +18 -19
- parsl/executors/flux/flux_instance_manager.py +26 -27
- parsl/executors/high_throughput/errors.py +43 -3
- parsl/executors/high_throughput/executor.py +316 -282
- parsl/executors/high_throughput/interchange.py +158 -167
- parsl/executors/high_throughput/manager_record.py +5 -0
- parsl/executors/high_throughput/manager_selector.py +55 -0
- parsl/executors/high_throughput/monitoring_info.py +2 -1
- parsl/executors/high_throughput/mpi_executor.py +113 -0
- parsl/executors/high_throughput/mpi_prefix_composer.py +10 -11
- parsl/executors/high_throughput/mpi_resource_management.py +6 -17
- parsl/executors/high_throughput/probe.py +9 -7
- parsl/executors/high_throughput/process_worker_pool.py +115 -77
- parsl/executors/high_throughput/zmq_pipes.py +81 -23
- parsl/executors/radical/executor.py +130 -79
- parsl/executors/radical/rpex_resources.py +17 -15
- parsl/executors/radical/rpex_worker.py +4 -3
- parsl/executors/status_handling.py +157 -51
- 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 +41 -57
- parsl/executors/taskvine/factory.py +1 -1
- parsl/executors/taskvine/factory_config.py +1 -1
- parsl/executors/taskvine/manager.py +18 -13
- parsl/executors/taskvine/manager_config.py +9 -5
- parsl/executors/threads.py +6 -6
- parsl/executors/workqueue/errors.py +1 -1
- parsl/executors/workqueue/exec_parsl_function.py +6 -5
- parsl/executors/workqueue/executor.py +64 -63
- parsl/executors/workqueue/parsl_coprocess.py +1 -1
- parsl/jobs/error_handlers.py +2 -2
- parsl/jobs/job_status_poller.py +30 -113
- parsl/jobs/states.py +7 -2
- parsl/jobs/strategy.py +43 -31
- parsl/launchers/__init__.py +12 -3
- parsl/launchers/errors.py +1 -1
- parsl/launchers/launchers.py +6 -12
- parsl/log_utils.py +9 -6
- parsl/monitoring/db_manager.py +59 -95
- parsl/monitoring/errors.py +6 -0
- parsl/monitoring/monitoring.py +87 -356
- parsl/monitoring/queries/pandas.py +1 -2
- parsl/monitoring/radios/base.py +13 -0
- parsl/monitoring/radios/filesystem.py +52 -0
- parsl/monitoring/radios/htex.py +57 -0
- parsl/monitoring/radios/multiprocessing.py +17 -0
- parsl/monitoring/radios/udp.py +56 -0
- parsl/monitoring/radios/zmq.py +17 -0
- parsl/monitoring/remote.py +33 -37
- parsl/monitoring/router.py +212 -0
- parsl/monitoring/types.py +5 -6
- parsl/monitoring/visualization/app.py +4 -2
- parsl/monitoring/visualization/models.py +0 -1
- parsl/monitoring/visualization/plots/default/workflow_plots.py +11 -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 -8
- parsl/multiprocessing.py +0 -1
- parsl/process_loggers.py +1 -2
- parsl/providers/__init__.py +8 -17
- parsl/providers/aws/aws.py +2 -3
- parsl/providers/azure/azure.py +4 -5
- parsl/providers/base.py +2 -18
- parsl/providers/cluster_provider.py +4 -12
- parsl/providers/condor/condor.py +7 -17
- parsl/providers/errors.py +2 -2
- parsl/providers/googlecloud/googlecloud.py +2 -1
- parsl/providers/grid_engine/grid_engine.py +5 -14
- parsl/providers/kubernetes/kube.py +80 -40
- parsl/providers/local/local.py +13 -26
- parsl/providers/lsf/lsf.py +5 -23
- parsl/providers/pbspro/pbspro.py +5 -17
- parsl/providers/slurm/slurm.py +81 -39
- parsl/providers/torque/torque.py +3 -14
- parsl/serialize/__init__.py +8 -3
- parsl/serialize/base.py +1 -2
- parsl/serialize/concretes.py +5 -4
- parsl/serialize/facade.py +3 -3
- parsl/serialize/proxystore.py +3 -2
- parsl/tests/__init__.py +1 -1
- parsl/tests/configs/azure_single_node.py +4 -5
- parsl/tests/configs/bridges.py +3 -2
- parsl/tests/configs/cc_in2p3.py +1 -3
- 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 +2 -3
- parsl/tests/configs/htex_local.py +3 -5
- parsl/tests/configs/htex_local_alternate.py +11 -15
- parsl/tests/configs/htex_local_intask_staging.py +5 -9
- parsl/tests/configs/htex_local_rsync_staging.py +4 -8
- parsl/tests/configs/local_radical.py +1 -3
- parsl/tests/configs/local_radical_mpi.py +2 -2
- parsl/tests/configs/local_threads_checkpoint_periodic.py +8 -10
- parsl/tests/configs/local_threads_monitoring.py +0 -1
- 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/slurm_local.py +24 -0
- parsl/tests/configs/summit.py +1 -0
- parsl/tests/configs/taskvine_ex.py +4 -7
- parsl/tests/configs/user_opts.py +2 -8
- parsl/tests/configs/workqueue_ex.py +4 -6
- parsl/tests/conftest.py +27 -13
- 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 -6
- parsl/tests/manual_tests/test_basic.py +1 -0
- parsl/tests/manual_tests/test_log_filter.py +3 -1
- parsl/tests/manual_tests/test_memory_limits.py +6 -8
- parsl/tests/manual_tests/test_regression_220.py +2 -1
- parsl/tests/manual_tests/test_udp_simple.py +4 -4
- parsl/tests/manual_tests/test_worker_count.py +3 -2
- parsl/tests/scaling_tests/htex_local.py +2 -4
- 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/site_config_selector.py +1 -6
- parsl/tests/site_tests/test_provider.py +4 -2
- parsl/tests/site_tests/test_site.py +2 -0
- parsl/tests/sites/test_affinity.py +7 -7
- parsl/tests/sites/test_dynamic_executor.py +3 -4
- parsl/tests/sites/test_ec2.py +3 -2
- parsl/tests/sites/test_worker_info.py +4 -5
- parsl/tests/test_aalst_patterns.py +0 -1
- parsl/tests/test_bash_apps/test_apptimeout.py +2 -2
- parsl/tests/test_bash_apps/test_basic.py +10 -4
- parsl/tests/test_bash_apps/test_error_codes.py +5 -7
- parsl/tests/test_bash_apps/test_inputs_default.py +25 -0
- parsl/tests/test_bash_apps/test_kwarg_storage.py +1 -1
- parsl/tests/test_bash_apps/test_memoize.py +2 -8
- parsl/tests/test_bash_apps/test_memoize_ignore_args.py +9 -14
- parsl/tests/test_bash_apps/test_memoize_ignore_args_regr.py +9 -14
- parsl/tests/test_bash_apps/test_multiline.py +1 -1
- parsl/tests/test_bash_apps/test_pipeline.py +1 -1
- parsl/tests/test_bash_apps/test_std_uri.py +123 -0
- parsl/tests/test_bash_apps/test_stdout.py +33 -8
- parsl/tests/test_callables.py +2 -2
- parsl/tests/test_checkpointing/test_periodic.py +21 -39
- parsl/tests/test_checkpointing/test_python_checkpoint_1.py +1 -0
- parsl/tests/test_checkpointing/test_python_checkpoint_2.py +2 -2
- parsl/tests/test_checkpointing/test_python_checkpoint_3.py +0 -1
- parsl/tests/test_checkpointing/test_regression_239.py +1 -1
- parsl/tests/test_checkpointing/test_task_exit.py +2 -3
- parsl/tests/test_docs/test_from_slides.py +5 -2
- parsl/tests/test_docs/test_kwargs.py +4 -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 +10 -12
- parsl/tests/test_error_handling/test_retries.py +6 -16
- 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_execute_task.py +29 -0
- parsl/tests/test_flux.py +1 -1
- parsl/tests/test_htex/test_basic.py +2 -3
- parsl/tests/test_htex/test_block_manager_selector_unit.py +20 -0
- parsl/tests/test_htex/test_command_client_timeout.py +66 -0
- parsl/tests/test_htex/test_connected_blocks.py +3 -2
- parsl/tests/test_htex/test_cpu_affinity_explicit.py +6 -10
- parsl/tests/test_htex/test_disconnected_blocks.py +6 -5
- parsl/tests/test_htex/test_disconnected_blocks_failing_provider.py +71 -0
- parsl/tests/test_htex/test_drain.py +79 -0
- parsl/tests/test_htex/test_htex.py +51 -25
- parsl/tests/test_htex/test_manager_failure.py +0 -1
- parsl/tests/test_htex/test_manager_selector_by_block.py +51 -0
- parsl/tests/test_htex/test_managers_command.py +36 -0
- parsl/tests/test_htex/test_missing_worker.py +2 -12
- parsl/tests/test_htex/test_multiple_disconnected_blocks.py +9 -9
- parsl/tests/test_htex/test_resource_spec_validation.py +45 -0
- parsl/tests/test_htex/test_zmq_binding.py +29 -8
- parsl/tests/test_monitoring/test_app_names.py +86 -0
- parsl/tests/test_monitoring/test_basic.py +73 -25
- parsl/tests/test_monitoring/test_db_locks.py +6 -4
- parsl/tests/test_monitoring/test_fuzz_zmq.py +19 -8
- parsl/tests/test_monitoring/test_htex_init_blocks_vs_monitoring.py +80 -0
- parsl/tests/test_monitoring/test_incomplete_futures.py +5 -4
- parsl/tests/test_monitoring/test_memoization_representation.py +4 -2
- parsl/tests/test_monitoring/test_stdouterr.py +134 -0
- parsl/tests/test_monitoring/test_viz_colouring.py +1 -0
- parsl/tests/test_mpi_apps/test_bad_mpi_config.py +33 -26
- parsl/tests/test_mpi_apps/test_mpi_mode_enabled.py +28 -11
- 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 +64 -0
- parsl/tests/test_mpi_apps/test_resource_spec.py +42 -49
- parsl/tests/test_providers/test_kubernetes_provider.py +102 -0
- parsl/tests/test_providers/test_local_provider.py +3 -132
- parsl/tests/test_providers/test_pbspro_template.py +2 -3
- parsl/tests/test_providers/test_slurm_template.py +2 -3
- parsl/tests/test_providers/test_submiterror_deprecation.py +2 -1
- parsl/tests/test_python_apps/test_context_manager.py +128 -0
- 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_fail.py +0 -25
- parsl/tests/test_python_apps/test_futures.py +2 -1
- parsl/tests/test_python_apps/test_inputs_default.py +22 -0
- parsl/tests/test_python_apps/test_join.py +0 -1
- parsl/tests/test_python_apps/test_lifted.py +11 -7
- parsl/tests/test_python_apps/test_memoize_bad_id_for_memo.py +1 -0
- parsl/tests/test_python_apps/test_outputs.py +1 -1
- parsl/tests/test_python_apps/test_pluggable_future_resolution.py +161 -0
- 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_226.py +1 -0
- 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_regression_1621.py +11 -15
- parsl/tests/test_scaling/test_regression_3568_scaledown_vs_MISSING.py +84 -0
- parsl/tests/test_scaling/test_regression_3696_oscillation.py +103 -0
- parsl/tests/test_scaling/test_scale_down.py +2 -5
- parsl/tests/test_scaling/test_scale_down_htex_auto_scale.py +6 -18
- parsl/tests/test_scaling/test_scale_down_htex_unregistered.py +71 -0
- parsl/tests/test_scaling/test_shutdown_scalein.py +73 -0
- parsl/tests/test_scaling/test_worker_interchange_bad_messages_3262.py +90 -0
- parsl/tests/test_serialization/test_2555_caching_deserializer.py +1 -1
- parsl/tests/test_serialization/test_3495_deserialize_managerlost.py +47 -0
- 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 -6
- parsl/tests/test_serialization/test_proxystore_impl.py +5 -3
- parsl/tests/test_shutdown/test_kill_monitoring.py +64 -0
- parsl/tests/test_staging/staging_provider.py +2 -2
- parsl/tests/test_staging/test_1316.py +3 -4
- parsl/tests/test_staging/test_docs_1.py +2 -1
- parsl/tests/test_staging/test_docs_2.py +2 -1
- parsl/tests/test_staging/test_elaborate_noop_file.py +2 -3
- parsl/tests/{test_data → test_staging}/test_file.py +6 -6
- parsl/tests/{test_data → test_staging}/test_output_chain_filenames.py +3 -0
- parsl/tests/test_staging/test_staging_ftp.py +1 -0
- parsl/tests/test_staging/test_staging_https.py +5 -2
- parsl/tests/test_staging/test_staging_stdout.py +64 -0
- parsl/tests/test_staging/test_zip_in.py +39 -0
- parsl/tests/test_staging/test_zip_out.py +110 -0
- parsl/tests/test_staging/test_zip_to_zip.py +41 -0
- parsl/tests/test_summary.py +2 -2
- parsl/tests/test_thread_parallelism.py +0 -1
- parsl/tests/test_threads/test_configs.py +1 -2
- parsl/tests/test_threads/test_lazy_errors.py +2 -2
- parsl/tests/test_utils/test_execute_wait.py +35 -0
- parsl/tests/test_utils/test_sanitize_dns.py +76 -0
- parsl/tests/unit/test_address.py +20 -0
- parsl/tests/unit/test_file.py +99 -0
- parsl/tests/unit/test_usage_tracking.py +66 -0
- parsl/usage_tracking/api.py +65 -0
- parsl/usage_tracking/levels.py +6 -0
- parsl/usage_tracking/usage.py +104 -62
- parsl/utils.py +139 -6
- parsl/version.py +1 -1
- {parsl-2024.3.11.data → parsl-2025.1.13.data}/scripts/exec_parsl_function.py +6 -5
- parsl-2025.1.13.data/scripts/interchange.py +649 -0
- {parsl-2024.3.11.data → parsl-2025.1.13.data}/scripts/process_worker_pool.py +115 -77
- parsl-2025.1.13.dist-info/METADATA +96 -0
- parsl-2025.1.13.dist-info/RECORD +462 -0
- {parsl-2024.3.11.dist-info → parsl-2025.1.13.dist-info}/WHEEL +1 -1
- parsl/channels/__init__.py +0 -7
- parsl/channels/base.py +0 -141
- parsl/channels/errors.py +0 -113
- parsl/channels/local/local.py +0 -164
- parsl/channels/oauth_ssh/oauth_ssh.py +0 -110
- parsl/channels/ssh/ssh.py +0 -276
- parsl/channels/ssh_il/__init__.py +0 -0
- parsl/channels/ssh_il/ssh_il.py +0 -74
- parsl/configs/ad_hoc.py +0 -35
- parsl/executors/radical/rpex_master.py +0 -42
- parsl/monitoring/radios.py +0 -175
- parsl/providers/ad_hoc/__init__.py +0 -0
- parsl/providers/ad_hoc/ad_hoc.py +0 -248
- parsl/providers/cobalt/__init__.py +0 -0
- parsl/providers/cobalt/cobalt.py +0 -236
- parsl/providers/cobalt/template.py +0 -17
- parsl/tests/configs/ad_hoc_cluster_htex.py +0 -35
- parsl/tests/configs/cooley_htex.py +0 -37
- parsl/tests/configs/htex_ad_hoc_cluster.py +0 -28
- parsl/tests/configs/local_adhoc.py +0 -18
- parsl/tests/configs/swan_htex.py +0 -43
- parsl/tests/configs/theta.py +0 -37
- parsl/tests/integration/test_channels/__init__.py +0 -0
- parsl/tests/integration/test_channels/test_channels.py +0 -17
- parsl/tests/integration/test_channels/test_local_channel.py +0 -42
- parsl/tests/integration/test_channels/test_scp_1.py +0 -45
- parsl/tests/integration/test_channels/test_ssh_1.py +0 -40
- parsl/tests/integration/test_channels/test_ssh_errors.py +0 -46
- parsl/tests/integration/test_channels/test_ssh_file_transport.py +0 -41
- parsl/tests/integration/test_channels/test_ssh_interactive.py +0 -24
- parsl/tests/manual_tests/test_ad_hoc_htex.py +0 -48
- parsl/tests/manual_tests/test_fan_in_out_htex_remote.py +0 -88
- parsl/tests/manual_tests/test_oauth_ssh.py +0 -13
- parsl/tests/sites/test_local_adhoc.py +0 -61
- parsl/tests/test_channels/__init__.py +0 -0
- parsl/tests/test_channels/test_large_output.py +0 -22
- parsl/tests/test_data/__init__.py +0 -0
- parsl/tests/test_mpi_apps/test_mpi_mode_disabled.py +0 -51
- parsl/tests/test_providers/test_cobalt_deprecation_warning.py +0 -16
- parsl-2024.3.11.dist-info/METADATA +0 -98
- parsl-2024.3.11.dist-info/RECORD +0 -447
- parsl/{channels/local → monitoring/radios}/__init__.py +0 -0
- parsl/{channels/oauth_ssh → tests/test_shutdown}/__init__.py +0 -0
- parsl/tests/{test_data → test_staging}/test_file_apps.py +0 -0
- parsl/tests/{test_data → test_staging}/test_file_staging.py +0 -0
- parsl/{channels/ssh → tests/unit}/__init__.py +0 -0
- {parsl-2024.3.11.data → parsl-2025.1.13.data}/scripts/parsl_coprocess.py +1 -1
- {parsl-2024.3.11.dist-info → parsl-2025.1.13.dist-info}/LICENSE +0 -0
- {parsl-2024.3.11.dist-info → parsl-2025.1.13.dist-info}/entry_points.txt +0 -0
- {parsl-2024.3.11.dist-info → parsl-2025.1.13.dist-info}/top_level.txt +0 -0
parsl/tests/configs/frontera.py
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
from parsl.config import Config
|
2
|
-
from parsl.channels import LocalChannel
|
3
|
-
from parsl.providers import SlurmProvider
|
4
2
|
from parsl.executors import HighThroughputExecutor
|
5
3
|
from parsl.launchers import SrunLauncher
|
4
|
+
from parsl.providers import SlurmProvider
|
6
5
|
|
7
6
|
from .user_opts import user_opts
|
7
|
+
|
8
8
|
""" This config assumes that it is used to launch parsl tasks from the login nodes
|
9
9
|
of Frontera at TACC. Each job submitted to the scheduler will request 2 nodes for 10 minutes.
|
10
10
|
"""
|
@@ -19,7 +19,6 @@ def fresh_config():
|
|
19
19
|
encrypted=True,
|
20
20
|
provider=SlurmProvider(
|
21
21
|
cmd_timeout=60, # Add extra time for slow scheduler responses
|
22
|
-
channel=LocalChannel(),
|
23
22
|
nodes_per_block=2,
|
24
23
|
init_blocks=1,
|
25
24
|
min_blocks=1,
|
@@ -1,9 +1,7 @@
|
|
1
|
-
from parsl.providers import LocalProvider
|
2
|
-
from parsl.channels import LocalChannel
|
3
|
-
from parsl.launchers import SimpleLauncher
|
4
|
-
|
5
1
|
from parsl.config import Config
|
6
2
|
from parsl.executors import HighThroughputExecutor
|
3
|
+
from parsl.launchers import SimpleLauncher
|
4
|
+
from parsl.providers import LocalProvider
|
7
5
|
|
8
6
|
|
9
7
|
def fresh_config():
|
@@ -11,11 +9,11 @@ def fresh_config():
|
|
11
9
|
executors=[
|
12
10
|
HighThroughputExecutor(
|
13
11
|
label="htex_local",
|
12
|
+
loopback_address="::1",
|
14
13
|
worker_debug=True,
|
15
14
|
cores_per_worker=1,
|
16
15
|
encrypted=True,
|
17
16
|
provider=LocalProvider(
|
18
|
-
channel=LocalChannel(),
|
19
17
|
init_blocks=1,
|
20
18
|
max_blocks=1,
|
21
19
|
launcher=SimpleLauncher(),
|
@@ -15,22 +15,19 @@ will cause substantially different behaviour on whatever
|
|
15
15
|
those timing parameters control.
|
16
16
|
"""
|
17
17
|
|
18
|
-
# imports for monitoring:
|
19
|
-
from parsl.monitoring import MonitoringHub
|
20
|
-
|
21
18
|
import os
|
22
19
|
|
23
|
-
from parsl.providers import LocalProvider
|
24
|
-
from parsl.channels import LocalChannel
|
25
|
-
from parsl.launchers import SingleNodeLauncher
|
26
|
-
|
27
20
|
from parsl.config import Config
|
21
|
+
from parsl.data_provider.file_noop import NoOpFileStaging
|
22
|
+
from parsl.data_provider.ftp import FTPInTaskStaging
|
23
|
+
from parsl.data_provider.http import HTTPInTaskStaging
|
24
|
+
from parsl.data_provider.zip import ZipFileStaging
|
28
25
|
from parsl.executors import HighThroughputExecutor
|
26
|
+
from parsl.launchers import SingleNodeLauncher
|
29
27
|
|
30
|
-
|
31
|
-
from parsl.
|
32
|
-
from parsl.
|
33
|
-
from parsl.data_provider.file_noop import NoOpFileStaging
|
28
|
+
# imports for monitoring:
|
29
|
+
from parsl.monitoring import MonitoringHub
|
30
|
+
from parsl.providers import LocalProvider
|
34
31
|
|
35
32
|
working_dir = os.getcwd() + "/" + "test_htex_alternate"
|
36
33
|
|
@@ -42,7 +39,7 @@ def fresh_config():
|
|
42
39
|
address="127.0.0.1",
|
43
40
|
label="htex_Local",
|
44
41
|
working_dir=working_dir,
|
45
|
-
storage_access=[FTPInTaskStaging(), HTTPInTaskStaging(), NoOpFileStaging()],
|
42
|
+
storage_access=[ZipFileStaging(), FTPInTaskStaging(), HTTPInTaskStaging(), NoOpFileStaging()],
|
46
43
|
worker_debug=True,
|
47
44
|
cores_per_worker=1,
|
48
45
|
heartbeat_period=2,
|
@@ -50,7 +47,6 @@ def fresh_config():
|
|
50
47
|
poll_period=100,
|
51
48
|
encrypted=True,
|
52
49
|
provider=LocalProvider(
|
53
|
-
channel=LocalChannel(),
|
54
50
|
init_blocks=0,
|
55
51
|
min_blocks=0,
|
56
52
|
max_blocks=5,
|
@@ -64,11 +60,11 @@ def fresh_config():
|
|
64
60
|
retries=2,
|
65
61
|
monitoring=MonitoringHub(
|
66
62
|
hub_address="localhost",
|
67
|
-
hub_port=55055,
|
68
63
|
monitoring_debug=False,
|
69
64
|
resource_monitoring_interval=1,
|
70
65
|
),
|
71
|
-
usage_tracking=
|
66
|
+
usage_tracking=3,
|
67
|
+
project_name="parsl htex_local_alternate test configuration"
|
72
68
|
)
|
73
69
|
|
74
70
|
|
@@ -1,13 +1,10 @@
|
|
1
|
-
from parsl.providers import LocalProvider
|
2
|
-
from parsl.channels import LocalChannel
|
3
|
-
from parsl.launchers import SimpleLauncher
|
4
|
-
|
5
|
-
from parsl.data_provider.http import HTTPInTaskStaging
|
6
|
-
from parsl.data_provider.ftp import FTPInTaskStaging
|
7
|
-
from parsl.data_provider.file_noop import NoOpFileStaging
|
8
|
-
|
9
1
|
from parsl.config import Config
|
2
|
+
from parsl.data_provider.file_noop import NoOpFileStaging
|
3
|
+
from parsl.data_provider.ftp import FTPInTaskStaging
|
4
|
+
from parsl.data_provider.http import HTTPInTaskStaging
|
10
5
|
from parsl.executors import HighThroughputExecutor
|
6
|
+
from parsl.launchers import SimpleLauncher
|
7
|
+
from parsl.providers import LocalProvider
|
11
8
|
|
12
9
|
config = Config(
|
13
10
|
executors=[
|
@@ -17,7 +14,6 @@ config = Config(
|
|
17
14
|
cores_per_worker=1,
|
18
15
|
encrypted=True,
|
19
16
|
provider=LocalProvider(
|
20
|
-
channel=LocalChannel(),
|
21
17
|
init_blocks=1,
|
22
18
|
max_blocks=1,
|
23
19
|
launcher=SimpleLauncher(),
|
@@ -1,13 +1,10 @@
|
|
1
|
-
from parsl.
|
2
|
-
from parsl.channels import LocalChannel
|
3
|
-
from parsl.launchers import SimpleLauncher
|
4
|
-
|
5
|
-
from parsl.data_provider.http import HTTPInTaskStaging
|
1
|
+
from parsl.config import Config
|
6
2
|
from parsl.data_provider.ftp import FTPInTaskStaging
|
3
|
+
from parsl.data_provider.http import HTTPInTaskStaging
|
7
4
|
from parsl.data_provider.rsync import RSyncStaging
|
8
|
-
|
9
|
-
from parsl.config import Config
|
10
5
|
from parsl.executors import HighThroughputExecutor
|
6
|
+
from parsl.launchers import SimpleLauncher
|
7
|
+
from parsl.providers import LocalProvider
|
11
8
|
|
12
9
|
config = Config(
|
13
10
|
executors=[
|
@@ -18,7 +15,6 @@ config = Config(
|
|
18
15
|
working_dir="./rsync-workdir/",
|
19
16
|
encrypted=True,
|
20
17
|
provider=LocalProvider(
|
21
|
-
channel=LocalChannel(),
|
22
18
|
init_blocks=1,
|
23
19
|
max_blocks=1,
|
24
20
|
launcher=SimpleLauncher(),
|
@@ -1,9 +1,7 @@
|
|
1
1
|
import os
|
2
2
|
|
3
3
|
from parsl.config import Config
|
4
|
-
from parsl.executors.radical import RadicalPilotExecutor
|
5
|
-
from parsl.executors.radical import ResourceConfig
|
6
|
-
|
4
|
+
from parsl.executors.radical import RadicalPilotExecutor, ResourceConfig
|
7
5
|
|
8
6
|
rpex_cfg = ResourceConfig()
|
9
7
|
|
@@ -1,10 +1,10 @@
|
|
1
1
|
import os
|
2
|
+
|
2
3
|
from parsl.config import Config
|
3
4
|
|
4
5
|
|
5
6
|
def fresh_config():
|
6
|
-
from parsl.executors.radical import ResourceConfig
|
7
|
-
from parsl.executors.radical import RadicalPilotExecutor
|
7
|
+
from parsl.executors.radical import RadicalPilotExecutor, ResourceConfig
|
8
8
|
|
9
9
|
rpex_cfg = ResourceConfig()
|
10
10
|
rpex_cfg.worker_type = "MPI"
|
@@ -1,13 +1,11 @@
|
|
1
1
|
from parsl.config import Config
|
2
2
|
from parsl.executors.threads import ThreadPoolExecutor
|
3
3
|
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
checkpoint_period='00:00:05'
|
13
|
-
)
|
4
|
+
|
5
|
+
def fresh_config():
|
6
|
+
tpe = ThreadPoolExecutor(label='local_threads_checkpoint_periodic', max_threads=1)
|
7
|
+
return Config(
|
8
|
+
executors=[tpe],
|
9
|
+
checkpoint_mode='periodic',
|
10
|
+
checkpoint_period='00:00:02'
|
11
|
+
)
|
parsl/tests/configs/midway.py
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
from parsl.config import Config
|
2
|
-
from parsl.providers import SlurmProvider
|
3
|
-
from parsl.launchers import SrunLauncher
|
4
2
|
from parsl.executors import HighThroughputExecutor
|
3
|
+
from parsl.launchers import SrunLauncher
|
4
|
+
from parsl.providers import SlurmProvider
|
5
5
|
|
6
6
|
from .user_opts import user_opts
|
7
7
|
|
@@ -1,8 +1,8 @@
|
|
1
|
-
from parsl.providers import PBSProProvider
|
2
|
-
from parsl.executors import HighThroughputExecutor
|
3
|
-
from parsl.launchers import MpiRunLauncher
|
4
1
|
from parsl.addresses import address_by_interface
|
5
2
|
from parsl.config import Config
|
3
|
+
from parsl.executors import HighThroughputExecutor
|
4
|
+
from parsl.launchers import MpiRunLauncher
|
5
|
+
from parsl.providers import PBSProProvider
|
6
6
|
|
7
7
|
from .user_opts import user_opts
|
8
8
|
|
parsl/tests/configs/osg_htex.py
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
from parsl.config import Config
|
2
|
-
from parsl.providers import CondorProvider
|
3
2
|
from parsl.executors import HighThroughputExecutor
|
3
|
+
from parsl.providers import CondorProvider
|
4
4
|
|
5
5
|
# If you are a developer running tests, make sure to update parsl/tests/configs/user_opts.py
|
6
6
|
# If you are a user copying-and-pasting this as an example, make sure to either
|
@@ -1,10 +1,11 @@
|
|
1
|
+
import os
|
2
|
+
|
3
|
+
from parsl.addresses import address_by_route
|
1
4
|
from parsl.config import Config
|
2
5
|
from parsl.executors import HighThroughputExecutor
|
3
6
|
from parsl.providers import KubernetesProvider
|
4
|
-
from parsl.addresses import address_by_route
|
5
7
|
|
6
8
|
from .user_opts import user_opts
|
7
|
-
import os
|
8
9
|
|
9
10
|
|
10
11
|
def fresh_config():
|
@@ -0,0 +1,24 @@
|
|
1
|
+
from parsl.config import Config
|
2
|
+
from parsl.executors import HighThroughputExecutor
|
3
|
+
from parsl.launchers import SrunLauncher
|
4
|
+
from parsl.providers import SlurmProvider
|
5
|
+
|
6
|
+
|
7
|
+
def fresh_config():
|
8
|
+
return Config(
|
9
|
+
executors=[
|
10
|
+
HighThroughputExecutor(
|
11
|
+
label="docker_slurm",
|
12
|
+
encrypted=True,
|
13
|
+
provider=SlurmProvider(
|
14
|
+
cmd_timeout=60, # Add extra time for slow scheduler responses
|
15
|
+
nodes_per_block=1,
|
16
|
+
init_blocks=1,
|
17
|
+
min_blocks=1,
|
18
|
+
max_blocks=1,
|
19
|
+
walltime='00:10:00',
|
20
|
+
launcher=SrunLauncher(),
|
21
|
+
),
|
22
|
+
)
|
23
|
+
],
|
24
|
+
)
|
parsl/tests/configs/summit.py
CHANGED
@@ -4,6 +4,7 @@ from parsl.launchers import JsrunLauncher
|
|
4
4
|
from parsl.providers import LSFProvider
|
5
5
|
|
6
6
|
from .user_opts import user_opts
|
7
|
+
|
7
8
|
""" This config assumes that it is used to launch parsl tasks from the login nodes
|
8
9
|
of Frontera at TACC. Each job submitted to the scheduler will request 2 nodes for 10 minutes.
|
9
10
|
"""
|
@@ -1,13 +1,10 @@
|
|
1
1
|
from parsl.config import Config
|
2
|
-
from parsl.executors.taskvine import TaskVineExecutor
|
3
|
-
from parsl.executors.taskvine import TaskVineManagerConfig
|
4
|
-
|
5
|
-
from parsl.data_provider.http import HTTPInTaskStaging
|
6
|
-
from parsl.data_provider.ftp import FTPInTaskStaging
|
7
2
|
from parsl.data_provider.file_noop import NoOpFileStaging
|
3
|
+
from parsl.data_provider.ftp import FTPInTaskStaging
|
4
|
+
from parsl.data_provider.http import HTTPInTaskStaging
|
5
|
+
from parsl.executors.taskvine import TaskVineExecutor, TaskVineManagerConfig
|
8
6
|
|
9
7
|
|
10
8
|
def fresh_config():
|
11
9
|
return Config(executors=[TaskVineExecutor(manager_config=TaskVineManagerConfig(port=9000),
|
12
|
-
worker_launch_method='factory'
|
13
|
-
storage_access=[FTPInTaskStaging(), HTTPInTaskStaging(), NoOpFileStaging()])])
|
10
|
+
worker_launch_method='factory')])
|
parsl/tests/configs/user_opts.py
CHANGED
@@ -60,7 +60,8 @@ user_opts = {
|
|
60
60
|
# 'username': OSG_USERNAME,
|
61
61
|
# 'script_dir': '/home/{}/parsl_scripts'.format(OSG_USERNAME),
|
62
62
|
# 'scheduler_options': "",
|
63
|
-
# 'worker_init' : 'module load python/3.5.2; python3 -m venv parsl_env;
|
63
|
+
# 'worker_init' : 'module load python/3.5.2; python3 -m venv parsl_env;
|
64
|
+
# source parsl_env/bin/activate; python3 -m pip install parsl==0.5.2'
|
64
65
|
# },
|
65
66
|
# 'swan': {
|
66
67
|
# 'username': SWAN_USERNAME,
|
@@ -134,13 +135,6 @@ user_opts = {
|
|
134
135
|
# # For example:
|
135
136
|
# 'remote_writeable': 'globus://af7bda53-6d04-11e5-ba46-22000b92c6ec/home/bzc/'
|
136
137
|
# },
|
137
|
-
# 'adhoc': {
|
138
|
-
# # This specifies configuration parameters when testing an ad-hoc SSH based cluster
|
139
|
-
# 'username': 'fixme', # username on remote systems
|
140
|
-
# 'remote_hostnames': ['hostname1', 'hostname2'], # addresses of remote systems
|
141
|
-
# 'worker_init': 'init commands', # worker_init for remote systems
|
142
|
-
# 'script_dir': "/path" # script directory on remote systems
|
143
|
-
# }
|
144
138
|
#
|
145
139
|
} # type: Dict[str, Any]
|
146
140
|
|
@@ -1,12 +1,10 @@
|
|
1
1
|
from parsl.config import Config
|
2
|
-
from parsl.executors import WorkQueueExecutor
|
3
|
-
|
4
|
-
from parsl.data_provider.http import HTTPInTaskStaging
|
5
|
-
from parsl.data_provider.ftp import FTPInTaskStaging
|
6
2
|
from parsl.data_provider.file_noop import NoOpFileStaging
|
3
|
+
from parsl.data_provider.ftp import FTPInTaskStaging
|
4
|
+
from parsl.data_provider.http import HTTPInTaskStaging
|
5
|
+
from parsl.executors import WorkQueueExecutor
|
7
6
|
|
8
7
|
|
9
8
|
def fresh_config():
|
10
9
|
return Config(executors=[WorkQueueExecutor(port=9000,
|
11
|
-
coprocess=True
|
12
|
-
storage_access=[FTPInTaskStaging(), HTTPInTaskStaging(), NoOpFileStaging()])])
|
10
|
+
coprocess=True)])
|
parsl/tests/conftest.py
CHANGED
@@ -3,22 +3,24 @@ import itertools
|
|
3
3
|
import logging
|
4
4
|
import os
|
5
5
|
import pathlib
|
6
|
+
import random
|
6
7
|
import re
|
7
8
|
import shutil
|
8
|
-
import time
|
9
|
-
import types
|
10
9
|
import signal
|
10
|
+
import string
|
11
11
|
import sys
|
12
12
|
import tempfile
|
13
13
|
import threading
|
14
|
+
import time
|
14
15
|
import traceback
|
16
|
+
import types
|
15
17
|
import typing as t
|
16
18
|
from datetime import datetime
|
17
19
|
from glob import glob
|
18
20
|
from itertools import chain
|
19
21
|
|
20
|
-
import pytest
|
21
22
|
import _pytest.runner as runner
|
23
|
+
import pytest
|
22
24
|
|
23
25
|
import parsl
|
24
26
|
from parsl.dataflow.dflow import DataFlowKernelLoader
|
@@ -56,7 +58,7 @@ def tmpd_cwd_session(pytestconfig):
|
|
56
58
|
|
57
59
|
config = re.sub(r"[^A-z0-9_-]+", "_", pytestconfig.getoption('config')[0])
|
58
60
|
cwd = pathlib.Path(os.getcwd())
|
59
|
-
pytest_dir = cwd / "
|
61
|
+
pytest_dir = cwd / "pytest-parsl"
|
60
62
|
pytest_dir.mkdir(mode=0o700, parents=True, exist_ok=True)
|
61
63
|
|
62
64
|
test_dir_prefix = "parsltest-"
|
@@ -135,28 +137,31 @@ def pytest_configure(config):
|
|
135
137
|
)
|
136
138
|
config.addinivalue_line(
|
137
139
|
'markers',
|
138
|
-
'
|
140
|
+
'cleannet: Enable tests that require a clean network connection (such as for testing FTP)'
|
139
141
|
)
|
140
|
-
|
141
142
|
config.addinivalue_line(
|
142
143
|
'markers',
|
143
|
-
'
|
144
|
+
'staging_required: Marks tests that require a staging provider, when there is no sharedFS'
|
144
145
|
)
|
145
146
|
config.addinivalue_line(
|
146
147
|
'markers',
|
147
|
-
'
|
148
|
+
'multiple_cores_required: Marks tests that require multiple cores, such as htex affinity'
|
148
149
|
)
|
149
150
|
config.addinivalue_line(
|
150
151
|
'markers',
|
151
|
-
'
|
152
|
+
'unix_filesystem_permissions_required: Marks tests that require unix-level filesystem permission enforcement'
|
152
153
|
)
|
153
154
|
config.addinivalue_line(
|
154
155
|
'markers',
|
155
|
-
'
|
156
|
+
'issue3328: Marks tests broken by issue #3328'
|
156
157
|
)
|
157
158
|
config.addinivalue_line(
|
158
159
|
'markers',
|
159
|
-
'
|
160
|
+
'executor_supports_std_stream_tuples: Marks tests that require tuple support for stdout/stderr'
|
161
|
+
)
|
162
|
+
config.addinivalue_line(
|
163
|
+
'markers',
|
164
|
+
'shared_fs: Marks tests that require a shared_fs between the workers are the test client'
|
160
165
|
)
|
161
166
|
|
162
167
|
|
@@ -200,7 +205,7 @@ def load_dfk_session(request, pytestconfig, tmpd_cwd_session):
|
|
200
205
|
if parsl.dfk() != dfk:
|
201
206
|
raise RuntimeError("DFK changed unexpectedly during test")
|
202
207
|
dfk.cleanup()
|
203
|
-
|
208
|
+
assert DataFlowKernelLoader._dfk is None
|
204
209
|
else:
|
205
210
|
yield
|
206
211
|
|
@@ -246,12 +251,13 @@ def load_dfk_local_module(request, pytestconfig, tmpd_cwd_session):
|
|
246
251
|
|
247
252
|
if callable(local_teardown):
|
248
253
|
local_teardown()
|
254
|
+
assert DataFlowKernelLoader._dfk is None, "Expected teardown to clear DFK"
|
249
255
|
|
250
256
|
if local_config:
|
251
257
|
if parsl.dfk() != dfk:
|
252
258
|
raise RuntimeError("DFK changed unexpectedly during test")
|
253
259
|
dfk.cleanup()
|
254
|
-
|
260
|
+
assert DataFlowKernelLoader._dfk is None
|
255
261
|
|
256
262
|
else:
|
257
263
|
yield
|
@@ -422,3 +428,11 @@ def try_assert():
|
|
422
428
|
raise AssertionError("Bad assert call: no attempts or timeout period")
|
423
429
|
|
424
430
|
yield _impl
|
431
|
+
|
432
|
+
|
433
|
+
@pytest.fixture
|
434
|
+
def randomstring():
|
435
|
+
def func(length=5, alphabet=string.ascii_letters):
|
436
|
+
return "".join(random.choice(alphabet) for _ in range(length))
|
437
|
+
|
438
|
+
return func
|
@@ -1,14 +1,12 @@
|
|
1
1
|
''' Testing bash apps
|
2
2
|
'''
|
3
|
-
import parsl
|
4
|
-
from parsl import python_app
|
5
|
-
|
6
|
-
import time
|
7
3
|
import argparse
|
4
|
+
import time
|
8
5
|
|
6
|
+
import parsl
|
7
|
+
from parsl import python_app
|
9
8
|
from parsl.tests.configs.local_threads import config
|
10
9
|
|
11
|
-
|
12
10
|
local_config = config
|
13
11
|
|
14
12
|
|
@@ -1,11 +1,10 @@
|
|
1
|
-
from parsl.providers import LocalProvider
|
2
|
-
from parsl.channels import LocalChannel
|
3
|
-
# from parsl.launchers import SimpleLauncher
|
4
|
-
from parsl.launchers import SingleNodeLauncher
|
5
|
-
|
6
1
|
from parsl.config import Config
|
7
2
|
from parsl.executors import HighThroughputExecutor
|
8
3
|
|
4
|
+
# from parsl.launchers import SimpleLauncher
|
5
|
+
from parsl.launchers import SingleNodeLauncher
|
6
|
+
from parsl.providers import LocalProvider
|
7
|
+
|
9
8
|
config = Config(
|
10
9
|
executors=[
|
11
10
|
HighThroughputExecutor(
|
@@ -15,7 +14,6 @@ config = Config(
|
|
15
14
|
cores_per_worker=1,
|
16
15
|
encrypted=True,
|
17
16
|
provider=LocalProvider(
|
18
|
-
channel=LocalChannel(),
|
19
17
|
init_blocks=1,
|
20
18
|
max_blocks=1,
|
21
19
|
# tasks_per_node=1, # For HighThroughputExecutor, this option should in most cases be 1
|
@@ -1,15 +1,14 @@
|
|
1
1
|
import argparse
|
2
|
-
import parsl
|
3
|
-
import psutil
|
4
2
|
import multiprocessing
|
5
3
|
|
6
|
-
|
7
|
-
from parsl.channels import LocalChannel
|
8
|
-
from parsl.launchers import SingleNodeLauncher
|
9
|
-
from parsl.config import Config
|
10
|
-
from parsl.executors import HighThroughputExecutor
|
4
|
+
import psutil
|
11
5
|
|
6
|
+
import parsl
|
12
7
|
from parsl.app.app import python_app # , bash_app
|
8
|
+
from parsl.config import Config
|
9
|
+
from parsl.executors import HighThroughputExecutor
|
10
|
+
from parsl.launchers import SingleNodeLauncher
|
11
|
+
from parsl.providers import LocalProvider
|
13
12
|
|
14
13
|
|
15
14
|
@python_app
|
@@ -30,7 +29,6 @@ def test_simple(mem_per_worker):
|
|
30
29
|
suppress_failure=True,
|
31
30
|
encrypted=True,
|
32
31
|
provider=LocalProvider(
|
33
|
-
channel=LocalChannel(),
|
34
32
|
init_blocks=1,
|
35
33
|
max_blocks=1,
|
36
34
|
launcher=SingleNodeLauncher(),
|
@@ -1,9 +1,10 @@
|
|
1
|
+
import logging
|
2
|
+
|
3
|
+
import parsl
|
1
4
|
from parsl import python_app
|
2
|
-
from parsl.monitoring.monitoring import MonitoringHub
|
3
5
|
from parsl.config import Config
|
4
6
|
from parsl.executors import ThreadPoolExecutor
|
5
|
-
import
|
6
|
-
import logging
|
7
|
+
from parsl.monitoring.monitoring import MonitoringHub
|
7
8
|
|
8
9
|
|
9
10
|
def local_setup():
|
@@ -14,7 +15,6 @@ def local_setup():
|
|
14
15
|
],
|
15
16
|
monitoring=MonitoringHub(
|
16
17
|
hub_address="127.0.0.1",
|
17
|
-
hub_port=55055,
|
18
18
|
logging_level=logging.INFO,
|
19
19
|
resource_monitoring_interval=10))
|
20
20
|
|
@@ -1,7 +1,7 @@
|
|
1
1
|
import argparse
|
2
|
-
import time
|
3
2
|
import math
|
4
3
|
import multiprocessing
|
4
|
+
import time
|
5
5
|
|
6
6
|
import parsl
|
7
7
|
|
@@ -10,10 +10,11 @@ CORES_PER_WORKER = 1
|
|
10
10
|
EXPECTED_WORKERS = math.floor(CORES / CORES_PER_WORKER)
|
11
11
|
|
12
12
|
|
13
|
+
from parsl.executors import HighThroughputExecutor
|
14
|
+
|
13
15
|
# from parsl.tests.configs.htex_local import config
|
14
16
|
from parsl.tests.manual_tests.htex_local import config
|
15
17
|
|
16
|
-
from parsl.executors import HighThroughputExecutor
|
17
18
|
assert isinstance(config.executors[0], HighThroughputExecutor)
|
18
19
|
config.executors[0].cores_per_worker = CORES_PER_WORKER
|
19
20
|
config.executors[0].provider.init_blocks = 1
|
@@ -1,8 +1,7 @@
|
|
1
|
-
from parsl.providers import LocalProvider
|
2
|
-
from parsl.channels import LocalChannel
|
3
|
-
|
4
1
|
from parsl.config import Config
|
5
2
|
from parsl.executors import HighThroughputExecutor
|
3
|
+
from parsl.providers import LocalProvider
|
4
|
+
|
6
5
|
# import os
|
7
6
|
config = Config(
|
8
7
|
executors=[
|
@@ -12,7 +11,6 @@ config = Config(
|
|
12
11
|
max_workers_per_node=8,
|
13
12
|
encrypted=True,
|
14
13
|
provider=LocalProvider(
|
15
|
-
channel=LocalChannel(),
|
16
14
|
init_blocks=1,
|
17
15
|
max_blocks=1,
|
18
16
|
),
|