Repository navigation
Project native image ABI without discarding registry slice context - #1084
Merged
Merged
Conversation
trissim
marked this pull request as ready for review
October 6, 2026 22:31
Retain image context for existing registered contract wrappers, and derive native callable arguments through the shared ABI owner. Refs #1083.
trissim
force-pushed
the
fix/flexible-native-image-abi-20261006
branch
from
October 6, 2026 22:39
5ed8cfd to
b98c14a
Compare
trissim
changed the base branch from
fix/native-payload-domain-composition-20261006
to
main
October 6, 2026 22:39
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Native CuPy processing functions currently receive metadata carriers instead of their declared
cupy.ndarrayargument in a mixed microscopy pipeline. They execute through ArrayBridge's native wrapper and never enter the OpenHCS registry executor that projects the raw ABI. The shared PURE2D/FLEXIBLE main-flow hook was retaining every carrier regardless of who actually owned contextual slicing.Derive that distinction from the existing
raw_processing_functiondeclaration: registry contract wrappers retain carrier context; other targets delegate to the existing nominal ABI projection, which already respects explicit carrier annotations and runtime adapters. Authored slice controls remain owned by the actual executing wrapper. No new selector, adapter, registry, or per-callable validation bypass.This ABI repair is independent of the pending #1080 dependency release and targets current main. The production diff changes only the shared main-flow argument hook; it is byte-identical to the qualified owner at
5ed8cfdd0. One pre-existing fixture's eager-output type assertion is replaced with the existing metadata-carrier capability; pixel and source-plane provenance checks remain intact.Validation: 112 tests pass across registry runtime payloads, callable ABI preparation, and CellProfiler function-contract execution. Native-array full-stack and slice controls, explicitly carrier-typed functions, registered contextual slicing and adapter behavior remain covered.
Combined with the separately qualified #1080 composition repair, the real GPU receiving route completes CPU Gaussian smoothing → GPU sharpening → skipped CPU invocation → GPU percentile normalization → CPU smoothing on saved 3D-monolayer microscopy channels, including raw/unit-interval named inputs, mixed device placement and masks. Output matches direct execution of the same production processing functions exactly; masks, checkpoint cache identity and disk roundtrip pass. At source
5ed8cfdd0the canonical conversion census records 10 bulk transfers/2,621,440 bytes; GPU→GPU, skipped invocation, checkpoint and disk add none. This is a correctness/conversion census, not a speedup claim. Original684f140fails at native GPU ABI; pre-P5df6fd74also fails earlier at mask projection, so failed prefixes are not presented as comparable full runtimes.Local reproducible receiving script:
/home/ts/.local/state/openhcs-maintenance/20261006/p5-mixed-scientific-pipeline-receiving.py; complete current receipt/profile/oracle outputs:p5-mixed-scientific-native-abi-v2/beside it. Existing GPU venv, CUDA libraries, original scientific input hashes and production owner hashes are preserved. Promoted colour-image execution remains a separate capability gap because this environment lacks CuCIM and the selected built-in functions require 3D grayscale stacks.Separate remaining cost identified: input bundle data and mask accesses each compose the same members, causing duplicate CPU-member uploads. This repair introduces no lifetime cache or unrelated composition changes.
Closes #1083