parsl 2024.10.28__py3-none-any.whl → 2024.11.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.
Files changed (46) hide show
  1. parsl/dataflow/dflow.py +5 -5
  2. parsl/executors/high_throughput/executor.py +0 -1
  3. parsl/executors/high_throughput/mpi_resource_management.py +0 -12
  4. parsl/monitoring/monitoring.py +4 -6
  5. parsl/monitoring/radios.py +3 -14
  6. parsl/monitoring/remote.py +3 -5
  7. parsl/providers/__init__.py +0 -2
  8. parsl/providers/base.py +1 -1
  9. parsl/tests/conftest.py +4 -0
  10. parsl/tests/site_tests/site_config_selector.py +1 -6
  11. parsl/tests/test_bash_apps/test_basic.py +3 -0
  12. parsl/tests/test_bash_apps/test_error_codes.py +4 -0
  13. parsl/tests/test_bash_apps/test_kwarg_storage.py +1 -0
  14. parsl/tests/test_bash_apps/test_memoize.py +2 -6
  15. parsl/tests/test_bash_apps/test_memoize_ignore_args.py +3 -0
  16. parsl/tests/test_bash_apps/test_memoize_ignore_args_regr.py +1 -0
  17. parsl/tests/test_bash_apps/test_multiline.py +1 -0
  18. parsl/tests/test_bash_apps/test_stdout.py +2 -0
  19. parsl/tests/test_docs/test_from_slides.py +3 -0
  20. parsl/tests/test_docs/test_kwargs.py +3 -0
  21. parsl/tests/test_monitoring/test_basic.py +13 -1
  22. parsl/tests/test_python_apps/test_outputs.py +1 -0
  23. parsl/tests/test_regression/test_226.py +1 -0
  24. parsl/tests/test_staging/test_docs_1.py +1 -0
  25. parsl/tests/test_staging/test_output_chain_filenames.py +3 -0
  26. parsl/tests/test_staging/test_staging_ftp.py +1 -0
  27. parsl/tests/test_staging/test_staging_https.py +3 -0
  28. parsl/tests/test_staging/test_staging_stdout.py +2 -0
  29. parsl/version.py +1 -1
  30. {parsl-2024.10.28.dist-info → parsl-2024.11.4.dist-info}/METADATA +2 -2
  31. {parsl-2024.10.28.dist-info → parsl-2024.11.4.dist-info}/RECORD +39 -46
  32. parsl/providers/cobalt/__init__.py +0 -0
  33. parsl/providers/cobalt/cobalt.py +0 -236
  34. parsl/providers/cobalt/template.py +0 -17
  35. parsl/tests/configs/cooley_htex.py +0 -37
  36. parsl/tests/configs/theta.py +0 -37
  37. parsl/tests/manual_tests/test_fan_in_out_htex_remote.py +0 -88
  38. parsl/tests/test_providers/test_cobalt_deprecation_warning.py +0 -18
  39. {parsl-2024.10.28.data → parsl-2024.11.4.data}/scripts/exec_parsl_function.py +0 -0
  40. {parsl-2024.10.28.data → parsl-2024.11.4.data}/scripts/interchange.py +0 -0
  41. {parsl-2024.10.28.data → parsl-2024.11.4.data}/scripts/parsl_coprocess.py +0 -0
  42. {parsl-2024.10.28.data → parsl-2024.11.4.data}/scripts/process_worker_pool.py +0 -0
  43. {parsl-2024.10.28.dist-info → parsl-2024.11.4.dist-info}/LICENSE +0 -0
  44. {parsl-2024.10.28.dist-info → parsl-2024.11.4.dist-info}/WHEEL +0 -0
  45. {parsl-2024.10.28.dist-info → parsl-2024.11.4.dist-info}/entry_points.txt +0 -0
  46. {parsl-2024.10.28.dist-info → parsl-2024.11.4.dist-info}/top_level.txt +0 -0
@@ -8,7 +8,7 @@ parsl/multiprocessing.py,sha256=MyaEcEq-Qf860u7V98u-PZrPNdtzOZL_NW6EhIJnmfQ,1937
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=rMLKeadEsQ9jGwm4ogqiLIXPS3zOAyfznQJXVkJSY8E,13107
11
- parsl/version.py,sha256=_aB3gX1QHuC8JylX_fsIWJhUjbr-OtBk6u88PVGFMFQ,131
11
+ parsl/version.py,sha256=Es3lD9-szh1iXGNYUZ5WoLwmMCRI0IiMcFtPiDtIySU,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
@@ -62,7 +62,7 @@ parsl/data_provider/staging.py,sha256=ZDZuuFg38pjUStegKPcvPsfGp3iMeReMzfU6DSwtJj
62
62
  parsl/data_provider/zip.py,sha256=S4kVuH9lxAegRURYbvIUR7EYYBOccyslaqyCrVWUBhw,4497
63
63
  parsl/dataflow/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
64
64
  parsl/dataflow/dependency_resolvers.py,sha256=Om8Dgh7a0ZwgXAc6TlhxLSzvxXHDlNNV1aBNiD3JTNY,3325
65
- parsl/dataflow/dflow.py,sha256=g7il86TRBoulACyCZcDBkbFvFc7k1dV9cxoeb2wWngY,68230
65
+ parsl/dataflow/dflow.py,sha256=GrBYtZCjzFfL9Nm8ybjR-kO4eAQNw3xlfluTPnt9des,68236
66
66
  parsl/dataflow/errors.py,sha256=9SxVhIJY_53FQx8x4OU8UA8nd7lvUbDllH7KfMXpYaY,2177
67
67
  parsl/dataflow/futures.py,sha256=08LuP-HFiHBIZmeKCjlsazw_WpQ5fwevrU2_WbidkYw,6080
68
68
  parsl/dataflow/memoization.py,sha256=l9uw1Bu50GucBF70M5relpGKFkE4dIM9T3R1KrxW0v0,9583
@@ -80,14 +80,14 @@ parsl/executors/flux/executor.py,sha256=8_xakLUu5zNJAHL0LbeTCFEWqWzRK1eE-3ep4GII
80
80
  parsl/executors/flux/flux_instance_manager.py,sha256=5T3Rp7ZM-mlT0Pf0Gxgs5_YmnaPrSF9ec7zvRfLfYJw,2129
81
81
  parsl/executors/high_throughput/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
82
82
  parsl/executors/high_throughput/errors.py,sha256=Sak8e8UpiEcXefUjMHbhyXc4Rn7kJtOoh7L8wreBQdk,1638
83
- parsl/executors/high_throughput/executor.py,sha256=_dff5USFQq7V89kEXEWd2OqgYJQfq9i1b2e8FYA-zow,37511
83
+ parsl/executors/high_throughput/executor.py,sha256=B9p843K9mmYbrkbIKIgryb_wC1XhRvYzHxoTaFTXLUw,37455
84
84
  parsl/executors/high_throughput/interchange.py,sha256=DQjIb7SpBAfHUFr5kY9f_9lJhH_ZX0CktoFu7yyTXBQ,30111
85
85
  parsl/executors/high_throughput/manager_record.py,sha256=yn3L8TUJFkgm2lX1x0SeS9mkvJowC0s2VIMCFiU7ThM,455
86
86
  parsl/executors/high_throughput/manager_selector.py,sha256=UKcUE6v0tO7PDMTThpKSKxVpOpOUilxDL7UbNgpZCxo,2116
87
87
  parsl/executors/high_throughput/monitoring_info.py,sha256=HC0drp6nlXQpAop5PTUKNjdXMgtZVvrBL0JzZJebPP4,298
88
88
  parsl/executors/high_throughput/mpi_executor.py,sha256=khvGz56A8zU8XAY-R4TtqqiJB8B10mkVTXD_9xtrXgo,4696
89
89
  parsl/executors/high_throughput/mpi_prefix_composer.py,sha256=DmpKugANNa1bdYlqQBLHkrFc15fJpefPPhW9hkAlh1s,4308
90
- parsl/executors/high_throughput/mpi_resource_management.py,sha256=LFBbJ3BnzTcY_v-jNu30uoIB2Enk4cleN4ygY3dncjY,8194
90
+ parsl/executors/high_throughput/mpi_resource_management.py,sha256=8Xk2COoVNm1VKbFkKa1uE92zl8hfreO2MzfVOuDKnUQ,7771
91
91
  parsl/executors/high_throughput/probe.py,sha256=TNpGTXb4_DEeg_h-LHu4zEKi1-hffboxvKcZUl2OZGk,2751
92
92
  parsl/executors/high_throughput/process_worker_pool.py,sha256=wpfKhA1hqbzfSnRfKn1WPFE_ZRd0LF07dBaK0YDXamg,42934
93
93
  parsl/executors/high_throughput/zmq_pipes.py,sha256=tAjQB3aNVMuTXziN3dbJWre46YpXgliD55qMBbhYTLU,8581
@@ -124,9 +124,9 @@ parsl/monitoring/__init__.py,sha256=0ywNz6i0lM1xo_7_BIxhETDGeVd2C_0wwD7qgeaMR4c,
124
124
  parsl/monitoring/db_manager.py,sha256=G795Nme9di2AWT7zqFNNyOn8ZJd5i1I2hA6iDSorZD4,33330
125
125
  parsl/monitoring/errors.py,sha256=D6jpYzEzp0d6FmVKGqhvjAxr4ztZfJX2s-aXemH9bBU,148
126
126
  parsl/monitoring/message_type.py,sha256=Khn88afNxcOIciKiCK4GLnn90I5BlRTiOL3zK-P07yQ,401
127
- parsl/monitoring/monitoring.py,sha256=9P9IcXFd6m9YVPZlc1cTUlrvdIt2MibCvE84rtNsHWw,13062
128
- parsl/monitoring/radios.py,sha256=mK7DfpeLbXnbXybLI_yS6clDNDmCCrZVAMVNaUI9DQA,6424
129
- parsl/monitoring/remote.py,sha256=avIWMvejN0LeIXpt_RCXJxGLbsXhapUab2rS5Tmjca4,13739
127
+ parsl/monitoring/monitoring.py,sha256=qwl90cuMbgGNxLo0uCOTpjsv3b3t1n1_0W-ZtNPGGNI,12956
128
+ parsl/monitoring/radios.py,sha256=LuuhoKjnAwdqomjHhKDvkzuMBiPSu0WjqsWShOkampQ,6064
129
+ parsl/monitoring/remote.py,sha256=WfSqQWYPMx3gT6u4T171ngMPzt8ialR1jRSsrD-4O24,13619
130
130
  parsl/monitoring/router.py,sha256=5WrJ7YT2SV3T9BHCI8P0KqHm-4Y6NDgZkwmEcISmzGU,9110
131
131
  parsl/monitoring/types.py,sha256=oOCrzv-ab-_rv4pb8o58Sdb8G_RGp1aZriRbdf9zBEk,339
132
132
  parsl/monitoring/queries/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -152,8 +152,8 @@ parsl/monitoring/visualization/templates/resource_usage.html,sha256=__QEaAPdO8kz
152
152
  parsl/monitoring/visualization/templates/task.html,sha256=omDwp7zFXHVtuGsUCXcB7xLAsAW0Vrjd1b-wFZj9y70,2803
153
153
  parsl/monitoring/visualization/templates/workflow.html,sha256=QCSHAPHK_2C3gNcZ3NmChLFG6xuchZEjT_iLQ3wwXmk,1871
154
154
  parsl/monitoring/visualization/templates/workflows_summary.html,sha256=7brKKNsxcT4z-l10BKJlgTxQtGL033ZS5jEDdSmsPEE,891
155
- parsl/providers/__init__.py,sha256=fvmVlu4aHw796K-fuUqxCHdK8KhrQviMARSmUQl1XXs,1077
156
- parsl/providers/base.py,sha256=Kj8adE9SgIFwvbd61qvwEdtuI3gfkqYVJEbI4bGsaZQ,5271
155
+ parsl/providers/__init__.py,sha256=aUvIDlvYUXFa66YhqqUFyTg6dd4Si3oSmsZUPNw0oOE,991
156
+ parsl/providers/base.py,sha256=-yAfK8zNc2LCX8GFyRJ4sN5ekL_gqftJ3QHtLSWyrTw,5264
157
157
  parsl/providers/cluster_provider.py,sha256=o75wJHHyZkecjEBhGGBCMUQ1JlsecAhAKxX_Qd2pyg8,4668
158
158
  parsl/providers/errors.py,sha256=_CbCmpguzcA81SC5dPLkDZs1AShzacGKttNhuzNBeiQ,2270
159
159
  parsl/providers/ad_hoc/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -164,9 +164,6 @@ parsl/providers/aws/template.py,sha256=N7OEpp7YP6CK5RUtLOwFnks7AE2UG5hHXddh8FF0B
164
164
  parsl/providers/azure/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
165
165
  parsl/providers/azure/azure.py,sha256=eJKJ7Eeq9iUSAlkTczIDyM-OPyNtwnoZzdUbC0fgvDU,18372
166
166
  parsl/providers/azure/template.py,sha256=JJNW8zr30uYcfK-RqQX2FHZVWrxvYE8E6VbaYuAFEqw,347
167
- parsl/providers/cobalt/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
168
- parsl/providers/cobalt/cobalt.py,sha256=7QP0w3Qvc0etZDcqNvEzcZzCUmsNs_BoWwSxRkKxX5E,8478
169
- parsl/providers/cobalt/template.py,sha256=a7fIkMLrYZ6uHgOPQgp8YPJA8f7SgxloFdEx51OJvuY,273
170
167
  parsl/providers/condor/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
171
168
  parsl/providers/condor/condor.py,sha256=CzcnohklL_0Hm-Dk8o59JtEHz0rBQzkQAhozuksytNo,13177
172
169
  parsl/providers/condor/template.py,sha256=Jm2ezWo7ERMNPFvjLLEriaP5n5kD0vQBnikn9kpUTdU,960
@@ -200,7 +197,7 @@ parsl/serialize/facade.py,sha256=SpKGSpI8PQb3hhxuKRJUYoQoq284t5np9ouTpogKmtU,679
200
197
  parsl/serialize/proxystore.py,sha256=o-ha9QAvVhbN8y9S1itk3W0O75eyHYZw2AvB2xu5_Lg,1624
201
198
  parsl/tests/__init__.py,sha256=VTtJzOzz_x6fWNh8IOnsgFqVbdiJShi2AZH21mcmID4,204
202
199
  parsl/tests/callables_helper.py,sha256=ceP1YYsNtrZgKT6MAIvpgdccEjQ_CpFEOnZBGHKGOx0,30
203
- parsl/tests/conftest.py,sha256=DjQDWyGFYWZ9uOMPMdEHFApwRgqzChSVZMdTugbLl6M,14810
200
+ parsl/tests/conftest.py,sha256=CgGvt03_gFH4KazsNsxoWGoClpdbSBkiRgNcn_cjDJk,14962
204
201
  parsl/tests/test_aalst_patterns.py,sha256=lNIxb7nIgh1yX7hR2fr_ck_mxYJxx8ASKK9zHUVqPno,9614
205
202
  parsl/tests/test_callables.py,sha256=97vrIF1_hfDGd81FM1bhR6FemZMWFcALrH6pVHMTCt8,1974
206
203
  parsl/tests/test_curvezmq.py,sha256=yyhlS4vmaZdMitiySoy4l_ih9H1bsPiN-tMdwIh3H20,12431
@@ -214,7 +211,6 @@ parsl/tests/configs/bluewaters.py,sha256=SyCQ99Iih6sYjJVLj5C-AzUqff8vowP113ZC8JH
214
211
  parsl/tests/configs/bridges.py,sha256=WqMa340ZEXRmwgY7oe6QjJnUMO3Y3vAfKngg0XNyVRI,1602
215
212
  parsl/tests/configs/cc_in2p3.py,sha256=4Wj9b46yB24Jh-W7Rji-ALP5GH_UZgN-se5dBk7XSiA,878
216
213
  parsl/tests/configs/comet.py,sha256=Azsm2tLBau5Ox3RcKqqD948Wb_dJvAq7MvBZAfXVXWw,1166
217
- parsl/tests/configs/cooley_htex.py,sha256=f7KtkzwUhNacJpIuTqNS0NKnOcEUWHzzhZM3iVTd-s0,1360
218
214
  parsl/tests/configs/ec2_single_node.py,sha256=rK9AfMf4C84CXMhS5nhgHA_dNG2An7Yiq2yzR4h6MEE,1423
219
215
  parsl/tests/configs/ec2_spot.py,sha256=NKDCKgKxYNOHGVLBl2DFfiUwkR6xQnyhNb_E04TBs28,1253
220
216
  parsl/tests/configs/flux_local.py,sha256=xliKQfB5FFpfNHWYEHoA8FKOTVHFCXVhWNuKQ5VJNTk,182
@@ -243,7 +239,6 @@ parsl/tests/configs/petrelkube.py,sha256=uUxrZrD_cF-_t6ytlRA_MUtw8RQbpW0CmNRbw3m
243
239
  parsl/tests/configs/slurm_local.py,sha256=jvrNIgNUtjp0OE4HONxa7xSpDa9LQNWtav4BXpF_PY4,821
244
240
  parsl/tests/configs/summit.py,sha256=0LbuTVmc8nl2eGiqAayhV0RCx0pg5kUpYhz9LvTFhDo,1378
245
241
  parsl/tests/configs/taskvine_ex.py,sha256=Nsovxtb59q6ta2opGrl7ufWcavYQtzSPrscLmaLYkUU,472
246
- parsl/tests/configs/theta.py,sha256=bkwcFcZYSkJOfLdcPHiAN2BRRGz3nLTaPylvdm3dcJ8,1298
247
242
  parsl/tests/configs/user_opts.py,sha256=fNO1OxISFPP7IyJ_iwf8dQ6EagVr2StXtOWmGnA9MeI,6265
248
243
  parsl/tests/configs/workqueue_ex.py,sha256=c-vKc1MHmU9IyIyZGuxIPKfg93lKBeNnEoWBKjoIRcg,389
249
244
  parsl/tests/integration/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -257,7 +252,6 @@ parsl/tests/integration/test_stress/test_python_threads.py,sha256=-4dW-g69cu6uhS
257
252
  parsl/tests/manual_tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
258
253
  parsl/tests/manual_tests/htex_local.py,sha256=6bbnCPy7t_sJUrvDXiLB97joP8UWGjAdEs4aRP6PkFQ,820
259
254
  parsl/tests/manual_tests/test_basic.py,sha256=3uCS9BqaZmKTNtNfJSsJIg2exlTAdC0Sdc1w9hY9Tvc,4023
260
- parsl/tests/manual_tests/test_fan_in_out_htex_remote.py,sha256=j9GkGwV7sP8ytIz4L7usuVacvBfFyIm-lq9F74KO85o,2422
261
255
  parsl/tests/manual_tests/test_log_filter.py,sha256=jwKclAVuESdlGK_giBuHDkY6ryX6rZB7q01lXT5K0XU,1872
262
256
  parsl/tests/manual_tests/test_memory_limits.py,sha256=XGV_YmIeiGMt1HWYS0Zxo-XkVoKsvHhl11_U3MTg1KI,2677
263
257
  parsl/tests/manual_tests/test_regression_220.py,sha256=Jo2puWt1W0r1rJfaJFgd2ZPgR3i6uOXzrLRcfYDZWDo,931
@@ -272,7 +266,7 @@ parsl/tests/scaling_tests/vineex_local.py,sha256=pPluQtOW7DblCGGCzm_LFbvqwAVq0ua
272
266
  parsl/tests/scaling_tests/wqex_condor.py,sha256=hMo1hK8aj-L36vj0PoByQvL9YQTVrenLn5UHiMXKIkc,547
273
267
  parsl/tests/scaling_tests/wqex_local.py,sha256=C-eYESKhi4V4XZuHLO0lgP5rovEj8LNYGJOHLpUDdOM,545
274
268
  parsl/tests/site_tests/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
275
- parsl/tests/site_tests/site_config_selector.py,sha256=hk8SO0QMLFk9Ef2QxSa4JTnXJxpUks1mLOeDhaquyqI,1980
269
+ parsl/tests/site_tests/site_config_selector.py,sha256=cpToBNdvHZPOxYfiFpGVuydSMlmxfeo27N3VEjRFLgw,1815
276
270
  parsl/tests/site_tests/test_provider.py,sha256=o9pUn_qzQnUSnuh-OQGBec_dNrmOVTD79-i27p_K-N8,2696
277
271
  parsl/tests/site_tests/test_site.py,sha256=03vqVbtZHXH_D4S49vrrgH1-SlHkMI0zlNe7losf7bY,1956
278
272
  parsl/tests/sites/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -286,18 +280,18 @@ parsl/tests/sites/test_worker_info.py,sha256=TKRHUCDUHa_SUHXnnqNp7n1AiN2gpGJrTg_
286
280
  parsl/tests/sites/test_mpi/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
287
281
  parsl/tests/test_bash_apps/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
288
282
  parsl/tests/test_bash_apps/test_apptimeout.py,sha256=ha9O9WnVxeDrUFmqvEcqkk7ymPms1ju1henzkbOVyV8,570
289
- parsl/tests/test_bash_apps/test_basic.py,sha256=HGzJKtETnUxHQwPaTDuZTPMtIX3lSqtidqLxPn2IV8U,2460
290
- parsl/tests/test_bash_apps/test_error_codes.py,sha256=jJ3BwhFpvTGKElKyuiCMWFeBaVeIoWlJkiulWRA2nSE,3961
283
+ parsl/tests/test_bash_apps/test_basic.py,sha256=AD5zBVBSR5a1Z3OIt-U-SGlWi4D1MV9PuBsNrB7PKys,2529
284
+ parsl/tests/test_bash_apps/test_error_codes.py,sha256=zcWwSGk2G3P_8vGyBrif_nAKAKR3_bB3VCeT7ynD3dk,4053
291
285
  parsl/tests/test_bash_apps/test_inputs_default.py,sha256=6UYdi8bqbTS-cx2WB2v5lVA9smTL55Sl3wgkQvlxJ0I,563
292
286
  parsl/tests/test_bash_apps/test_keyword_overlaps.py,sha256=8bfN2qw4uXJsYquppR1lZQrYW834AZc3zjYIIHTfDoE,209
293
- parsl/tests/test_bash_apps/test_kwarg_storage.py,sha256=OMMD3sKSngBSjVCHK9wju0hHzszOqbYuWtscyMuh5_8,720
294
- parsl/tests/test_bash_apps/test_memoize.py,sha256=gFhDNFxdRv8DNtErbwtdEvAph6SDFPaWY0tABZGS4I4,1383
295
- parsl/tests/test_bash_apps/test_memoize_ignore_args.py,sha256=dCDvf_iVuU5aq5gLlOUwcCZTbWtNJ4Uj0Zjx1ZbBOhQ,1257
296
- parsl/tests/test_bash_apps/test_memoize_ignore_args_regr.py,sha256=3cMYYNhSncDshWfbbyMld5z1ZrJHPpxz_0u8DMBgRdA,1341
297
- parsl/tests/test_bash_apps/test_multiline.py,sha256=stpMEv2eopGG-ietxjUtD5gYMOVpwPdLauDizjUfTdA,1082
287
+ parsl/tests/test_bash_apps/test_kwarg_storage.py,sha256=pTz1nu-vUcYBEE96TbXlyL8NBnMi-hImwiv5xpnTfMM,743
288
+ parsl/tests/test_bash_apps/test_memoize.py,sha256=77Cq33yxfDJWH5jLqHRF6Ipy0-a5wwnZwM4wJNAhPbc,1151
289
+ parsl/tests/test_bash_apps/test_memoize_ignore_args.py,sha256=o7AEIIiZVw5ZxlwQVMQLWBQGdXAM32gEXaZgXZpP-Ts,1295
290
+ parsl/tests/test_bash_apps/test_memoize_ignore_args_regr.py,sha256=9t6TRvMl2kNQMGLduayMDXCQsp5eXrrs8NyryOEs00s,1364
291
+ parsl/tests/test_bash_apps/test_multiline.py,sha256=8a0yfqgZz3WyijNmAiJp2ib1UMBMFBlbsrRRF6sda8Y,1105
298
292
  parsl/tests/test_bash_apps/test_pipeline.py,sha256=1kQDD8-Dh5H9SKFcKHzN_mSrdxAV_VYzk8ZnDyna3l8,2444
299
293
  parsl/tests/test_bash_apps/test_std_uri.py,sha256=CvAt8BUhNl2pA5chq9YyhkD6eo2IUH6PjWfe3SQ-YRU,3752
300
- parsl/tests/test_bash_apps/test_stdout.py,sha256=hrzHXLt308qH2Gg_r0-qy5nFBNXI56vCZQBXIIocCPY,3198
294
+ parsl/tests/test_bash_apps/test_stdout.py,sha256=lNBzCJGst0IhKaSl8CM8-mTJ5eaK7hTlZ8gY-M2TDBU,3244
301
295
  parsl/tests/test_channels/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
302
296
  parsl/tests/test_channels/test_dfk_close.py,sha256=n7IF3Ud_vejg0VNRnvEgxCLmwMvPVvLbXvJdw-Mz_lw,628
303
297
  parsl/tests/test_channels/test_large_output.py,sha256=PGeNSW_sN5mR7KF1hVL2CPfktydYxo4oNz1wVQ-ENN0,595
@@ -312,8 +306,8 @@ parsl/tests/test_checkpointing/test_regression_233.py,sha256=jii7BKuygK6KMIGtg4I
312
306
  parsl/tests/test_checkpointing/test_regression_239.py,sha256=xycW1_IwVC55L25oMES_OzJU58TN5BoMvRUZ_xB69jU,2441
313
307
  parsl/tests/test_checkpointing/test_task_exit.py,sha256=KLR2BFm3jyh4i1UMC1jrohTIVPHVXmDS4DWYsjkJV5k,1705
314
308
  parsl/tests/test_docs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
315
- parsl/tests/test_docs/test_from_slides.py,sha256=kJkPUPHmap1FjkQTMh0vPdqxhFLWBezXLYZE5c2KxGA,653
316
- parsl/tests/test_docs/test_kwargs.py,sha256=MvlQye1IH41EKS5iid2ZkS1VrCdeBAwAUNxW3xCuGxI,925
309
+ parsl/tests/test_docs/test_from_slides.py,sha256=KcULKUfmKEkSMzSL1HcyEhAF_OoDScu4Xtvn2rROO4A,698
310
+ parsl/tests/test_docs/test_kwargs.py,sha256=A8kmPIGoM0E9mN8TcAeA93UbX62etEk6p3I18N5nLpk,963
317
311
  parsl/tests/test_docs/test_tutorial_1.py,sha256=2k_owiw39HJcm1i3YGYna9cNnMS0hpnFbEEdhP2xpxU,1437
318
312
  parsl/tests/test_docs/test_workflow1.py,sha256=UrU9axV_cXqhD2GEQ_riJ34icJyNxqJ28eVT2BpG8kQ,976
319
313
  parsl/tests/test_docs/test_workflow2.py,sha256=qeI789Qr9qtSG1DGhyt-Y_3KUcPltQfIyQVeZ73DeX4,1149
@@ -349,7 +343,7 @@ parsl/tests/test_htex/test_worker_failure.py,sha256=Uz-RHI-LK78FMjXUvrUFmo4iYfmp
349
343
  parsl/tests/test_htex/test_zmq_binding.py,sha256=Bq1HHuMxBE_AcaP1VZ-RqE4euCHO__Du05b2UZ5H1RA,3950
350
344
  parsl/tests/test_monitoring/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
351
345
  parsl/tests/test_monitoring/test_app_names.py,sha256=ayyxySGWpKSe9dDw2UeJo1dicxjpALRuLsJfprZV4Eg,2174
352
- parsl/tests/test_monitoring/test_basic.py,sha256=nQERwVH56CjrKc_YSsMxH5UziJDqN2357Vhyd0brbRU,4177
346
+ parsl/tests/test_monitoring/test_basic.py,sha256=VdF6JHfqsEOIMg-ysIAREgygZIjHWNDVLNVQ7jhWxmQ,4592
353
347
  parsl/tests/test_monitoring/test_db_locks.py,sha256=3s3c1xhKo230ZZIJ3f1Ca4U7LcEdXnanOGVXQyNlk2U,2895
354
348
  parsl/tests/test_monitoring/test_fuzz_zmq.py,sha256=--3-pQUvXXbkr8v_BEJoPvVvNly1oXvrD2nJh6yl_0M,3436
355
349
  parsl/tests/test_monitoring/test_htex_init_blocks_vs_monitoring.py,sha256=BAnl80waEaE41pvtpYD-AbNgdfF7QBgVwcCN9IsFPTM,2746
@@ -365,7 +359,6 @@ parsl/tests/test_mpi_apps/test_mpi_scheduler.py,sha256=YdV8A-m67DHk9wxgNpj69wwGE
365
359
  parsl/tests/test_mpi_apps/test_mpiex.py,sha256=mlFdHK3A1B6NsEhxTQQX8lhs9qVza36FMG99vNrBRW4,2021
366
360
  parsl/tests/test_mpi_apps/test_resource_spec.py,sha256=5k6HM2jtb6sa7jetpI-Tl1nPQiN33VLaM7YT10c307E,3756
367
361
  parsl/tests/test_providers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
368
- parsl/tests/test_providers/test_cobalt_deprecation_warning.py,sha256=UN2W6xJxuLx2euPqArORKFEU2VXez9_PYqq-0rZHanQ,391
369
362
  parsl/tests/test_providers/test_kubernetes_provider.py,sha256=AzCHfNz2HJwjP9BfxKH-XPaTHJCLXFErDMlQ_Ir8qRU,3861
370
363
  parsl/tests/test_providers/test_local_provider.py,sha256=R96E1eWgHVkvOQ1Au9wj-gfdWKAqGc-qlygFuxpGFQ8,7160
371
364
  parsl/tests/test_providers/test_pbspro_template.py,sha256=-bi1vags9yyNfpBxtjTqFjzMIg1VVPyf2M958UcXWmA,855
@@ -396,7 +389,7 @@ parsl/tests/test_python_apps/test_memoize_4.py,sha256=CdK_vHW5s-phi5KPqcAQm_BRh8
396
389
  parsl/tests/test_python_apps/test_memoize_bad_id_for_memo.py,sha256=5v25zdU6koXexRTkccj_3sSSdXqHdsU8ZdNrnZ3ONZU,1436
397
390
  parsl/tests/test_python_apps/test_memoize_ignore_args.py,sha256=u-s6r6Nxpvu_x_Uwputi_QIC1tUnzakDF-LSKiEtl9Q,739
398
391
  parsl/tests/test_python_apps/test_memoize_joinapp.py,sha256=htiNmE0PGVA7_pdwRcZ9Wv5Fh6Bph6EdPmywJi8m1oM,435
399
- parsl/tests/test_python_apps/test_outputs.py,sha256=f7pR8XXsq01wNQ_1P_ntM9YDj140Tsm0YEqgOMo4Aho,622
392
+ parsl/tests/test_python_apps/test_outputs.py,sha256=5ai9hz5jJEqZxptuFU-E3TObTuBpU9i9HXm1gt21GDY,645
400
393
  parsl/tests/test_python_apps/test_overview.py,sha256=27LlnGOSDRPtDZ04ZZ31GM7BgoEY_WU6N3LGO-u6JOM,454
401
394
  parsl/tests/test_python_apps/test_pipeline.py,sha256=vl5bDAzwW0qoTIarzdkFv7cAuaI7xJIrvx-S-8tFfc8,848
402
395
  parsl/tests/test_python_apps/test_pluggable_future_resolution.py,sha256=KbGT1XvF2pC7VwhzvNACF-qR3ZRMhoJbRLuz7r12w_w,3361
@@ -410,7 +403,7 @@ parsl/tests/test_regression/test_1480.py,sha256=sJjcX8O0eL_OG7L3skjT3JaIUyFC-kk0
410
403
  parsl/tests/test_regression/test_1606_wait_for_current_tasks.py,sha256=frqPtaiVysevj9nCWoQlAeh9K1jQO5zaahr9ev_Mx_0,1134
411
404
  parsl/tests/test_regression/test_1653.py,sha256=eMXPfTALwQ7k2pGpar-kYed8yKtOj2U2N5ippIvtwGI,564
412
405
  parsl/tests/test_regression/test_221.py,sha256=jOS0EVu_2sbh10eg5hnivPvhNt0my_50vQ7jQYS1Bfg,520
413
- parsl/tests/test_regression/test_226.py,sha256=9EumcLPJzvbD0IUD6-LmPFbf86gaA1Kj8J8J4P4XdTY,1087
406
+ parsl/tests/test_regression/test_226.py,sha256=tVqGAU99RRQqz9KuMgeLVoddot2pRqG2y4daW44RrlE,1110
414
407
  parsl/tests/test_regression/test_2652.py,sha256=R_ZoX7Vgz4H2ionhjm_KWFW-vWt_MlgWV_zdTsT68M0,848
415
408
  parsl/tests/test_regression/test_69a.py,sha256=sRkMT95b7WvFAK1hUy7eNwKnzFNqaX9qESdNmoh0rAo,1902
416
409
  parsl/tests/test_regression/test_854.py,sha256=acFLEciwL0_ZHq6lBtFHRMTEHaPpAf3L4q4_f1LnAAU,1884
@@ -438,18 +431,18 @@ parsl/tests/test_shutdown/test_kill_monitoring.py,sha256=S9CnCziBk3sQMKgccqvNUEB
438
431
  parsl/tests/test_staging/__init__.py,sha256=WZl9EHSkfYiSoE3Gbulcq2ifmn7IFGUkasJIobL5T5A,208
439
432
  parsl/tests/test_staging/staging_provider.py,sha256=6FDpImkWOLgysqM68NbCAoXZciZokI8dmBWRAxnggBk,3242
440
433
  parsl/tests/test_staging/test_1316.py,sha256=eS0e2BDM2vmPNF60aDr35wcuGgDPfXjTjRV6kyBZOQc,2652
441
- parsl/tests/test_staging/test_docs_1.py,sha256=HxFoBYRNkoJoCDIok9QEIDJLICmaF3RCklSWYtG8BEQ,628
434
+ parsl/tests/test_staging/test_docs_1.py,sha256=DlMytEswhogtgo7743PYhg0ixC4n4ye4ibdy_nLhess,658
442
435
  parsl/tests/test_staging/test_docs_2.py,sha256=DrxoUVowwzdQebewfyQ6v-IHVFJfs5qGzWVQ4UVSbkA,464
443
436
  parsl/tests/test_staging/test_elaborate_noop_file.py,sha256=8FHXraFrXDBB2wsKx15AQ6vOgpWwtDL6O6PejOkfdOM,2448
444
437
  parsl/tests/test_staging/test_file.py,sha256=Jsmn-4jaIuMz6ocmACMJmylx-thKky7QGWISkl4Mxjs,924
445
438
  parsl/tests/test_staging/test_file_apps.py,sha256=zTwLAf4R-lFLoqeyz9ZfFeVTs9PL9dmpKjeZEVG7C2s,1540
446
439
  parsl/tests/test_staging/test_file_staging.py,sha256=PTBZhTQJsNtUi38uUZOdIb8yw18-qxMoY9GFodzPYuE,674
447
- parsl/tests/test_staging/test_output_chain_filenames.py,sha256=9Mxfl9oU_x1ZSP8JSxT_t4WFCfDTprLjSeFNMm4vVxA,894
448
- parsl/tests/test_staging/test_staging_ftp.py,sha256=EkRoTcQ00FZGh8lDVYBdKb-pQ-ybW2Sx5vqGltoMGJ4,778
440
+ parsl/tests/test_staging/test_output_chain_filenames.py,sha256=V3ad_nrQB1ff_aufwHczmmFSM7b9QPrIfyD7OKfZciU,932
441
+ parsl/tests/test_staging/test_staging_ftp.py,sha256=MIOla-PiLSWlwP9Xl7WG9ZojY89nm7xF50t34R-wrfE,808
449
442
  parsl/tests/test_staging/test_staging_ftp_in_task.py,sha256=kR2XrGvbvVFDpHg53NnjO04kqEksTJjQAMQwYqBdb2M,884
450
443
  parsl/tests/test_staging/test_staging_globus.py,sha256=ds8nDH5dNbI10FV_GxMHyVaY6GPnuPPzkX9IiqROLF0,2339
451
- parsl/tests/test_staging/test_staging_https.py,sha256=feyXeRl5fRKlJ4KR12c9T5f7JWtc94fIzWWpXDZHB_Y,3307
452
- parsl/tests/test_staging/test_staging_stdout.py,sha256=wk-OaNCeE1A60D8yxlqFw1Tbk6QsK8Ch4E6i55j0BNA,2026
444
+ parsl/tests/test_staging/test_staging_https.py,sha256=Ua79yHlP5bmHke_lOVOp7qIzum1BpBuN1zwqEbdK_lA,3397
445
+ parsl/tests/test_staging/test_staging_stdout.py,sha256=TgQaphLD25CPKZpvHcmSHZa4MVOowafYOOmxCa81phk,2086
453
446
  parsl/tests/test_staging/test_zip_in.py,sha256=BOG5IL1LpZphVDYM9iAebSshSqkILE9nrVhLhYyT5mg,1141
454
447
  parsl/tests/test_staging/test_zip_out.py,sha256=gfPvu8-e2K72sEBX4-WlGlldxVXKhMLc0dsTqYVOM88,3510
455
448
  parsl/tests/test_staging/test_zip_to_zip.py,sha256=Y4YmmQ5qFGyDQv0PfUZnbwi8xNkeW6uS4Q_A3hLDvNQ,1166
@@ -466,13 +459,13 @@ parsl/usage_tracking/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hS
466
459
  parsl/usage_tracking/api.py,sha256=iaCY58Dc5J4UM7_dJzEEs871P1p1HdxBMtNGyVdzc9g,1821
467
460
  parsl/usage_tracking/levels.py,sha256=xbfzYEsd55KiZJ-mzNgPebvOH4rRHum04hROzEf41tU,291
468
461
  parsl/usage_tracking/usage.py,sha256=tcoZ2OUjsQVakG8Uu9_HFuEdzpSHyt4JarSRcLGnSMw,8918
469
- parsl-2024.10.28.data/scripts/exec_parsl_function.py,sha256=RUkJ4JSJAjr7YyRZ58zhMdg8cR5dVV9odUl3AuzNf3k,7802
470
- parsl-2024.10.28.data/scripts/interchange.py,sha256=6jsxpVgtruFtE_0nMHAZYVF1gvoALBCkprEbUb_YQgg,30098
471
- parsl-2024.10.28.data/scripts/parsl_coprocess.py,sha256=zrVjEqQvFOHxsLufPi00xzMONagjVwLZbavPM7bbjK4,5722
472
- parsl-2024.10.28.data/scripts/process_worker_pool.py,sha256=Qed0dgUa6375UgWm5h196V0FBdeTdW6iowG9RYDNG9Y,42920
473
- parsl-2024.10.28.dist-info/LICENSE,sha256=tAkwu8-AdEyGxGoSvJ2gVmQdcicWw3j1ZZueVV74M-E,11357
474
- parsl-2024.10.28.dist-info/METADATA,sha256=QrGvIyy6IrEP8lsBKtOKsOKAvgL3GeIyDUw29t81mAc,4072
475
- parsl-2024.10.28.dist-info/WHEEL,sha256=eOLhNAGa2EW3wWl_TU484h7q1UNgy0JXjjoqKoxAAQc,92
476
- parsl-2024.10.28.dist-info/entry_points.txt,sha256=XqnsWDYoEcLbsMcpnYGKLEnSBmaIe1YoM5YsBdJG2tI,176
477
- parsl-2024.10.28.dist-info/top_level.txt,sha256=PIheYoUFQtF2icLsgOykgU-Cjuwr2Oi6On2jo5RYgRM,6
478
- parsl-2024.10.28.dist-info/RECORD,,
462
+ parsl-2024.11.4.data/scripts/exec_parsl_function.py,sha256=RUkJ4JSJAjr7YyRZ58zhMdg8cR5dVV9odUl3AuzNf3k,7802
463
+ parsl-2024.11.4.data/scripts/interchange.py,sha256=6jsxpVgtruFtE_0nMHAZYVF1gvoALBCkprEbUb_YQgg,30098
464
+ parsl-2024.11.4.data/scripts/parsl_coprocess.py,sha256=zrVjEqQvFOHxsLufPi00xzMONagjVwLZbavPM7bbjK4,5722
465
+ parsl-2024.11.4.data/scripts/process_worker_pool.py,sha256=Qed0dgUa6375UgWm5h196V0FBdeTdW6iowG9RYDNG9Y,42920
466
+ parsl-2024.11.4.dist-info/LICENSE,sha256=tAkwu8-AdEyGxGoSvJ2gVmQdcicWw3j1ZZueVV74M-E,11357
467
+ parsl-2024.11.4.dist-info/METADATA,sha256=OMzbwAtouJevLHjEX5uPoah7Nycou4XcvgHR9Q8PLQE,4071
468
+ parsl-2024.11.4.dist-info/WHEEL,sha256=eOLhNAGa2EW3wWl_TU484h7q1UNgy0JXjjoqKoxAAQc,92
469
+ parsl-2024.11.4.dist-info/entry_points.txt,sha256=XqnsWDYoEcLbsMcpnYGKLEnSBmaIe1YoM5YsBdJG2tI,176
470
+ parsl-2024.11.4.dist-info/top_level.txt,sha256=PIheYoUFQtF2icLsgOykgU-Cjuwr2Oi6On2jo5RYgRM,6
471
+ parsl-2024.11.4.dist-info/RECORD,,
File without changes
@@ -1,236 +0,0 @@
1
- import logging
2
- import os
3
- import time
4
- import warnings
5
-
6
- from parsl.channels import LocalChannel
7
- from parsl.jobs.states import JobState, JobStatus
8
- from parsl.launchers import AprunLauncher
9
- from parsl.providers.cluster_provider import ClusterProvider
10
- from parsl.providers.cobalt.template import template_string
11
- from parsl.providers.errors import ScaleOutFailed
12
- from parsl.utils import RepresentationMixin, wtime_to_minutes
13
-
14
- logger = logging.getLogger(__name__)
15
-
16
- translate_table = {
17
- 'QUEUED': JobState.PENDING,
18
- 'STARTING': JobState.PENDING,
19
- 'RUNNING': JobState.RUNNING,
20
- 'EXITING': JobState.COMPLETED,
21
- 'KILLING': JobState.COMPLETED
22
- }
23
-
24
-
25
- class CobaltProvider(ClusterProvider, RepresentationMixin):
26
- """ Cobalt Execution Provider
27
-
28
- WARNING: CobaltProvider is deprecated and will be removed by 2024.04
29
-
30
- This provider uses cobalt to submit (qsub), obtain the status of (qstat), and cancel (qdel)
31
- jobs. Theo script to be used is created from a template file in this
32
- same module.
33
-
34
- Parameters
35
- ----------
36
- channel : Channel
37
- Channel for accessing this provider. Possible channels include
38
- :class:`~parsl.channels.LocalChannel` (the default),
39
- :class:`~parsl.channels.SSHChannel`, or
40
- :class:`~parsl.channels.SSHInteractiveLoginChannel`.
41
- nodes_per_block : int
42
- Nodes to provision per block.
43
- min_blocks : int
44
- Minimum number of blocks to maintain.
45
- max_blocks : int
46
- Maximum number of blocks to maintain.
47
- walltime : str
48
- Walltime requested per block in HH:MM:SS.
49
- account : str
50
- Account that the job will be charged against.
51
- queue : str
52
- Torque queue to request blocks from.
53
- scheduler_options : str
54
- String to prepend to the submit script to the scheduler.
55
- worker_init : str
56
- Command to be run before starting a worker, such as 'module load Anaconda; source activate env'.
57
- launcher : Launcher
58
- Launcher for this provider. Possible launchers include
59
- :class:`~parsl.launchers.AprunLauncher` (the default) or,
60
- :class:`~parsl.launchers.SingleNodeLauncher`
61
- """
62
- def __init__(self,
63
- channel=LocalChannel(),
64
- nodes_per_block=1,
65
- init_blocks=0,
66
- min_blocks=0,
67
- max_blocks=1,
68
- parallelism=1,
69
- walltime="00:10:00",
70
- account=None,
71
- queue=None,
72
- scheduler_options='',
73
- worker_init='',
74
- launcher=AprunLauncher(),
75
- cmd_timeout=10):
76
- label = 'cobalt'
77
- super().__init__(label,
78
- channel=channel,
79
- nodes_per_block=nodes_per_block,
80
- init_blocks=init_blocks,
81
- min_blocks=min_blocks,
82
- max_blocks=max_blocks,
83
- parallelism=parallelism,
84
- walltime=walltime,
85
- launcher=launcher,
86
- cmd_timeout=cmd_timeout)
87
-
88
- self.account = account
89
- self.queue = queue
90
- self.scheduler_options = scheduler_options
91
- self.worker_init = worker_init
92
- warnings.warn("CobaltProvider is deprecated; This will be removed after 2024-04",
93
- DeprecationWarning,
94
- stacklevel=2)
95
-
96
- def _status(self):
97
- """Returns the status list for a list of job_ids
98
-
99
- Args:
100
- self
101
-
102
- Returns:
103
- [status...] : Status list of all jobs
104
- """
105
-
106
- jobs_missing = list(self.resources.keys())
107
-
108
- retcode, stdout, stderr = self.execute_wait("qstat -u $USER")
109
-
110
- # Execute_wait failed. Do no update.
111
- if retcode != 0:
112
- return
113
-
114
- for line in stdout.split('\n'):
115
- if line.startswith('='):
116
- continue
117
-
118
- parts = line.upper().split()
119
- if parts and parts[0] != 'JOBID':
120
- job_id = parts[0]
121
-
122
- if job_id not in self.resources:
123
- continue
124
-
125
- status = translate_table.get(parts[4], JobState.UNKNOWN)
126
-
127
- self.resources[job_id]['status'] = JobStatus(status)
128
- jobs_missing.remove(job_id)
129
-
130
- # squeue does not report on jobs that are not running. So we are filling in the
131
- # blanks for missing jobs, we might lose some information about why the jobs failed.
132
- for missing_job in jobs_missing:
133
- self.resources[missing_job]['status'] = JobStatus(JobState.COMPLETED)
134
-
135
- def submit(self, command, tasks_per_node, job_name="parsl.cobalt"):
136
- """ Submits the command onto an Local Resource Manager job of parallel elements.
137
- Submit returns an ID that corresponds to the task that was just submitted.
138
-
139
- If tasks_per_node < 1 : ! This is illegal. tasks_per_node should be integer
140
-
141
- If tasks_per_node == 1:
142
- A single node is provisioned
143
-
144
- If tasks_per_node > 1 :
145
- tasks_per_node number of nodes are provisioned.
146
-
147
- Args:
148
- - command :(String) Commandline invocation to be made on the remote side.
149
- - tasks_per_node (int) : command invocations to be launched per node
150
-
151
- Kwargs:
152
- - job_name (String): Name for job, must be unique
153
-
154
- Returns:
155
- - None: At capacity, cannot provision more
156
- - job_id: (string) Identifier for the job
157
-
158
- """
159
-
160
- account_opt = '-A {}'.format(self.account) if self.account is not None else ''
161
-
162
- job_name = "parsl.{0}.{1}".format(job_name, time.time())
163
-
164
- script_path = "{0}/{1}.submit".format(self.script_dir, job_name)
165
- script_path = os.path.abspath(script_path)
166
-
167
- job_config = {}
168
- job_config["scheduler_options"] = self.scheduler_options
169
- job_config["worker_init"] = self.worker_init
170
-
171
- logger.debug("Requesting nodes_per_block:%s tasks_per_node:%s",
172
- self.nodes_per_block, tasks_per_node)
173
-
174
- # Wrap the command
175
- job_config["user_script"] = self.launcher(command, tasks_per_node, self.nodes_per_block)
176
-
177
- queue_opt = '-q {}'.format(self.queue) if self.queue is not None else ''
178
-
179
- logger.debug("Writing submit script")
180
- self._write_submit_script(template_string, script_path, job_name, job_config)
181
-
182
- channel_script_path = self.channel.push_file(script_path, self.channel.script_dir)
183
-
184
- command = 'qsub -n {0} {1} -t {2} {3} {4}'.format(
185
- self.nodes_per_block, queue_opt, wtime_to_minutes(self.walltime), account_opt, channel_script_path)
186
- logger.debug("Executing {}".format(command))
187
-
188
- retcode, stdout, stderr = self.execute_wait(command)
189
-
190
- # TODO : FIX this block
191
- if retcode != 0:
192
- logger.error("Failed command: {0}".format(command))
193
- logger.error("Launch failed stdout:\n{0} \nstderr:{1}\n".format(stdout, stderr))
194
-
195
- logger.debug("Retcode:%s STDOUT:%s STDERR:%s", retcode, stdout.strip(), stderr.strip())
196
-
197
- job_id = None
198
-
199
- if retcode == 0:
200
- # We should be getting only one line back
201
- job_id = stdout.strip()
202
- self.resources[job_id] = {'job_id': job_id, 'status': JobStatus(JobState.PENDING)}
203
- else:
204
- logger.error("Submit command failed: {0}".format(stderr))
205
- raise ScaleOutFailed(self.__class__, "Request to submit job to local scheduler failed")
206
-
207
- logger.debug("Returning job id : {0}".format(job_id))
208
- return job_id
209
-
210
- def cancel(self, job_ids):
211
- """ Cancels the jobs specified by a list of job ids
212
-
213
- Args:
214
- job_ids : [<job_id> ...]
215
-
216
- Returns :
217
- [True/False...] : If the cancel operation fails the entire list will be False.
218
- """
219
-
220
- job_id_list = ' '.join(job_ids)
221
- retcode, stdout, stderr = self.execute_wait("qdel {0}".format(job_id_list))
222
- rets = None
223
- if retcode == 0:
224
- for jid in job_ids:
225
- # ???
226
- # self.resources[jid]['status'] = translate_table['KILLING'] # Setting state to cancelled
227
- self.resources[jid]['status'] = JobStatus(JobState.COMPLETED)
228
- rets = [True for i in job_ids]
229
- else:
230
- rets = [False for i in job_ids]
231
-
232
- return rets
233
-
234
- @property
235
- def status_polling_interval(self):
236
- return 60
@@ -1,17 +0,0 @@
1
- template_string = '''#!/bin/bash -el
2
- ${scheduler_options}
3
-
4
- ${worker_init}
5
-
6
- echo "Starting Cobalt job script"
7
-
8
- echo "----Cobalt Nodefile: -----"
9
- cat $$COBALT_NODEFILE
10
- echo "--------------------------"
11
-
12
- export JOBNAME="${jobname}"
13
-
14
- $user_script
15
-
16
- echo "End of Cobalt job"
17
- '''
@@ -1,37 +0,0 @@
1
- # UNTESTED
2
-
3
- from parsl.config import Config
4
- from parsl.executors import HighThroughputExecutor
5
- from parsl.launchers import MpiRunLauncher
6
- from parsl.providers import CobaltProvider
7
-
8
- # If you are a developer running tests, make sure to update parsl/tests/configs/user_opts.py
9
- # If you are a user copying-and-pasting this as an example, make sure to either
10
- # 1) create a local `user_opts.py`, or
11
- # 2) delete the user_opts import below and replace all appearances of `user_opts` with the literal value
12
- # (i.e., user_opts['swan']['username'] -> 'your_username')
13
- from .user_opts import user_opts
14
-
15
- config = Config(
16
- executors=[
17
- HighThroughputExecutor(
18
- label="cooley_htex",
19
- worker_debug=False,
20
- cores_per_worker=1,
21
- encrypted=True,
22
- provider=CobaltProvider(
23
- queue='debug',
24
- account=user_opts['cooley']['account'],
25
- launcher=MpiRunLauncher(), # UNTESTED COMPONENT
26
- scheduler_options=user_opts['cooley']['scheduler_options'],
27
- worker_init=user_opts['cooley']['worker_init'],
28
- init_blocks=1,
29
- max_blocks=1,
30
- min_blocks=1,
31
- nodes_per_block=4,
32
- cmd_timeout=60,
33
- walltime='00:10:00',
34
- ),
35
- )
36
- ]
37
- )
@@ -1,37 +0,0 @@
1
- from parsl.config import Config
2
- from parsl.executors import HighThroughputExecutor
3
- from parsl.launchers import AprunLauncher
4
- from parsl.providers import CobaltProvider
5
-
6
- from .user_opts import user_opts
7
-
8
-
9
- def fresh_config():
10
- return Config(
11
- executors=[
12
- HighThroughputExecutor(
13
- label='theta_local_htex_multinode',
14
- max_workers_per_node=1,
15
- encrypted=True,
16
- provider=CobaltProvider(
17
- queue=user_opts['theta']['queue'],
18
- account=user_opts['theta']['account'],
19
- launcher=AprunLauncher(overrides="-d 64"),
20
- walltime='00:10:00',
21
- nodes_per_block=2,
22
- init_blocks=1,
23
- max_blocks=1,
24
- # string to prepend to #COBALT blocks in the submit
25
- # script to the scheduler eg: '#COBALT -t 50'
26
- scheduler_options='',
27
- # Command to be run before starting a worker, such as:
28
- # 'module load Anaconda; source activate parsl_env'.
29
- worker_init=user_opts['theta']['worker_init'],
30
- cmd_timeout=120,
31
- ),
32
- )
33
- ],
34
- )
35
-
36
-
37
- config = fresh_config()
@@ -1,88 +0,0 @@
1
- import logging
2
-
3
- import parsl
4
- from parsl.app.app import python_app
5
- from parsl.config import Config
6
- from parsl.executors import HighThroughputExecutor
7
- from parsl.launchers import AprunLauncher
8
- from parsl.monitoring.monitoring import MonitoringHub
9
- from parsl.providers import CobaltProvider
10
-
11
-
12
- def local_setup():
13
- threads_config = Config(
14
- executors=[
15
- HighThroughputExecutor(
16
- label="theta_htex",
17
- # worker_debug=True,
18
- cores_per_worker=4,
19
- encrypted=True,
20
- provider=CobaltProvider(
21
- queue='debug-flat-quad',
22
- account='CSC249ADCD01',
23
- launcher=AprunLauncher(overrides="-d 64"),
24
- worker_init='source activate parsl-issues',
25
- init_blocks=1,
26
- max_blocks=1,
27
- min_blocks=1,
28
- nodes_per_block=4,
29
- cmd_timeout=60,
30
- walltime='00:10:00',
31
- ),
32
- )
33
- ],
34
- monitoring=MonitoringHub(
35
- hub_port=55055,
36
- logging_level=logging.DEBUG,
37
- resource_monitoring_interval=10),
38
- strategy='none')
39
- parsl.load(threads_config)
40
-
41
-
42
- def local_teardown():
43
- parsl.clear()
44
-
45
-
46
- @python_app
47
- def inc(x):
48
- import time
49
- start = time.time()
50
- sleep_duration = 30.0
51
- while True:
52
- x += 1
53
- end = time.time()
54
- if end - start >= sleep_duration:
55
- break
56
- return x
57
-
58
-
59
- @python_app
60
- def add_inc(inputs=[]):
61
- import time
62
- start = time.time()
63
- sleep_duration = 30.0
64
- res = sum(inputs)
65
- while True:
66
- res += 1
67
- end = time.time()
68
- if end - start >= sleep_duration:
69
- break
70
- return res
71
-
72
-
73
- if __name__ == "__main__":
74
-
75
- total = 200
76
- half = int(total / 2)
77
- one_third = int(total / 3)
78
- two_third = int(total / 3 * 2)
79
- futures_1 = [inc(i) for i in range(total)]
80
- futures_2 = [add_inc(inputs=futures_1[0:half]),
81
- add_inc(inputs=futures_1[half:total])]
82
- futures_3 = [inc(futures_2[0]) for _ in range(half)] + [inc(futures_2[1]) for _ in range(half)]
83
- futures_4 = [add_inc(inputs=futures_3[0:one_third]),
84
- add_inc(inputs=futures_3[one_third:two_third]),
85
- add_inc(inputs=futures_3[two_third:total])]
86
-
87
- print([f.result() for f in futures_4])
88
- print("Done")