Skip to content

Conversation

@khk-globus
Copy link
Contributor

Description

Parsl has learned the ability to dynamically import an execute_task() function. Use this capability to tell Parsl to use the installed endpoint's execute_task(). This enables specification of the allowed serializers, per task. They are currently dynamically specified per task based on the engine configuration.

The core change is "small" but with big impact in the tests. The substantive changes are:

  • base.py - submit() via task_deserializers, args, and kwargs

  • helper.py - update execute_task() to instantiate a ComputeSerializer(),
    rather than attempting to marshal an instance via the arguments. Relates to
    task_deserializers in base.py

    • Update logging to include a task_id prefix to each log record -- hopefully
      helpful to users (or us!) when tracking down issues.
  • globus_compute.py - _submit() with context and submit_payload;
    requirements to use Parsl's dynamic import functionality

  • globus_mpi.py - no need to duplicate parent's _submit()

[sc-35486]

Type of change

  • New feature (non-breaking change that adds functionality)

@khk-globus khk-globus added the no-news-is-good-news This change does not require a news file label Oct 16, 2025
Parsl has recently learned how to dynamically import a task-specific
`execute_task()` function, which Compute will soon utilize.

[sc-35486]
Parsl has learned the ability to dynamically import an `execute_task()`
function.  Use this capability to tell Parsl to use the installed endpoint's
`execute_task()`.  This enables specification of the allowed serializers, per
task.  They are currently dynamically specified per task based on the engine
configuration.

The core change is "small" but with big impact in the tests.  The substantive
changes are:

- `base.py` - `submit()` via `task_deserializers`, `args`, and `kwargs`

- `helper.py` - update `execute_task()` to instantiate a `ComputeSerializer()`,
  rather than attempting to marshal an instance via the arguments.  Relates to
  `task_deserializers` in `base.py`

  - Update logging to include a task_id prefix to each log record -- hopefully
    helpful to users (or us!) when tracking down issues.

- `globus_compute.py` - `_submit()` with `context` and `submit_payload`;
  requirements to use Parsl's dynamic import functionality

- `globus_mpi.py` - no need to duplicate parent's `_submit()`

[sc-35486]
@khk-globus khk-globus force-pushed the sc-35486/custom_execute_task branch from f3a140c to 7eada59 Compare November 5, 2025 20:38
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

no-news-is-good-news This change does not require a news file

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants