[Difx-users] Multi-thread 4-bit VDIF fails with 'vdifmux() failed with return code -2014' {External} {External} {External}
Walter Brisken
wbrisken at nrao.edu
Wed May 21 11:11:56 EDT 2025
Hi Hugh,
It may have been oversight that led to the current code and lack of
support for your mode. Can you create a branch with the implementation
of your fix, or just sent a diff to the list, and I can take a look?
I am pretty sure no one has actually ever used DiFX with VDIF streams
that are both multi-channel per thread and multi-thread, so this may be
new ground you are covering. In theory it should be supported.
Thanks,
Walter
On 5/21/25 08:57, Hugh Garsden via Difx-users wrote:
> Hi all,
>
> Regarding Jake's message below, difx is using multiplexing to combine
> multiple threads into a single thread. However it can only deal with 1
> channel per input thread because that is hardwired in the code. Here:
> https://github.com/difx/difx/blob/c2ac995454fa96de38c651f6eea484b4a5db73ca/libraries/vdifio/src/vdifmux.c#L150
> <https://github.com/difx/difx/blob/c2ac995454fa96de38c651f6eea484b4a5db73ca/libraries/vdifio/src/vdifmux.c#L150>.
> The way to change that is mentioned in comment, which is to call
> setvdifmuxinputchannels(). That's what the vmux program does, and it
> works ok. I'm wondering why difx doesn't do that, and maybe there
> should be a warning about it not doing that. Anyway, that line of code
> is in configurevdifmux() so I've added a call to
> setvdifmuxinputchannels() after configurevdifmux() is called in difx,
> and now the multiplexing is working with more than 1 channel.
>
> Hugh
>
> ------------------------------------------------------------------------
> *From:* Difx-users <difx-users-bounces at listmgr.nrao.edu> on behalf of
> Jacob Brooks via Difx-users <difx-users at listmgr.nrao.edu>
> *Sent:* 20 February 2025 12:12
> *To:* difx-users at listmgr.nrao.edu <difx-users at listmgr.nrao.edu>
> *Subject:* [Difx-users] Multi-thread 4-bit VDIF fails with 'vdifmux()
> failed with return code -2014' {External}
> Hi all,
>
> We're currently trying to get DiFX working with the following setup:
> 4-bit, 2 channel (L + R pols), 2 threads (2 subbands), delivered in
> real time via UDP. It has been working fine up until the point where
> we tried adding a second thread - single-thread VDIF has been working
> for us.
>
> When running in multi-threaded mode, the datastream processes crash
> with the following message:
>
> 'vdifmux() failed with return code -2014, likely input buffer is too
> small!'
>
> I have managed to trace the problem to a check in
> 'getLowestFrameNumber' in vdifio/src/vdifmux.c. The inequality check
> in that function:
>
> 'getVDIFNumChannels(vh) != vm->inputChannelsPerThread'
>
> succeeds as the function returns a value of 2 while
> 'inputChannelsPerThread' has a value of 1. This happens for every
> iteration so vdifmux() fails and returns a -2014 error code.
>
> I'm not sure where to go from here and was hoping someone more
> familiar with DiFX could help out. Hopefully I'm not missing something
> obvious! If you need any more information I haven't provided please do
> ask.
>
> Cheers,
> Jake
>
> _______________________________________________
> Difx-users mailing list
> Difx-users at listmgr.nrao.edu
> https://listmgr.nrao.edu/mailman/listinfo/difx-users
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://listmgr.nrao.edu/pipermail/difx-users/attachments/20250521/a279cb8f/attachment-0001.html>
More information about the Difx-users
mailing list