Skip to content
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

Investigate output transform streaming #20

Open
tbirdso opened this issue Nov 15, 2023 · 0 comments
Open

Investigate output transform streaming #20

tbirdso opened this issue Nov 15, 2023 · 0 comments

Comments

@tbirdso
Copy link
Collaborator

tbirdso commented Nov 15, 2023

Background

itk-dreg.reduce_dfield currently implements a method to reduce multiple in-memory bounded transforms to an in-memory output displacement field. Depending on the input transform types and output grid subdivision, the output displacement field could grow prohibitively large.

Feature Request

Explore methods to reduce memory requirements for transform reduction.

  1. To reduce memory requirements for the output displacement field, consider streaming image subregions to cloud storage with ITKIOOMEZarrNGFF. If all input transforms are available in memory on a single worker, the worker could sample successive subregions of the output displacement field image and then offload those subregions to the cloud before continuing with the next subregion. Likely requires advance knowledge of the output displacement field size for cloud allocation with OME-Zarr / tensorstore. Could be implemented by extending ReduceResultsMethod for use in existing register_images scheduling infrastructure.
  2. To reduce memory requirements for the input transforms, we could similarly map/reduce reduction tasks such that a worker is only responsible for sampling a subregion involving the transforms from a fixed image block and its overlapping neighbors, rather than all possible transform inputs. Each worker may then be responsible for streaming a displacement field subimage to the cloud as in (1) above. May require extending the register_images scheduling infrastructure with another scheduling method to map transform input processing among workers.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant