From 935d248436f4c26efa3fa1a956701c46fabc3ef3 Mon Sep 17 00:00:00 2001 From: Tristan Simas Date: Mon, 28 Sep 2026 23:55:45 -0400 Subject: [PATCH 1/5] runtime: retain outcome export paths from workers Derive contract-owned export paths before worker cleanup, retain those lightweight paths with execution results, and let the ZMQ server observe them even when outcome-only retention releases full parent values. Refs #145. --- openhcs/core/orchestrator/execution_result.py | 2 ++ openhcs/core/orchestrator/worker_execution.py | 28 +++++++++++++++---- openhcs/core/runtime_exports.py | 17 +++++++++++ .../function_artifact_materialization.py | 21 ++++++++++++++ openhcs/runtime/zmq_execution_server.py | 16 +++++++++-- tests/unit/test_compiled_execution.py | 1 + tests/unit/test_zmq_execution_server.py | 27 ++++++++++++++++-- tests/unit/test_zmq_runtime_outcome_export.py | 8 +++++- 8 files changed, 108 insertions(+), 12 deletions(-) diff --git a/openhcs/core/orchestrator/execution_result.py b/openhcs/core/orchestrator/execution_result.py index c516da01b6..b5c4af3471 100644 --- a/openhcs/core/orchestrator/execution_result.py +++ b/openhcs/core/orchestrator/execution_result.py @@ -8,6 +8,7 @@ import copyreg from dataclasses import dataclass, field from enum import Enum +from pathlib import Path from types import MappingProxyType from typing import Mapping, Optional @@ -56,6 +57,7 @@ class RuntimeContextObservation: context_key: str records: tuple[StoredRuntimeValue, ...] + runtime_export_paths: tuple[Path, ...] = field(default_factory=tuple) @dataclass(frozen=True) diff --git a/openhcs/core/orchestrator/worker_execution.py b/openhcs/core/orchestrator/worker_execution.py index f1a171a088..2c2beaff03 100644 --- a/openhcs/core/orchestrator/worker_execution.py +++ b/openhcs/core/orchestrator/worker_execution.py @@ -52,6 +52,7 @@ from openhcs.core.steps.abstract import AbstractStep, StepExecutionObservation from openhcs.core.steps.function_artifact_materialization import ( observed_materialized_artifact_locations_by_address, + observed_runtime_export_artifact_output_paths, ) from openhcs.utils.environment import OpenHCSProcessEnvironment @@ -796,22 +797,39 @@ def _execute_axis_with_sequential_combinations( lane_context, cancellation=cancellation, ) + observed_records = runtime_store.observed_values_after( + execution_observation_cursor + ) + runtime_export_paths = tuple( + dict.fromkeys( + path + for step_plan in frozen_context.step_plans.values() + if step_plan.owns_runtime_outputs + for path in observed_runtime_export_artifact_output_paths( + step_plan, + frozen_context, + observed_records, + ) + ) + ) finally: # This cache is context-local even when lanes share a process. # Runtime observations remain owned by the value store below. frozen_context.release_execution_image_cache() if release_axis_resources: _release_runtime_resources((frozen_context,), owner=f"axis {axis_id}") - if runtime_observation_mode.collects_records: + retained_records = ( + observed_records if runtime_observation_mode.collects_records else () + ) + if retained_records or runtime_export_paths: runtime_observations.append( RuntimeContextObservation( context_key=context_key, - records=runtime_store.observed_values_after( - execution_observation_cursor - ), + records=retained_records, + runtime_export_paths=runtime_export_paths, ) ) - elif runtime_observation_mode.releases_worker_records: + if runtime_observation_mode.releases_worker_records: frozen_context.runtime_value_store.clear() if not result.is_success(): diff --git a/openhcs/core/runtime_exports.py b/openhcs/core/runtime_exports.py index 98d703391b..1cc9d50317 100644 --- a/openhcs/core/runtime_exports.py +++ b/openhcs/core/runtime_exports.py @@ -29,6 +29,7 @@ if TYPE_CHECKING: from openhcs.core.context.processing_context import ProcessingContext + from openhcs.core.orchestrator.execution_result import RuntimeExecutionObservation @dataclass(frozen=True, slots=True) @@ -132,6 +133,22 @@ def from_execution_contexts( ) ) + @classmethod + def from_runtime_observations( + cls, + observations: Sequence[RuntimeExecutionObservation], + ) -> RuntimeExportObservation: + """Build exports from worker-projected paths without retaining values.""" + + return cls.from_output_paths( + tuple( + path + for observation in observations + for context in observation.contexts + for path in context.runtime_export_paths + ) + ) + @classmethod def from_output_root( cls, diff --git a/openhcs/core/steps/function_artifact_materialization.py b/openhcs/core/steps/function_artifact_materialization.py index 6bfc6e5b63..71e1ddf9b0 100644 --- a/openhcs/core/steps/function_artifact_materialization.py +++ b/openhcs/core/steps/function_artifact_materialization.py @@ -1322,6 +1322,27 @@ def observed_materialized_artifact_output_paths( ) +def observed_runtime_export_artifact_output_paths( + plan: CompiledStepPlan, + context: "ProcessingContext", + records: tuple[StoredRuntimeValue, ...], +) -> tuple[Path, ...]: + """Derive exact pipeline-declared exports from worker-observed records.""" + + if not plan.runtime_artifact_materialization.has_persistent_target: + return () + return tuple( + Path(output.path) + for materialization in runtime_artifact_materializations_from_records( + plan, + context, + records, + ) + if materialization.spec.participates_in_runtime_export_observation() + for output in materialization.outputs(plan, context) + ) + + def observed_materialized_artifact_locations_by_address( plan: CompiledStepPlan, context: "ProcessingContext", diff --git a/openhcs/runtime/zmq_execution_server.py b/openhcs/runtime/zmq_execution_server.py index 9b60545384..6f0f658204 100644 --- a/openhcs/runtime/zmq_execution_server.py +++ b/openhcs/runtime/zmq_execution_server.py @@ -752,15 +752,25 @@ def _export_runtime_observation( request_context.auxiliary_params.runtime_observation_export_scope is ZMQRuntimeObservationExportScope.OUTCOMES ): + observed_exports = RuntimeExportObservation.from_runtime_observations( + tuple( + result.runtime_observation for result in execution_results.values() + ) + ) + if execution_bundle.requires_parent_runtime_observation: + parent_exports = RuntimeExportObservation.from_execution_contexts( + execution_bundle.runtime_contexts + ) + observed_exports = RuntimeExportObservation.from_output_paths( + (*observed_exports.output_files, *parent_exports.output_files) + ) export = ZMQRuntimeExecutionOutcomeExport.from_execution( compiled_axis_ids=execution_bundle.runtime_contexts, execution_results=execution_results, output_roots=output_roots, server_environment=self._server_environment, execution_id=request_context.execution_id, - exports=RuntimeExportObservation.from_execution_contexts( - execution_bundle.runtime_contexts - ), + exports=observed_exports, ) else: export = ZMQRuntimeExecutionObservationExport.from_execution( diff --git a/tests/unit/test_compiled_execution.py b/tests/unit/test_compiled_execution.py index f856a6a244..e795860a76 100644 --- a/tests/unit/test_compiled_execution.py +++ b/tests/unit/test_compiled_execution.py @@ -356,6 +356,7 @@ def execute_current_run( 0: SimpleNamespace( execution_scope=FunctionStepExecutionScope.AXIS, device_assignment=FrameworkDeviceAssignment(), + owns_runtime_outputs=False, ) }, ) diff --git a/tests/unit/test_zmq_execution_server.py b/tests/unit/test_zmq_execution_server.py index 5f8a8b5e5c..51ab963ed3 100644 --- a/tests/unit/test_zmq_execution_server.py +++ b/tests/unit/test_zmq_execution_server.py @@ -18,6 +18,8 @@ from openhcs.core.execution_state import ExecutionOutputPlateSummary from openhcs.core.orchestrator.execution_result import ( ExecutionResult, + RuntimeContextObservation, + RuntimeExecutionObservation, RuntimeObservationMode, ) from openhcs.core.progress import ( @@ -161,7 +163,10 @@ def test_server_exports_outcomes_without_projecting_compiled_values( ), ) compilation = SimpleNamespace( - execution_bundle=SimpleNamespace(runtime_contexts={}), + execution_bundle=SimpleNamespace( + runtime_contexts={}, + requires_parent_runtime_observation=False, + ), output_plate=SimpleNamespace(output_plate_root=tmp_path), ) monkeypatch.setattr( @@ -169,17 +174,33 @@ def test_server_exports_outcomes_without_projecting_compiled_values( lambda contexts, root: (root,), ) + declared_output = tmp_path / "exports" / "Saved.tiff" + declared_output.parent.mkdir() + declared_output.write_bytes(b"image evidence") server._export_runtime_observation( request_context=request_context, compilation=compilation, - execution_results={"A01": ExecutionResult.success("A01")}, + execution_results={ + "A01": ExecutionResult.success( + "A01", + runtime_observation=RuntimeExecutionObservation( + contexts=( + RuntimeContextObservation( + "context", + (), + runtime_export_paths=(declared_output,), + ), + ) + ), + ) + }, ) export = ZMQRuntimeExecutionOutcomeExport.read(export_path) assert export.successful_axis_count == 1 assert export.execution_id == record.execution_id assert export.exports is not None - assert export.exports.output_files == () + assert export.exports.output_files == (declared_output,) assert record.get_extra("runtime_observation_export_path") == str(export_path) assert record.get_extra("runtime_observation_export_scope") == "outcomes" diff --git a/tests/unit/test_zmq_runtime_outcome_export.py b/tests/unit/test_zmq_runtime_outcome_export.py index 5ea213a0a3..f358c89ca1 100644 --- a/tests/unit/test_zmq_runtime_outcome_export.py +++ b/tests/unit/test_zmq_runtime_outcome_export.py @@ -28,7 +28,13 @@ def test_outcome_export_round_trip_excludes_runtime_values(tmp_path: Path) -> No "A01": ExecutionResult.success( "A01", runtime_observation=RuntimeExecutionObservation( - contexts=(RuntimeContextObservation("context", (runtime_value,)),) + contexts=( + RuntimeContextObservation( + "context", + (runtime_value,), + runtime_export_paths=(declared_output,), + ), + ) ), ), "B01": ExecutionResult.error( From 5aa10609c5b1f2eea2b6a4d5446597c9051a8449 Mon Sep 17 00:00:00 2001 From: Tristan Simas Date: Tue, 29 Sep 2026 08:14:04 -0400 Subject: [PATCH 2/5] perf: transport only declared plate inputs from workers (#192) --- .../README.md | 43 +++++++ .../multiwell.csv | 5 + .../multiwell_execution_and_transfer.png | Bin 0 -> 79394 bytes .../official30_candidate.csv | 31 +++++ .../official30_control.csv | 31 +++++ .../official30_phase_totals.png | Bin 0 -> 60924 bytes .../plot.py | 120 ++++++++++++++++++ .../transport_payload.csv | 7 + openhcs/core/compiled_execution.py | 25 ++-- openhcs/core/orchestrator/execution_result.py | 44 ++++++- openhcs/core/orchestrator/orchestrator.py | 4 +- openhcs/core/orchestrator/worker_execution.py | 5 +- openhcs/runtime/zmq_execution_signature.py | 4 +- tests/unit/test_compiled_execution.py | 46 ++++++- tests/unit/test_zmq_execution_server.py | 20 ++- 15 files changed, 357 insertions(+), 28 deletions(-) create mode 100644 benchmark/results/perf_plate_input_transport_20260929/README.md create mode 100644 benchmark/results/perf_plate_input_transport_20260929/multiwell.csv create mode 100644 benchmark/results/perf_plate_input_transport_20260929/multiwell_execution_and_transfer.png create mode 100644 benchmark/results/perf_plate_input_transport_20260929/official30_candidate.csv create mode 100644 benchmark/results/perf_plate_input_transport_20260929/official30_control.csv create mode 100644 benchmark/results/perf_plate_input_transport_20260929/official30_phase_totals.png create mode 100644 benchmark/results/perf_plate_input_transport_20260929/plot.py create mode 100644 benchmark/results/perf_plate_input_transport_20260929/transport_payload.csv diff --git a/benchmark/results/perf_plate_input_transport_20260929/README.md b/benchmark/results/perf_plate_input_transport_20260929/README.md new file mode 100644 index 0000000000..e8167b2b10 --- /dev/null +++ b/benchmark/results/perf_plate_input_transport_20260929/README.md @@ -0,0 +1,43 @@ +# Transfer only declared plate inputs from worker lanes (2026-09-29) + +This report supports [OpenHCS issue #192](https://github.com/OpenHCSDev/openhcs/issues/192). The control contains the single-axis compilation fix in [draft PR #191](https://github.com/OpenHCSDev/openhcs/pull/191). Four-worker observations use `fork`, 16 wells, one native thread per worker, and a fresh client-owned execution server. One-well observations also use a fresh server. The change affects execution and total time; it does not change compilation. + +`ExampleColocalization` exposed a **18.8–25.6-second gap** between the last worker completing and the plate spreadsheet starting. Instrumenting the worker pipe showed sequential result serialization and receipt. One four-well lane sent about **1.54 GB** of pickled runtime records: 1.11 GB object labels, 382 MB images, 41 MB measurements, and less than 1 MB relationships. The spreadsheet's compiled artifact inputs require measurements and relationships. The new `MERGE_PLATE_INPUTS` observation mode derives retained artifact types from those compiled inputs. Explicit full-value observation and analysis consolidation still retain every record. Runtime export paths are found before filtering. + +| Fresh-server official30, one well per case (summed seconds) | Control | Candidate | Change | +| --- | ---: | ---: | ---: | +| Server compilation jobs | 70.193 | 70.310 | +0.117 | +| Server execution jobs | 85.869 | 80.329 | **-5.539** | +| Other measured time | 63.944 | 64.069 | +0.125 | +| Per-observation total | 220.006 | 214.708 | **-5.298** | + +All **30/30** cases succeeded; **110/110** generated result files matched by relative path and bytes. Execution improved in 21 cases, with the largest reductions in ImagingFlow (-2.512 seconds), TrackObjects (-0.820 seconds), and Colocalization (-0.530 seconds). The full sweep followed a candidate warmup through the same corpus so cold JIT compilation was outside the paired measurement. + +![Official30 compile, execution, and total times](official30_phase_totals.png) + +| 16 wells, four fork workers | Control execution | Candidate execution | Control total | Candidate total | Post-worker gap | +| --- | ---: | ---: | ---: | ---: | ---: | +| Colocalization | 51.177 s | **33.491 s** | 61.983 s | **43.263 s** | 18.804 → 0.726 s | +| ImagingFlow | 212.827 s | **126.078 s** | 227.382 s | **139.305 s** | 88.090 → 3.171 s | + +The plate-level export remained near 15 seconds for Colocalization and 52 seconds for ImagingFlow; the gain comes from worker-result transfer. Both 16-well plate exports matched the control byte for byte. The ImagingFlow candidate's measured process-tree peak memory was slightly higher (14.14 versus 13.72 GB), so this result does not establish a memory reduction. + +The native CellProfiler 4.2.8.1 reference is a separately measured **single-sample execution** baseline, projected to 16 wells by multiplication. Its projected 16-well execution is 592.570 seconds for Colocalization and 985.625 seconds for ImagingFlow. Relative to that projection, the candidate execution is 17.69× and 7.82× faster, respectively. These are projections, not native 16-well measurements; the OpenHCS total timer includes server startup and compilation and is not divided by the native execution timer. + +![Multiwell execution and worker-transfer gaps](multiwell_execution_and_transfer.png) + +`official30_control.csv`, `official30_candidate.csv`, `multiwell.csv`, and `transport_payload.csv` retain the observations; `plot.py` regenerates the figures. The raw runs are under `/home/ts/code/projects/openhcs-benchmark-runs/perf-single-axis-full-candidate-20260929`, `perf-plate-transport-full-candidate-20260929`, `perf-single-axis-multiwell-candidate-20260929`, `perf-plate-transport-candidate-16w-repeat-20260929`, and `perf-plate-transport-imaging-{control,candidate}-20260929`. The saved native CP reference is `benchmark/results/perf_lazy_catalog_20260929/native_cp_summary.csv`. + +Seventy-one focused unit tests passed, including exact full-observation and plate-input retention policies. A real ZMQ full-value export and an analysis-consolidation integration test passed. The official30 and both 16-well cases used the ordinary ZMQ benchmark route. + +Reproduce an observation with: + +```bash +OPENHCS_CPU_ONLY=true \ +OPENHCS_REFERENCE_EXPORT_PIPELINES_ROOT=/absolute/path/to/benchmark/reference_exports/official30_value_completion_20260914 \ +.venv/bin/python scripts/benchmark_cppipe_well_throughput.py \ + --manifest benchmark/manifests/official30_portable_axis1.json \ + --output-dir /path/to/output \ + --native-summary-csv benchmark/results/perf_lazy_catalog_20260929/native_cp_summary.csv \ + --mode 16w_4c --case ExampleColocalization +``` diff --git a/benchmark/results/perf_plate_input_transport_20260929/multiwell.csv b/benchmark/results/perf_plate_input_transport_20260929/multiwell.csv new file mode 100644 index 0000000000..696ef43175 --- /dev/null +++ b/benchmark/results/perf_plate_input_transport_20260929/multiwell.csv @@ -0,0 +1,5 @@ +variant,case_name,mode_name,worker_count,well_count,compile_seconds,prepare_seconds,execute_seconds,total_seconds,native_single_sample_execution_seconds,projected_native_execution_seconds,projected_execution_speedup,peak_memory_mb,status,post_worker_gap_seconds,plate_export_seconds +control,ExampleColocalization,16w_4c,4,16,7.391266584396362,0.0,51.176520586013794,61.98291008686647,37.035618890076876,592.56990224123,11.57894080050404,14075.07421875,success,18.804231,14.916857 +candidate,ExampleColocalization,16w_4c,4,16,7.330875873565674,0.0,33.491028785705566,43.26270653307438,37.035618890076876,592.56990224123,17.69339204336855,8422.80859375,success,0.726061,15.118663 +control,ExampleImagingFlowCytometryObjectsInGrid,16w_4c,4,16,10.196629524230957,0.0,212.82674908638,227.38193692686036,61.60158259188756,985.625321470201,4.631115805232571,13723.98828125,success,88.090158,52.358813 +candidate,ExampleImagingFlowCytometryObjectsInGrid,16w_4c,4,16,10.152604818344116,0.0,126.07837319374084,139.30536010675132,61.60158259188756,985.625321470201,7.8175605895201405,14144.87890625,success,3.171111,51.494128 diff --git a/benchmark/results/perf_plate_input_transport_20260929/multiwell_execution_and_transfer.png b/benchmark/results/perf_plate_input_transport_20260929/multiwell_execution_and_transfer.png new file mode 100644 index 0000000000000000000000000000000000000000..eec106a63511057953b06974e64f77ba1537b7c6 GIT binary patch literal 79394 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 GfiQvY*ayd}!3g<+ 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 literal 0 HcmV?d00001 diff --git a/benchmark/results/perf_plate_input_transport_20260929/official30_candidate.csv b/benchmark/results/perf_plate_input_transport_20260929/official30_candidate.csv new file mode 100644 index 0000000000..d25f951d7a --- /dev/null +++ b/benchmark/results/perf_plate_input_transport_20260929/official30_candidate.csv @@ -0,0 +1,31 @@ +case_name,mode_name,worker_count,well_count,compile_seconds,prepare_seconds,execute_seconds,total_seconds,native_single_sample_execution_seconds,projected_native_execution_seconds,projected_execution_speedup,peak_memory_mb,status +ExampleColocalization,1w_1t,1,1,3.2597548961639404,0.0,3.1273117065429688,8.721822986844927,37.035618890076876,37.035618890076876,11.842637499994282,1244.52734375,success +ExampleCometAssay,1w_1t,1,1,2.58327579498291,0.0,2.230452299118042,6.923803344368935,13.304211451206356,13.304211451206356,5.964804293939424,1095.73828125,success +ExampleFly,1w_1t,1,1,2.9442410469055176,0.0,2.0377795696258545,7.328427569940686,8.094948755111545,8.094948755111545,3.9724359178838045,801.87890625,success +ExampleFlyURL,1w_1t,1,1,2.084643840789795,0.0,1.0988714694976807,5.346818874124438,4.900778113398701,4.900778113398701,4.459828332460901,717.64453125,success +ExampleHuman,1w_1t,1,1,2.023411989212036,0.0,1.1636254787445068,5.250995545182377,4.420192994643003,4.420192994643003,3.7986388880141813,688.3671875,success +ExampleIlluminationCorrection_Example1_AllMethod,1w_1t,1,1,1.9811787605285645,0.0,2.3273584842681885,6.1548775136470795,946.6214662808925,946.6214662808925,406.73642358046396,1103.76953125,success +ExampleIlluminationCorrection_Example1_EachMethod,1w_1t,1,1,1.915731430053711,0.0,0.1673119068145752,3.9306574533693492,4.54475614009425,4.54475614009425,27.163375438252665,635.22265625,success +ExampleIlluminationCorrection_Example2,1w_1t,1,1,2.2534866333007812,0.0,1.775156021118164,6.069607189390808,48.04419008316472,48.04419008316472,27.064770370382355,867.40234375,success +ExampleIlluminationCorrection_Example3,1w_1t,1,1,2.3206868171691895,0.0,0.7344753742218018,5.070914588402957,2.1520505752414465,2.1520505752414465,2.930051368327505,678.76171875,success +ExampleImagingFlowCytometryObjectsInGrid,1w_1t,1,1,3.151324987411499,0.0,19.375733852386475,25.135063129942864,61.60158259188756,61.60158259188756,3.179316100293162,2356.98828125,success +ExampleNeighbors,1w_1t,1,1,1.9026966094970703,0.0,1.42476224899292,5.314375401940197,4.5466188420541584,4.5466188420541584,3.191142132849108,726.25390625,success +ExamplePercentPositive,1w_1t,1,1,2.4588496685028076,0.0,0.5351963043212891,5.175749351270497,2.5050158216618,2.5050158216618,4.680555155997469,709.015625,success +ExampleSpeckles,1w_1t,1,1,1.7379801273345947,0.0,0.687899112701416,4.380787087138742,3.179383432958275,3.179383432958275,4.62187459505896,774.61328125,success +ExampleTrackObjects,1w_1t,1,1,1.885824203491211,0.0,2.172006607055664,5.999519484117627,9.587221414782107,9.587221414782107,4.413992749211009,1475.078125,success +ExampleTumor,1w_1t,1,1,1.7517242431640625,0.0,0.8000016212463379,4.5107450829818845,4.360487373080105,4.360487373080105,5.450598170397227,853.3125,success +ExampleUntangleAndStraightenWorms,1w_1t,1,1,2.5558722019195557,0.0,1.2160651683807373,5.911333395168185,3.4416790287941694,3.4416790287941694,2.8301764726778322,750.53515625,success +ExampleUntangleWorms,1w_1t,1,1,2.7672553062438965,0.0,2.044220209121704,6.991439655888826,4.618807300925255,4.618807300925255,2.2594470401550906,805.34765625,success +ExampleUntangleWormsBrightField,1w_1t,1,1,2.7660014629364014,0.0,3.6838223934173584,8.677123927045614,7.377188352867961,7.377188352867961,2.0025906694226894,919.84765625,success +ExampleVitra,1w_1t,1,1,2.87866473197937,0.0,1.3409881591796875,6.444980601314455,4.122247557155788,4.122247557155788,3.074037253004127,844.765625,success +ExampleWoundHealing,1w_1t,1,1,1.626863718032837,0.0,1.0248918533325195,4.569093783851713,4.702593941241503,4.702593941241503,4.5883806432362935,1127.16015625,success +ExampleYeastColonies,1w_1t,1,1,3.194967269897461,0.0,1.9961652755737305,7.521727431099862,12.096297012176365,12.096297012176365,6.05976727488143,1036.7109375,success +ExampleYeastPatches,1w_1t,1,1,3.2484090328216553,0.0,2.507408618927002,8.123654478229582,5.990533472970128,5.990533472970128,2.389133317860917,993.30078125,success +cp_tutorial_3d_monolayer,1w_1t,1,1,2.690370559692383,0.0,9.333230018615723,14.425248390063643,14.058660756796598,14.058660756796598,1.5063017549932556,1291.5859375,success +cp_tutorial_advanced_segmentation_final,1w_1t,1,1,3.3375144004821777,0.0,9.285533428192139,15.477915027644485,36.253466514870524,36.253466514870524,3.904295514655096,1004.75390625,success +cp_tutorial_quality_control,1w_1t,1,1,1.2691724300384521,0.0,0.6221444606781006,3.73303104005754,4.787729676347226,4.787729676347226,7.6955272914089505,662.765625,success +cp_tutorial_beginner_segmentation_final,1w_1t,1,1,2.4608864784240723,0.0,5.43627405166626,10.31802385719493,16.074153264053166,16.074153264053166,2.956832770254898,863.7265625,success +cp_tutorial_pixel_based_classification,1w_1t,1,1,1.845350742340088,0.0,0.7938871383666992,4.585539441090077,4.208680049050599,4.208680049050599,5.301358147342343,911.42578125,success +cp_tutorial_translocation_final,1w_1t,1,1,2.7141711711883545,0.0,0.8469216823577881,5.813108752015978,3.004684013314545,3.004684013314545,3.54777079853435,798.50390625,success +cp4_supplement_combine_objects,1w_1t,1,1,1.273928165435791,0.0,0.20880627632141113,3.234272418078035,1.8334413380362093,1.8334413380362093,8.780585384387734,643.35546875,success +cp_tutorial_translocation_start,1w_1t,1,1,1.4258105754852295,0.0,0.3311126232147217,3.5676592998206615,2.1760300607420504,2.1760300607420504,6.5718728558739565,679.41796875,success diff --git a/benchmark/results/perf_plate_input_transport_20260929/official30_control.csv b/benchmark/results/perf_plate_input_transport_20260929/official30_control.csv new file mode 100644 index 0000000000..360caad3d0 --- /dev/null +++ b/benchmark/results/perf_plate_input_transport_20260929/official30_control.csv @@ -0,0 +1,31 @@ +case_name,mode_name,worker_count,well_count,compile_seconds,prepare_seconds,execute_seconds,total_seconds,native_single_sample_execution_seconds,projected_native_execution_seconds,projected_execution_speedup,peak_memory_mb,status +ExampleColocalization,1w_1t,1,1,3.2704761028289795,0.0,3.656903028488159,9.323421066626906,37.035618890076876,37.035618890076876,10.127591188926926,1249.15625,success +ExampleCometAssay,1w_1t,1,1,2.5978925228118896,0.0,2.4985811710357666,7.230326514691114,13.304211451206356,13.304211451206356,5.3247065196169725,1130.08984375,success +ExampleFly,1w_1t,1,1,2.928973913192749,0.0,2.1651382446289062,7.507112581282854,8.094948755111545,8.094948755111545,3.738767616891354,813.9453125,success +ExampleFlyURL,1w_1t,1,1,2.0594329833984375,0.0,1.0964572429656982,5.262936326675117,4.900778113398701,4.900778113398701,4.469648173551276,728.890625,success +ExampleHuman,1w_1t,1,1,2.0272867679595947,0.0,1.1660683155059814,5.281382285989821,4.420192994643003,4.420192994643003,3.7906809882961174,699.44921875,success +ExampleIlluminationCorrection_Example1_AllMethod,1w_1t,1,1,1.958434820175171,0.0,2.668771266937256,6.5271095228381455,946.6214662808925,946.6214662808925,354.70310925793854,1178.74609375,success +ExampleIlluminationCorrection_Example1_EachMethod,1w_1t,1,1,1.8953959941864014,0.0,0.16789460182189941,3.8588457694277167,4.54475614009425,4.54475614009425,27.069102227094074,644.79296875,success +ExampleIlluminationCorrection_Example2,1w_1t,1,1,2.2534286975860596,0.0,1.8507678508758545,6.131418786942959,48.04419008316472,48.04419008316472,25.959058052812168,856.3046875,success +ExampleIlluminationCorrection_Example3,1w_1t,1,1,2.3259546756744385,0.0,0.7421314716339111,5.059442943893373,2.1520505752414465,2.1520505752414465,2.8998238957625553,689.515625,success +ExampleImagingFlowCytometryObjectsInGrid,1w_1t,1,1,3.1455113887786865,0.0,21.887840747833252,27.72792947711423,61.60158259188756,61.60158259188756,2.8144202665576183,2394.8515625,success +ExampleNeighbors,1w_1t,1,1,1.9047722816467285,0.0,1.4113435745239258,5.292001169640571,4.5466188420541584,4.5466188420541584,3.221482652505662,736.76953125,success +ExamplePercentPositive,1w_1t,1,1,2.4342103004455566,0.0,0.5324540138244629,5.061868476681411,2.5050158216618,2.5050158216618,4.7046613540745,721.30078125,success +ExampleSpeckles,1w_1t,1,1,1.7089776992797852,0.0,0.6968872547149658,4.287914528977126,3.179383432958275,3.179383432958275,4.562263711163259,814.83984375,success +ExampleTrackObjects,1w_1t,1,1,1.900160312652588,0.0,2.9917476177215576,6.925043139141053,9.587221414782107,9.587221414782107,3.204555544054716,1477.71484375,success +ExampleTumor,1w_1t,1,1,1.7615485191345215,0.0,0.8002479076385498,4.493931999895722,4.360487373080105,4.360487373080105,5.448920680027093,857.25,success +ExampleUntangleAndStraightenWorms,1w_1t,1,1,2.660576820373535,0.0,1.2797966003417969,6.081565018277615,3.4416790287941694,3.4416790287941694,2.6892390774244874,761.98828125,success +ExampleUntangleWorms,1w_1t,1,1,2.712616205215454,0.0,2.1271276473999023,7.022926961071789,4.618807300925255,4.618807300925255,2.171382289431977,816.29296875,success +ExampleUntangleWormsBrightField,1w_1t,1,1,2.740830183029175,0.0,3.6641621589660645,8.660505207721144,7.377188352867961,7.377188352867961,2.0133356638751,928.48046875,success +ExampleVitra,1w_1t,1,1,2.868414878845215,0.0,1.3481652736663818,6.441189814824611,4.122247557155788,4.122247557155788,3.057672258494831,855.33203125,success +ExampleWoundHealing,1w_1t,1,1,1.6260030269622803,0.0,1.2126474380493164,4.643486723769456,4.702593941241503,4.702593941241503,3.877956439512352,1131.7890625,success +ExampleYeastColonies,1w_1t,1,1,3.2015538215637207,0.0,2.005239248275757,7.525242286268622,12.096297012176365,12.096297012176365,6.032346026828268,1040.9765625,success +ExampleYeastPatches,1w_1t,1,1,3.22324800491333,0.0,2.621635913848877,8.204678097739816,5.990533472970128,5.990533472970128,2.2850363932401674,1011.1171875,success +cp_tutorial_3d_monolayer,1w_1t,1,1,2.6850473880767822,0.0,9.711158752441406,14.777937124948949,14.058660756796598,14.058660756796598,1.4476810764999821,1347.82421875,success +cp_tutorial_advanced_segmentation_final,1w_1t,1,1,3.3439583778381348,0.0,9.420271396636963,15.600868972949684,36.253466514870524,36.253466514870524,3.8484524477514537,1015.14453125,success +cp_tutorial_quality_control,1w_1t,1,1,1.2613310813903809,0.0,0.6129217147827148,3.709976974874735,4.787729676347226,4.787729676347226,7.811323307487173,672.83984375,success +cp_tutorial_beginner_segmentation_final,1w_1t,1,1,2.4626216888427734,0.0,5.456287384033203,10.324893586803228,16.074153264053166,16.074153264053166,2.9459872863535645,897.73828125,success +cp_tutorial_pixel_based_classification,1w_1t,1,1,1.8467652797698975,0.0,0.7934067249298096,4.601227829232812,4.208680049050599,4.208680049050599,5.304568157552394,918.87109375,success +cp_tutorial_translocation_final,1w_1t,1,1,2.631880521774292,0.0,0.8159711360931396,5.705801505129784,3.004684013314545,3.004684013314545,3.682341053999701,808.73828125,success +cp4_supplement_combine_objects,1w_1t,1,1,1.251295566558838,0.0,0.206801176071167,3.2015029741451144,1.8334413380362093,1.8334413380362093,8.86572007407377,655.7734375,success +cp_tutorial_translocation_start,1w_1t,1,1,1.5043699741363525,0.0,0.26001715660095215,3.533711294643581,2.1760300607420504,2.1760300607420504,8.368794156462528,700.0546875,success diff --git a/benchmark/results/perf_plate_input_transport_20260929/official30_phase_totals.png b/benchmark/results/perf_plate_input_transport_20260929/official30_phase_totals.png new file mode 100644 index 0000000000000000000000000000000000000000..56fc1dc4bc94a8fe72f2b7e328349e2afd6574d5 GIT binary patch literal 60924 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≦ftc5zP^GfBJ;i@PIT8?a)UZ0GSF1p z1u;_6sozhY)Z_sv`b5ivCUre=AdytsT9fP-EL;$W|5n@C1w~zkQG9Er(J2^)k&(8V zfMG!maYWQ0`7kMlMJE)pvB(8nE1@N`O)v^9bIv=L%=j2t3$UFkHQvz2Uos0| zlmQHyt+uW#z^Vk|f+wX=Xx<)c-W`>I^FGtZ(`RvN0TQXmjX;tv!kVfmKk0mwRI=Wf zQje9btV&@8C^AB8SfY)jx2?rry;mjGiD_M(jjWWt!bGV@n3Iu$Svun1P7fmSUXtv? zvs?Z|imdvH+fpc)hpsW79cG{vlwEbGsBc}lS zG*uxgC0S>&OaiMHQEs%%VbhB*Q`lmRQgvJ-tK;GpAIcpK?->hF@{JJW2T79=FifEh zk1C3TmM`yeHvRZJ4s5#K#C!J)7Ar%)GHfQSKggEXm0^B}YXPhBU@oBx%*=xiv$)!$ z+nChv>^YraT-UH;Z0WeBX=m@J#3*DIQV%`h{t)AQdxfq0gN#;)xx{f71^-SXjk(2j zs|mOg)H!KIRvJs^SOmB4msB%L;db2_sh4(<-*M{@S>0)z1ON5w+1XYz?g}N3%0)*Q zBduda+mWW<@4ZOp#UbTP9Ovn@qt1n|QZkedaLUmuK7%L6G_4OPp07qFVma7<6#!W% zxW0bRTu5Yx!*R?E66l!i;gJwJL91f1uVz|(m||tI+Y#(NNaM#Y5x>23Avq-11_m~* z=my&1ZpHWa%RwrEMLkQ7;=w0UWK$^1_sWaIk6@)G& zqOBzKT7v5U*Uu6WAdV=k!Rlq@bRJ^trX>mlwlk^5brUPe;e6*3#!I*SKuC;B_@_-k zv!JLbjSx0)8Iq;3hF*b`sZjo4t$6W9dQVw-e#t~F7m*1sX2ExgjhCvEOe25Z5eCTU zrn#-eJ}4<}5(O{6jfZT_(S7zU#9~nYBs34%rir8o8Ny3a1aw_TZ_YeC z>Ec;u{|I20nJlr}>4Mad_)5frtmIn$D@Bh2Bd6QoaNGOx3g7;9WN~PoboVv0FUScq z(0r`BleNLwjEqV9ss=8Ya<*x6-j3$%(CB_xUb)!j<^bD!0k;FuC5Rwi?4ZLx+=LPq z8zd^N%%0WD_}F2k-sfW^JL15#?w+6zqIPhF21+6~?(^&vB)O($cFN z^Y=`ZbCbAAY0lbjWlx8PmuZd@#kC%#ri`Vz5k?W^BgijLPDWA0`=cYPW_Rn=2N(GJ z4$U(7mwEqj3|F}4U*qWhFaB;8?35oGGcNgU)D!X8-LKRAnb`NAjZy#UL1K4b&cAT1 e{Ld3|SMZhN1s%BN{yT1a0>Tn_e literal 0 HcmV?d00001 diff --git a/benchmark/results/perf_plate_input_transport_20260929/plot.py b/benchmark/results/perf_plate_input_transport_20260929/plot.py new file mode 100644 index 0000000000..40c209066a --- /dev/null +++ b/benchmark/results/perf_plate_input_transport_20260929/plot.py @@ -0,0 +1,120 @@ +"""Regenerate the plate-input transport benchmark figures from committed CSVs.""" + +from __future__ import annotations + +import csv +from pathlib import Path + +import matplotlib + +matplotlib.use("Agg") +import matplotlib.pyplot as plt +import numpy as np + +ROOT = Path(__file__).resolve().parent +CONTROL_COLOR = "#4263a6" +CANDIDATE_COLOR = "#159c85" + + +def read_rows(name: str) -> list[dict[str, str]]: + with (ROOT / name).open(newline="") as stream: + return list(csv.DictReader(stream)) + + +def plot_official30() -> None: + rows = { + label: read_rows(f"official30_{label}.csv") + for label in ("control", "candidate") + } + totals = {} + for label, observations in rows.items(): + compile_seconds = sum(float(row["compile_seconds"]) for row in observations) + execute_seconds = sum(float(row["execute_seconds"]) for row in observations) + total_seconds = sum(float(row["total_seconds"]) for row in observations) + totals[label] = ( + compile_seconds, + execute_seconds, + total_seconds - compile_seconds - execute_seconds, + total_seconds, + ) + + fig, ax = plt.subplots(figsize=(9, 4.8)) + positions = np.arange(4) + width = 0.35 + for offset, label, color in ( + (-width / 2, "control", CONTROL_COLOR), + (width / 2, "candidate", CANDIDATE_COLOR), + ): + bars = ax.bar( + positions + offset, + totals[label], + width, + label=label.title(), + color=color, + ) + ax.bar_label(bars, fmt="%.1f", padding=3, fontsize=8) + ax.set_xticks(positions, ("Compile", "Execute", "Other", "Total")) + ax.set_ylabel("Summed seconds over 30 one-well observations") + ax.set_title("Fresh-server official30: plate-input record transport") + ax.legend(frameon=False) + ax.set_ylim(0, 245) + ax.spines[["top", "right"]].set_visible(False) + fig.tight_layout() + fig.savefig(ROOT / "official30_phase_totals.png", dpi=170) + plt.close(fig) + + +def plot_multiwell() -> None: + rows = read_rows("multiwell.csv") + cases = ("ExampleColocalization", "ExampleImagingFlowCytometryObjectsInGrid") + labels = ("Colocalization", "ImagingFlow") + by_case = {(row["case_name"], row["variant"]): row for row in rows} + fig, axes = plt.subplots(1, 2, figsize=(11, 4.8)) + positions = np.arange(len(cases)) + width = 0.36 + for axis, field, title in ( + (axes[0], "execute_seconds", "Server execution"), + (axes[1], "post_worker_gap_seconds", "Worker finish to plate export"), + ): + for offset, variant, color in ( + (-width / 2, "control", CONTROL_COLOR), + (width / 2, "candidate", CANDIDATE_COLOR), + ): + values = [float(by_case[(case, variant)][field]) for case in cases] + bars = axis.bar( + positions + offset, + values, + width, + color=color, + label=variant.title(), + ) + axis.bar_label(bars, fmt="%.1f", padding=3, fontsize=8) + axis.set_xticks(positions, labels) + axis.set_title(title) + axis.set_ylabel("Seconds") + axis.spines[["top", "right"]].set_visible(False) + axis.set_ylim(0, max(float(row[field]) for row in rows) * 1.18) + native_speedups = tuple( + float(by_case[(case, "candidate")]["projected_native_execution_seconds"]) + / float(by_case[(case, "candidate")]["execute_seconds"]) + for case in cases + ) + axes[0].set_xticks( + positions, + tuple( + f"{label}\nCP projection: {speedup:.1f}×" + for label, speedup in zip(labels, native_speedups, strict=True) + ), + ) + axes[0].legend(frameon=False) + fig.suptitle( + "16 wells, four fork workers; native CP is a 16× one-sample projection" + ) + fig.tight_layout() + fig.savefig(ROOT / "multiwell_execution_and_transfer.png", dpi=170) + plt.close(fig) + + +if __name__ == "__main__": + plot_official30() + plot_multiwell() diff --git a/benchmark/results/perf_plate_input_transport_20260929/transport_payload.csv b/benchmark/results/perf_plate_input_transport_20260929/transport_payload.csv new file mode 100644 index 0000000000..03de92c4f8 --- /dev/null +++ b/benchmark/results/perf_plate_input_transport_20260929/transport_payload.csv @@ -0,0 +1,7 @@ +artifact_type,records,pickle_bytes,data_types +ImageArtifactType,32,382249189,"ImageMetadataPayload,MaskedImagePayload" +MeasurementsArtifactType,68,40925527,MeasurementTable +ObjectLabelsArtifactType,32,1112183351,ObjectLabelSet +RelationshipsArtifactType,16,285033,ObjectRelationship +ObjectLineageArtifactType,8,145358,ObjectRelationship +total,156,1540124588, diff --git a/openhcs/core/compiled_execution.py b/openhcs/core/compiled_execution.py index 502c12b7e4..986a7157af 100644 --- a/openhcs/core/compiled_execution.py +++ b/openhcs/core/compiled_execution.py @@ -147,16 +147,23 @@ def axis_ids(self) -> tuple[str, ...]: def requires_parent_runtime_observation(self) -> bool: """Return whether compiled scopes require worker records in the parent.""" - return any( + return self.requires_full_parent_runtime_observation or any( plan.execution_scope.requires_parent_runtime_observation - or ( - context.analysis_consolidation_config.enabled - and plan.runtime_artifact_materialization.has_persistent_target - and any( - output.materialization is not None - and output.materialization.participates_in_runtime_export_observation() - for output in plan.artifact_outputs.values() - ) + for context in self.runtime_contexts.values() + for plan in context.step_plans.values() + ) + + @property + def requires_full_parent_runtime_observation(self) -> bool: + """Return whether consolidation needs records beyond plate inputs.""" + + return any( + context.analysis_consolidation_config.enabled + and plan.runtime_artifact_materialization.has_persistent_target + and any( + output.materialization is not None + and output.materialization.participates_in_runtime_export_observation() + for output in plan.artifact_outputs.values() ) for context in self.runtime_contexts.values() for plan in context.step_plans.values() diff --git a/openhcs/core/orchestrator/execution_result.py b/openhcs/core/orchestrator/execution_result.py index b5c4af3471..4f691525ce 100644 --- a/openhcs/core/orchestrator/execution_result.py +++ b/openhcs/core/orchestrator/execution_result.py @@ -10,11 +10,14 @@ from enum import Enum from pathlib import Path from types import MappingProxyType -from typing import Mapping, Optional +from typing import TYPE_CHECKING, Mapping, Optional from openhcs.core.context.processing_context import ProcessingContext from openhcs.core.runtime_stores import StoredRuntimeValue +if TYPE_CHECKING: + from openhcs.core.compiled_execution import CompiledExecutionBundle + class RuntimeExecutionTransportSerialization: """Pickle reducers required for worker-to-parent execution results.""" @@ -78,11 +81,12 @@ class RuntimeObservationMode(Enum): """Controls whether worker runtime records are returned to the parent.""" MERGE_INTO_PARENT = "merge_into_parent" + MERGE_PLATE_INPUTS = "merge_plate_inputs" OMIT = "omit" @property def collects_records(self) -> bool: - return self is RuntimeObservationMode.MERGE_INTO_PARENT + return self is not RuntimeObservationMode.OMIT @property def releases_worker_records(self) -> bool: @@ -94,13 +98,47 @@ def from_parent_requirement(cls, required: bool) -> "RuntimeObservationMode": return cls.MERGE_INTO_PARENT if required else cls.OMIT + @classmethod + def for_compiled_bundle( + cls, bundle: "CompiledExecutionBundle" + ) -> "RuntimeObservationMode": + """Retain only plate inputs unless another parent consumer needs all records.""" + + if bundle.requires_full_parent_runtime_observation: + return cls.MERGE_INTO_PARENT + if bundle.requires_parent_runtime_observation: + return cls.MERGE_PLATE_INPUTS + return cls.OMIT + def including_parent_requirement( self, required: bool, ) -> "RuntimeObservationMode": """Return this mode strengthened by an additional retention requirement.""" - return type(self).from_parent_requirement(self.collects_records or required) + return type(self).MERGE_INTO_PARENT if required else self + + def retain_records( + self, + records: tuple[StoredRuntimeValue, ...], + context: ProcessingContext, + ) -> tuple[StoredRuntimeValue, ...]: + """Keep records consumed by the selected parent-side execution route.""" + + if self is RuntimeObservationMode.OMIT: + return () + if self is RuntimeObservationMode.MERGE_INTO_PARENT: + return records + required_types = { + spec.artifact_type + for plan in context.step_plans.values() + if plan.execution_scope.requires_parent_runtime_observation + for invocation in plan.compiled_function_pattern.default_group.invocations + for spec in invocation.contract.artifact_inputs + } + return tuple( + record for record in records if record.key.artifact_type in required_types + ) @dataclass(frozen=True) diff --git a/openhcs/core/orchestrator/orchestrator.py b/openhcs/core/orchestrator/orchestrator.py index 09d3836fb2..2169f6ab89 100644 --- a/openhcs/core/orchestrator/orchestrator.py +++ b/openhcs/core/orchestrator/orchestrator.py @@ -710,9 +710,7 @@ def execute_compiled_plate( log_file_base=log_file_base, progress_queue=progress_queue, runtime_observation_mode=( - RuntimeObservationMode.from_parent_requirement( - execution_bundle.requires_parent_runtime_observation - ) + RuntimeObservationMode.for_compiled_bundle(execution_bundle) if runtime_observation_mode is None else runtime_observation_mode ), diff --git a/openhcs/core/orchestrator/worker_execution.py b/openhcs/core/orchestrator/worker_execution.py index 2c2beaff03..7f82c7bafc 100644 --- a/openhcs/core/orchestrator/worker_execution.py +++ b/openhcs/core/orchestrator/worker_execution.py @@ -818,8 +818,9 @@ def _execute_axis_with_sequential_combinations( frozen_context.release_execution_image_cache() if release_axis_resources: _release_runtime_resources((frozen_context,), owner=f"axis {axis_id}") - retained_records = ( - observed_records if runtime_observation_mode.collects_records else () + retained_records = runtime_observation_mode.retain_records( + observed_records, + frozen_context, ) if retained_records or runtime_export_paths: runtime_observations.append( diff --git a/openhcs/runtime/zmq_execution_signature.py b/openhcs/runtime/zmq_execution_signature.py index da95ce7055..1c073889ec 100644 --- a/openhcs/runtime/zmq_execution_signature.py +++ b/openhcs/runtime/zmq_execution_signature.py @@ -73,8 +73,8 @@ def runtime_observation_mode_for( ) -> RuntimeObservationMode: """Resolve retention from compiled needs plus an explicit export request.""" - return RuntimeObservationMode.from_parent_requirement( - execution_bundle.requires_parent_runtime_observation + return RuntimeObservationMode.for_compiled_bundle( + execution_bundle ).including_parent_requirement( self.runtime_observation_export_path is not None and self.runtime_observation_export_scope diff --git a/tests/unit/test_compiled_execution.py b/tests/unit/test_compiled_execution.py index e795860a76..29f7bbd1c4 100644 --- a/tests/unit/test_compiled_execution.py +++ b/tests/unit/test_compiled_execution.py @@ -114,7 +114,7 @@ def test_compiled_execution_bundle_derives_axis_ids_from_contexts() -> None: FunctionStepExecutionScope.AXIS, FunctionStepExecutionScope.PLATE, ), - RuntimeObservationMode.MERGE_INTO_PARENT, + RuntimeObservationMode.MERGE_PLATE_INPUTS, ), ), ) @@ -141,12 +141,7 @@ def test_compiled_execution_bundle_derives_runtime_observation_mode( runtime_environment=_runtime_environment(), ) - assert ( - RuntimeObservationMode.from_parent_requirement( - bundle.requires_parent_runtime_observation - ) - is expected_mode - ) + assert RuntimeObservationMode.for_compiled_bundle(bundle) is expected_mode @pytest.mark.parametrize( @@ -193,6 +188,43 @@ def test_consolidation_retains_declared_persistent_export_records( ) assert bundle.requires_parent_runtime_observation is expected + assert bundle.requires_full_parent_runtime_observation is expected + assert RuntimeObservationMode.for_compiled_bundle(bundle) is ( + RuntimeObservationMode.MERGE_INTO_PARENT + if expected + else RuntimeObservationMode.OMIT + ) + + +def test_plate_input_retention_uses_compiled_consumer_types() -> None: + plate_input = SimpleNamespace(artifact_type=MeasurementsArtifactType) + plate_plan = SimpleNamespace( + execution_scope=FunctionStepExecutionScope.PLATE, + compiled_function_pattern=SimpleNamespace( + default_group=SimpleNamespace( + invocations=( + SimpleNamespace( + contract=SimpleNamespace(artifact_inputs=(plate_input,)) + ), + ) + ) + ), + ) + context = ProcessingContext(axis_id="A01", step_plans={0: plate_plan}) + image_record = SimpleNamespace(key=SimpleNamespace(artifact_type=ImageArtifactType)) + measurement_record = SimpleNamespace( + key=SimpleNamespace(artifact_type=MeasurementsArtifactType) + ) + records = (image_record, measurement_record) + + assert RuntimeObservationMode.MERGE_PLATE_INPUTS.retain_records( + records, context + ) == (measurement_record,) + assert ( + RuntimeObservationMode.MERGE_INTO_PARENT.retain_records(records, context) + == records + ) + assert RuntimeObservationMode.OMIT.retain_records(records, context) == () def test_runtime_observation_mode_can_only_be_strengthened() -> None: diff --git a/tests/unit/test_zmq_execution_server.py b/tests/unit/test_zmq_execution_server.py index 51ab963ed3..45e8070fa3 100644 --- a/tests/unit/test_zmq_execution_server.py +++ b/tests/unit/test_zmq_execution_server.py @@ -97,6 +97,16 @@ def test_zmq_execution_context_seeds_saved_global_config_for_compilation() -> No "/tmp/runtime-observation.pkl", RuntimeObservationMode.MERGE_INTO_PARENT, ), + ( + RuntimeObservationMode.MERGE_PLATE_INPUTS, + None, + RuntimeObservationMode.MERGE_PLATE_INPUTS, + ), + ( + RuntimeObservationMode.MERGE_PLATE_INPUTS, + "/tmp/runtime-observation.pkl", + RuntimeObservationMode.MERGE_INTO_PARENT, + ), ( RuntimeObservationMode.MERGE_INTO_PARENT, None, @@ -115,7 +125,10 @@ def test_zmq_auxiliary_params_strengthen_compiled_observation_requirement( else None ) execution_bundle = SimpleNamespace( - requires_parent_runtime_observation=compiled_mode.collects_records + requires_parent_runtime_observation=compiled_mode.collects_records, + requires_full_parent_runtime_observation=( + compiled_mode is RuntimeObservationMode.MERGE_INTO_PARENT + ), ) assert params.runtime_observation_mode_for(execution_bundle) is expected_mode @@ -126,7 +139,10 @@ def test_outcome_export_does_not_strengthen_worker_runtime_value_retention() -> runtime_observation_export_path=Path("/tmp/outcomes.pkl.gz"), runtime_observation_export_scope=ZMQRuntimeObservationExportScope.OUTCOMES, ) - execution_bundle = SimpleNamespace(requires_parent_runtime_observation=False) + execution_bundle = SimpleNamespace( + requires_parent_runtime_observation=False, + requires_full_parent_runtime_observation=False, + ) assert ( params.runtime_observation_mode_for(execution_bundle) From 7dae5cae71d24f49ba2308cfbb20ccacc71a9e28 Mon Sep 17 00:00:00 2001 From: Tristan Simas Date: Tue, 29 Sep 2026 08:19:43 -0400 Subject: [PATCH 3/5] docs: clarify plate transport benchmark provenance (#192) --- .../results/perf_plate_input_transport_20260929/README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/benchmark/results/perf_plate_input_transport_20260929/README.md b/benchmark/results/perf_plate_input_transport_20260929/README.md index e8167b2b10..58ef3dae63 100644 --- a/benchmark/results/perf_plate_input_transport_20260929/README.md +++ b/benchmark/results/perf_plate_input_transport_20260929/README.md @@ -1,6 +1,6 @@ # Transfer only declared plate inputs from worker lanes (2026-09-29) -This report supports [OpenHCS issue #192](https://github.com/OpenHCSDev/openhcs/issues/192). The control contains the single-axis compilation fix in [draft PR #191](https://github.com/OpenHCSDev/openhcs/pull/191). Four-worker observations use `fork`, 16 wells, one native thread per worker, and a fresh client-owned execution server. One-well observations also use a fresh server. The change affects execution and total time; it does not change compilation. +This report supports [OpenHCS issue #192](https://github.com/OpenHCSDev/openhcs/issues/192). The control is integrated commit `cc0615a9f`, which contains the single-axis compilation fix in [draft PR #191](https://github.com/OpenHCSDev/openhcs/pull/191) and separate pending performance changes from PRs #157, #170, and #175. The candidate adds only the plate-input transport change to that integration checkout. The review branch includes #157 as a prerequisite because #191 is not based on it. Four-worker observations use `fork`, 16 wells, one native thread per worker, and a fresh client-owned execution server. One-well observations also use a fresh server. The change affects execution and total time; it does not change compilation. `ExampleColocalization` exposed a **18.8–25.6-second gap** between the last worker completing and the plate spreadsheet starting. Instrumenting the worker pipe showed sequential result serialization and receipt. One four-well lane sent about **1.54 GB** of pickled runtime records: 1.11 GB object labels, 382 MB images, 41 MB measurements, and less than 1 MB relationships. The spreadsheet's compiled artifact inputs require measurements and relationships. The new `MERGE_PLATE_INPUTS` observation mode derives retained artifact types from those compiled inputs. Explicit full-value observation and analysis consolidation still retain every record. Runtime export paths are found before filtering. @@ -28,7 +28,7 @@ The native CellProfiler 4.2.8.1 reference is a separately measured **single-samp `official30_control.csv`, `official30_candidate.csv`, `multiwell.csv`, and `transport_payload.csv` retain the observations; `plot.py` regenerates the figures. The raw runs are under `/home/ts/code/projects/openhcs-benchmark-runs/perf-single-axis-full-candidate-20260929`, `perf-plate-transport-full-candidate-20260929`, `perf-single-axis-multiwell-candidate-20260929`, `perf-plate-transport-candidate-16w-repeat-20260929`, and `perf-plate-transport-imaging-{control,candidate}-20260929`. The saved native CP reference is `benchmark/results/perf_lazy_catalog_20260929/native_cp_summary.csv`. -Seventy-one focused unit tests passed, including exact full-observation and plate-input retention policies. A real ZMQ full-value export and an analysis-consolidation integration test passed. The official30 and both 16-well cases used the ordinary ZMQ benchmark route. +Seventy-six focused unit tests passed on the exact stacked review branch, including full-observation and plate-input retention policies. A real ZMQ full-value export and an analysis-consolidation integration test passed there too. A warmed 16-well Colocalization run on that exact branch measured 7.539 seconds compilation, 33.217 seconds execution, and 43.172 seconds total; its plate CSV matched the integration candidate byte for byte. The official30 and paired 16-well cases used the ordinary ZMQ benchmark route on the integration checkout. Reproduce an observation with: From 75894bd73dabb6a095cd1a80ab72954b19b512ff Mon Sep 17 00:00:00 2001 From: Tristan Simas Date: Tue, 29 Sep 2026 08:21:10 -0400 Subject: [PATCH 4/5] docs: link plate transport benchmark to PR #193 --- benchmark/results/perf_plate_input_transport_20260929/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/benchmark/results/perf_plate_input_transport_20260929/README.md b/benchmark/results/perf_plate_input_transport_20260929/README.md index 58ef3dae63..91eacffed2 100644 --- a/benchmark/results/perf_plate_input_transport_20260929/README.md +++ b/benchmark/results/perf_plate_input_transport_20260929/README.md @@ -1,6 +1,6 @@ # Transfer only declared plate inputs from worker lanes (2026-09-29) -This report supports [OpenHCS issue #192](https://github.com/OpenHCSDev/openhcs/issues/192). The control is integrated commit `cc0615a9f`, which contains the single-axis compilation fix in [draft PR #191](https://github.com/OpenHCSDev/openhcs/pull/191) and separate pending performance changes from PRs #157, #170, and #175. The candidate adds only the plate-input transport change to that integration checkout. The review branch includes #157 as a prerequisite because #191 is not based on it. Four-worker observations use `fork`, 16 wells, one native thread per worker, and a fresh client-owned execution server. One-well observations also use a fresh server. The change affects execution and total time; it does not change compilation. +This report supports [OpenHCS issue #192](https://github.com/OpenHCSDev/openhcs/issues/192) and [draft PR #193](https://github.com/OpenHCSDev/openhcs/pull/193). The control is integrated commit `cc0615a9f`, which contains the single-axis compilation fix in [draft PR #191](https://github.com/OpenHCSDev/openhcs/pull/191) and separate pending performance changes from PRs #157, #170, and #175. The candidate adds only the plate-input transport change to that integration checkout. The review branch includes #157 as a prerequisite because #191 is not based on it. Four-worker observations use `fork`, 16 wells, one native thread per worker, and a fresh client-owned execution server. One-well observations also use a fresh server. The change affects execution and total time; it does not change compilation. `ExampleColocalization` exposed a **18.8–25.6-second gap** between the last worker completing and the plate spreadsheet starting. Instrumenting the worker pipe showed sequential result serialization and receipt. One four-well lane sent about **1.54 GB** of pickled runtime records: 1.11 GB object labels, 382 MB images, 41 MB measurements, and less than 1 MB relationships. The spreadsheet's compiled artifact inputs require measurements and relationships. The new `MERGE_PLATE_INPUTS` observation mode derives retained artifact types from those compiled inputs. Explicit full-value observation and analysis consolidation still retain every record. Runtime export paths are found before filtering. From a5a54b489db51604740e0d92b19dfdc6cb29db4d Mon Sep 17 00:00:00 2001 From: Tristan Simas Date: Tue, 29 Sep 2026 10:27:16 -0400 Subject: [PATCH 5/5] Link measured native plate results from transport report MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Distinguish the historical 16× cold-launch projection from the four-job native CP measurements in PR #197 for issue #196. --- .../README.md | 4 ++-- .../multiwell_execution_and_transfer.png | Bin 79394 -> 81335 bytes .../plot.py | 4 ++-- 3 files changed, 4 insertions(+), 4 deletions(-) diff --git a/benchmark/results/perf_plate_input_transport_20260929/README.md b/benchmark/results/perf_plate_input_transport_20260929/README.md index 91eacffed2..e152b75d4e 100644 --- a/benchmark/results/perf_plate_input_transport_20260929/README.md +++ b/benchmark/results/perf_plate_input_transport_20260929/README.md @@ -1,6 +1,6 @@ # Transfer only declared plate inputs from worker lanes (2026-09-29) -This report supports [OpenHCS issue #192](https://github.com/OpenHCSDev/openhcs/issues/192) and [draft PR #193](https://github.com/OpenHCSDev/openhcs/pull/193). The control is integrated commit `cc0615a9f`, which contains the single-axis compilation fix in [draft PR #191](https://github.com/OpenHCSDev/openhcs/pull/191) and separate pending performance changes from PRs #157, #170, and #175. The candidate adds only the plate-input transport change to that integration checkout. The review branch includes #157 as a prerequisite because #191 is not based on it. Four-worker observations use `fork`, 16 wells, one native thread per worker, and a fresh client-owned execution server. One-well observations also use a fresh server. The change affects execution and total time; it does not change compilation. +This report supports [OpenHCS issue #192](https://github.com/OpenHCSDev/openhcs/issues/192) and [PR #193](https://github.com/OpenHCSDev/openhcs/pull/193). The control is integrated commit `cc0615a9f`, which contains the single-axis compilation fix in [PR #191](https://github.com/OpenHCSDev/openhcs/pull/191) and separate pending performance changes from PRs #157, #170, and #175. The candidate adds only the plate-input transport change to that integration checkout. The review branch includes #157 as a prerequisite because #191 is not based on it. Four-worker observations use `fork`, 16 wells, one native thread per worker, and a fresh client-owned execution server. One-well observations also use a fresh server. The change affects execution and total time; it does not change compilation. `ExampleColocalization` exposed a **18.8–25.6-second gap** between the last worker completing and the plate spreadsheet starting. Instrumenting the worker pipe showed sequential result serialization and receipt. One four-well lane sent about **1.54 GB** of pickled runtime records: 1.11 GB object labels, 382 MB images, 41 MB measurements, and less than 1 MB relationships. The spreadsheet's compiled artifact inputs require measurements and relationships. The new `MERGE_PLATE_INPUTS` observation mode derives retained artifact types from those compiled inputs. Explicit full-value observation and analysis consolidation still retain every record. Runtime export paths are found before filtering. @@ -22,7 +22,7 @@ All **30/30** cases succeeded; **110/110** generated result files matched by rel The plate-level export remained near 15 seconds for Colocalization and 52 seconds for ImagingFlow; the gain comes from worker-result transfer. Both 16-well plate exports matched the control byte for byte. The ImagingFlow candidate's measured process-tree peak memory was slightly higher (14.14 versus 13.72 GB), so this result does not establish a memory reduction. -The native CellProfiler 4.2.8.1 reference is a separately measured **single-sample execution** baseline, projected to 16 wells by multiplication. Its projected 16-well execution is 592.570 seconds for Colocalization and 985.625 seconds for ImagingFlow. Relative to that projection, the candidate execution is 17.69× and 7.82× faster, respectively. These are projections, not native 16-well measurements; the OpenHCS total timer includes server startup and compilation and is not divided by the native execution timer. +The earlier native CellProfiler 4.2.8.1 single-sample `EXECUTE_NATIVE_CP` baseline includes a fresh subprocess launch. Multiplying it by 16 gives **cold-launch projections** of 592.570 seconds for Colocalization and 985.625 seconds for ImagingFlow. Those are not measured native plate runs. [PR #197](https://github.com/OpenHCSDev/openhcs/pull/197) instead measured warm native four-job makespans of **451.878** and **388.431 seconds**, respectively, on the same 16 synthetic wells. Relative to this PR's OpenHCS candidate execution observations, the measured warm native ratios are **13.49×** for Colocalization and **3.08×** for ImagingFlow. The later spreadsheet-folding improvement in PR #195 lowers ImagingFlow OpenHCS execution further to 115.808 seconds, giving a **3.35×** measured ratio. The figure below retains the older projection as a labeled historical reference; PR #197 contains the measured scaling figure and timing-boundary details. ![Multiwell execution and worker-transfer gaps](multiwell_execution_and_transfer.png) diff --git a/benchmark/results/perf_plate_input_transport_20260929/multiwell_execution_and_transfer.png b/benchmark/results/perf_plate_input_transport_20260929/multiwell_execution_and_transfer.png index eec106a63511057953b06974e64f77ba1537b7c6..9f90103a272943b5f59e439ef98bb41c6a3fb88e 100644 GIT binary patch literal 81335 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%0A1*M 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 GfiQvY*ayd}!3g<+ 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 diff --git a/benchmark/results/perf_plate_input_transport_20260929/plot.py b/benchmark/results/perf_plate_input_transport_20260929/plot.py index 40c209066a..aa68f2037f 100644 --- a/benchmark/results/perf_plate_input_transport_20260929/plot.py +++ b/benchmark/results/perf_plate_input_transport_20260929/plot.py @@ -102,13 +102,13 @@ def plot_multiwell() -> None: axes[0].set_xticks( positions, tuple( - f"{label}\nCP projection: {speedup:.1f}×" + f"{label}\nCP cold projection: {speedup:.1f}×" for label, speedup in zip(labels, native_speedups, strict=True) ), ) axes[0].legend(frameon=False) fig.suptitle( - "16 wells, four fork workers; native CP is a 16× one-sample projection" + "16 wells, four fork workers; native CP is a 16× cold-launch projection" ) fig.tight_layout() fig.savefig(ROOT / "multiwell_execution_and_transfer.png", dpi=170)