Add VLBI VDIF recording and metadata post-processing - #843
Conversation
Introduce the sdp.vdif output type to the product configuration model and schema so a VLBI recorder path can be expressed in product configs. This commit also adds focused product-config tests for the new stream type.
Teach the logical graph builder to create a dedicated vlbi.<stream> task for sdp.vdif outputs backed by gpucbf tied-array resampled voltage. The recorder task uses the katsdpvlbi image, computes the jive5ab mode from the upstream stream geometry, and extends the shared VLBI test config so the path is covered by focused graph tests.
Expose vlbimeta.mode through the product configuration model and schema so controllers can choose between disabled, pass-through, and antab post-processing. Keep the coverage narrow by extending only the product-config tests that validate option parsing.
Create a vlbimeta.<stream> post-process task for sdp.vdif outputs and pass the configured mode through to the entrypoint. This also reuses the already-resolved telstate endpoint for batch graphs so vlbimeta can consume capture-block telstate during post-processing.
Add a configurable VLBI recorder protocol to develop options, and use it when generating sdp.vdif recorder tasks. The recorder now requests a CBF interface with multicast and ibverbs metadata so scheduling matches the VLBI data path, and its command exports the assigned interface name for the recorder-side route guard. Focused tests cover option parsing and the generated logical task.
Give each vlbimeta task the vis stream it should read metadata from by selecting the calibrated vis stream when one sdp.cal output is present, and otherwise falling back to a single vis stream. When post-processing is instantiated, pin vlbimeta to the same host that ran the matching VLBI recorder so it can read the capture output locally. Focused tests cover the generated vlbimeta command and dataset-stream selection.
Use the SubarrayProduct node map when pinning vlbimeta to the VLBI recorder host during postprocessing. The previous code mistakenly looked for recorder nodes on CaptureBlock, which caused postprocessing to crash before vlbimeta could launch. Add a focused regression test that enables vlbimeta for a VDIF stream and checks that postprocessing completes and accounts for the extra batch task.
Replace hardcoded batch task counts in the controller postprocess tests with counts derived from the capture block's generated postprocess graph. This keeps the assertions aligned with the configured postprocess tasks when vlbimeta or future batch tasks (thinking ahead to `katsdprfi` here) are added.
| less_resources: | ||
| type: boolean | ||
| default: false | ||
| vlbi_recorder_protocol: |
There was a problem hiding this comment.
I don't see this in the schema document. And once you've added it, it needs to be gated on if version >= "4.8".
There was a problem hiding this comment.
It's still not in the schema document, nor in the signed M1000-0001-009 v4. So you'll probably need an ECP for this.
There was a problem hiding this comment.
Still not addressed as far as I'm aware.
This should NOT be merged as is, as it doesn't implement version 4.8 and does not support the 4.8 features in 4.9 documents. That will come from #843. See NGC-1992.
This should NOT be merged as is, as it doesn't implement version 4.8 and does not support the 4.8 features in 4.9 documents. That will come from #843. See NGC-1992.
This should NOT be merged as is, as it doesn't implement version 4.8 and does not support the 4.8 features in 4.9 documents. That will come from #843. See NGC-1992.
This should NOT be merged as is, as it doesn't implement version 4.8 and does not support the 4.8 features in 4.9 documents. That will come from #843. See NGC-1992.
dc1b393 to
dbd224d
Compare
|
I've pushed follow-up changes to adress review comments:
|
| less_resources: | ||
| type: boolean | ||
| default: false | ||
| vlbi_recorder_protocol: |
There was a problem hiding this comment.
It's still not in the schema document, nor in the signed M1000-0001-009 v4. So you'll probably need an ECP for this.
| """VDIF-ready tied-array-resampled-voltage stream from CBF.""" | ||
|
|
||
| stream_type: ClassVar[str] = "cbf.tied_array_resampled_voltage" | ||
| _valid_src_types: ClassVar[_ValidTypes] = {"gpucbf.tied_array_resampled_voltage"} |
There was a problem hiding this comment.
| _valid_src_types: ClassVar[_ValidTypes] = {"gpucbf.tied_array_resampled_voltage"} | |
| _valid_src_types: ClassVar[_ValidTypes] = {"cbf.tied_array_channelised_voltage"} |
I see M1000-0000-009 incorrectly lists it at cbf.tied_array_resampled_voltage. That'll need fixing.
Addresses the core review comments: cbf.tied_array_resampled_voltage is now an input type, it follows the other CBF input schema pattern, it requires a pair of cbf.tied_array_channelised_voltage sources, and the stream now gets bandwidth/channels/bits/pols from CBF sensors instead of the gpucbf stream model. The redundant VdifStream.__init__ validation was also removed.
1430103 to
7d9d035
Compare
|
Thanks for the detailed reviews. I have reworked the branch to implement your stream-model and schema suggestions.
I also (successfully) ran the branch through in the lab. |
bmerry
left a comment
There was a problem hiding this comment.
Looking much better architecturally.
| less_resources: | ||
| type: boolean | ||
| default: false | ||
| vlbi_recorder_protocol: |
There was a problem hiding this comment.
Still not addressed as far as I'm aware.
Move the VLBI task alongside its friends, clarify the CBF VDIF stream docstring, and correct the new generator test copyright.
`vgpu` labels tied-array resampled-voltage multicast outputs with the vdif port name, while its channelised inputs use spead. The plumbing of `katsdpvlbi` wasn't following this convention, using spead as the stream name. Apply the correct(/vgpu) convention to external cbf.tied_array_resampled_voltage inputs: accept a vdif URL, construct the multicast node with a vdif port, and connect the recorder to the corresponding _vdif endpoint. Also update the fixtures and generator assertions.
bmerry
left a comment
There was a problem hiding this comment.
Code changes look okay, but you've still got this vlbi_recorder_protocol in the implementation that's not defined in the ICD.
|
Great thanks. I suggest that we not make that block this PR, and I'll follow this up as an ICD amendment |
This adds product configuration and controller support for VLBI VDIF recording and postprocessing metadata generation from a gpucbf V-engine.
This branch introduces the
sdp.vdifoutput stream type in product-config schema, wires it through product configuration, and generates the corresponding capture-timekatsdpvlbirecorder task. The post-processing task is scheduled with the capture block, receives telstate context, can run inantab,pass_through, ordisabledmode, and is colocated with the corresponding VLBI recorder. Implements version 4.8 of the product-configure schema. Tested end-to-end in the lab.