Details
-
Type:
Story
-
Status: Done
-
Resolution: Done
-
Fix Version/s: None
-
Component/s: pipe_base
-
Labels:
-
Story Points:16
-
Epic Link:
-
Team:Data Release Production
-
Urgent?:No
Description
This ticket was originally about making it so NoWorkFound could be raised inside adjustQuantum, as is already documented to be legal:
The docs for adjustQuantum say that NoWorkFound indicates that a quantum should be pruned: https://github.com/lsst/pipe_base/blob/699de5b7458c89c9c09f5da5995bcc557cd3e7d0/python/lsst/pipe/base/connections.py#L575-L578. However, this is only true at runtime, and not at quantum graph building time where raising this exception will kill the build. For
DM-37383we are finding that the performance overhead of having unpruned quanta is unacceptably slow (partly due to overheads for each quantum at USDF). Fixing this is the most obvious place to make that work faster.I also have volunteered that work on
DM-37383would be a guinea pig for battle testing this new functionality.
But it turns out that problem more-or-less needed a near-complete rewrite of the QG generation code, and I had already been planning a complete rewrite after adding PipelineGraph on DM-33027. That came with a few more goals:
- Get rid of the NamedKeyMapping data structures that made it really hard to handle storage class conversions correctly, and finally handle component datasets correctly.
- Split up independent pipeline subgraphs to divide-and-conquer.
- Define an interface that could address some code duplication in the couple of custom QG-generation reimplementations we have for very special cases downstream.
And then, after doing all that, I saw opportunities to easily add some major optimizations that I've long wanted to do (leading to a daf_butler branch), and Nate Lust added a few more optimization commits as well.
Attachments
Issue Links
- blocks
-
DM-40441 Implement non-QuantumGraph deprecations from RFC-949
- In Progress
-
DM-37383 Add package to support DM processing of camera runs
- Done
- is blocked by
-
DM-40322 Add spatial/temporal bounds hooks for prerequisite lookups
- Done
- is triggered by
-
RFC-949 Deprecate and replace low-level QuantumGraph generation and Pipeline inspection interfaces
- Adopted
- relates to
-
DM-40598 New refcat lookup in QG generation yields incorrect answers for some tracts
- Invalid
-
DM-39950 Benchmark and profile QG generation
- Done
- mentioned in
-
Page Loading...
I started in on this today, and unfortunately found it not as easy as I'd hoped; the existing QG pruning logic expects the pruning to be based on missing input dataset types, not other quanta, and there are subtle reasons why it's hard to retrofit that (they mostly boil down to "QG generation is a mess, and needs some attention that goes beyond fixing things in a hurry"). The good news is that I have already done a lot of a much more solid and complete fix on another branch, but the bad news is that it's backed up behind
DM-33027. So it may be a few more weeks.