diff --git a/docs/userguide/configuration/examples.rst b/docs/userguide/configuration/examples.rst index 7e9b7ae9eb..c874998dfc 100644 --- a/docs/userguide/configuration/examples.rst +++ b/docs/userguide/configuration/examples.rst @@ -250,6 +250,30 @@ running on a login node and uses the `parsl.providers.SlurmProvider` to interfac .. literalinclude:: ../../../parsl/configs/frontera.py +Globus Compute (Multisite) +-------------------------- + +Globus Compute is a distributed Function as a Service (FaaS) platform that enables secure +execution of functions on heterogeneous remote computers, from laptops to campus clusters, clouds, and supercomputers. +Functions are executed on `Globus Compute Endpoints `_ +that can be `configured `_ +for most clusters/HPC systems. The example configuration below allows task submission +to Globus Compute's hosted tutorial endpoint. + +.. literalinclude:: ../../../parsl/configs/gc_tutorial.py + +.. note:: The Globus Compute tutorial endpoint runs Python 3.11. We recommend + using the same Python environment to avoid potential serialization errors + caused by environment mismatches. Globus Compute will raise a warning if any + environment version mismatches are detected although minor version differences + may not cause faults (eg, Python3.11.7 vs Python3.11.8) + +The configuration below specifies two remote endpoints, one at `SDSC's Expanse Supercomputer `_ +and the other at `NERSC's Perlmutter Supercomputer `_. + +.. literalinclude:: ../../../parsl/configs/gc_multisite.py + + Kubernetes Clusters ------------------- diff --git a/parsl/configs/gc_multisite.py b/parsl/configs/gc_multisite.py new file mode 100644 index 0000000000..67862f9d0d --- /dev/null +++ b/parsl/configs/gc_multisite.py @@ -0,0 +1,27 @@ +from globus_compute_sdk import Executor + +from parsl.config import Config +from parsl.executors import GlobusComputeExecutor +from parsl.usage_tracking.levels import LEVEL_1 + +# Please start your own endpoint on perlmutter following instructions below to use this config: +# https://globus-compute.readthedocs.io/en/stable/endpoints/endpoint_examples.html#perlmutter-nersc +perlmutter_endpoint = 'YOUR_PERLMUTTER_ENDPOINT_UUID' + +# Please start your own endpoint on expanse following instructions below to use this config: +# https://globus-compute.readthedocs.io/en/stable/endpoints/endpoint_examples.html#expanse-sdsc +expanse_endpoint = 'YOUR_EXPANSE_ENDPOINT_UUID' + +config = Config( + executors=[ + GlobusComputeExecutor( + executor=Executor(endpoint_id=perlmutter_endpoint), + label="Perlmutter", + ), + GlobusComputeExecutor( + executor=Executor(endpoint_id=expanse_endpoint), + label="Expanse", + ), + ], + usage_tracking=LEVEL_1, +) diff --git a/parsl/configs/gc_tutorial.py b/parsl/configs/gc_tutorial.py new file mode 100644 index 0000000000..f3372a0c2b --- /dev/null +++ b/parsl/configs/gc_tutorial.py @@ -0,0 +1,18 @@ +from globus_compute_sdk import Executor + +from parsl.config import Config +from parsl.executors import GlobusComputeExecutor +from parsl.usage_tracking.levels import LEVEL_1 + +# Public tutorial endpoint +tutorial_endpoint = '4b116d3c-1703-4f8f-9f6f-39921e5864df' + +config = Config( + executors=[ + GlobusComputeExecutor( + executor=Executor(endpoint_id=tutorial_endpoint), + label="Tutorial_Endpoint_py3.11", + ) + ], + usage_tracking=LEVEL_1, +)