-
Notifications
You must be signed in to change notification settings - Fork 195
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Support for GlobusComputeExecutor #3607
base: master
Are you sure you want to change the base?
Conversation
Aside from a lack of CI test, my main concern (from seeing people implement this before) is what goes on with different Parsl versions: there's one version in the endpoint (pinned to a specific version by Globus Compute) and another version on the submit side, and having different Parsl versions like that is out of scope for Parsl. This might be a case of documenting what users should expect to work or not work, or might be something deeper. At the very least we should be expecting them to be able to use the same combination of versions as used in CI. |
config.addinivalue_line( | ||
'markers', | ||
'globus_compute: Marks tests that require a valid globus_compute target' | ||
) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Do any tests use this marker?
endpoint_id = os.environ.get("GLOBUS_COMPUTE_ENDPOINT", | ||
"4b116d3c-1703-4f8f-9f6f-39921e5864df") |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
While anyone could potentially run tests against our tutorial EP, I don't think we should suggest doing so.
def __init__( | ||
self, | ||
endpoint_id: Optional[UUID_LIKE_T] = None, | ||
task_group_id: Optional[UUID_LIKE_T] = None, | ||
resource_specification: Optional[dict[str, Any]] = None, | ||
user_endpoint_config: Optional[dict[str, Any]] = None, | ||
label: str = "GlobusComputeExecutor", | ||
batch_size: int = 128, | ||
amqp_port: Optional[int] = None, | ||
**kwargs, | ||
): |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Consider adding the client
parameter
8273cc6
to
3ed482e
Compare
3ed482e
to
495d009
Compare
Description
This PR adds a new
GlobusComputeExecutor
that wraps the Globus Compute SDK to allow Parsl to execute tasks via Globus Compute. This mechanism supports remote execution of tasks similar to the functionality thatparsl.channels
enabled and is a potential replacement.Since
GlobusCompute
often runs on remote machines that do not have a shared-filesystem with the parsl runtime, tests have been updated with a newshared_fs
andstaging_required
pytest markers. I have not added tests and CI actions to enable executing these tests against our CI system, but you can run tests locally with these steps:globus-compute-sdk
withpip install .[globus-compute]
globus-compute-endpoint start <endpoint_name>
export GLOBUS_COMPUTE_ENDPOINT=<endpoint_id>
pytest -v -k "not shared_fs" --config parsl/tests/configs/globus_compute.py parsl/tests/
Changed Behaviour
N/A
Fixes
Fixes # (issue)
Type of change
Choose which options apply, and delete the ones which do not apply.