<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<style type="text/css" style="display:none;"> P {margin-top:0;margin-bottom:0;} </style>
</head>
<body dir="ltr">
<div class="elementToProof" style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
Hi all,</div>
<div class="elementToProof" style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<br>
</div>
<div class="elementToProof" style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
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:
<a href="https://github.com/difx/difx/blob/c2ac995454fa96de38c651f6eea484b4a5db73ca/libraries/vdifio/src/vdifmux.c#L150" id="OWAc5ea3557-12e4-1262-23d6-bd219c0c32b0" class="OWAAutoLink">
https://github.com/difx/difx/blob/c2ac995454fa96de38c651f6eea484b4a5db73ca/libraries/vdifio/src/vdifmux.c#L150</a>. 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.</div>
<div class="elementToProof" style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<br>
</div>
<div class="elementToProof" style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
Hugh</div>
<div class="elementToProof" style="font-family: Aptos, Aptos_EmbeddedFont, Aptos_MSFontService, Calibri, Helvetica, sans-serif; font-size: 12pt; color: rgb(0, 0, 0);">
<br>
</div>
<div id="appendonsend"></div>
<hr style="display:inline-block;width:98%" tabindex="-1">
<div id="divRplyFwdMsg" dir="ltr"><font face="Calibri, sans-serif" style="font-size:11pt" color="#000000"><b>From:</b> Difx-users <difx-users-bounces@listmgr.nrao.edu> on behalf of Jacob Brooks via Difx-users <difx-users@listmgr.nrao.edu><br>
<b>Sent:</b> 20 February 2025 12:12<br>
<b>To:</b> difx-users@listmgr.nrao.edu <difx-users@listmgr.nrao.edu><br>
<b>Subject:</b> [Difx-users] Multi-thread 4-bit VDIF fails with 'vdifmux() failed with return code -2014' {External}</font>
<div> </div>
</div>
<style type="text/css" style="display:none">
<!--
p
{margin-top:0;
margin-bottom:0}
-->
</style>
<div dir="ltr">
<div class="x_elementToProof" style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif; font-size:12pt; color:rgb(0,0,0)">
Hi all,</div>
<div class="x_elementToProof" style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif; font-size:12pt; color:rgb(0,0,0)">
<br>
</div>
<div class="x_elementToProof" style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif; font-size:12pt; color:rgb(0,0,0)">
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.<br>
<br>
When running in multi-threaded mode, the datastream processes crash with the following message:<br>
<br>
'vdifmux() failed with return code -2014, likely input buffer is too small!'<br>
<br>
I have managed to trace the problem to a check in 'getLowestFrameNumber' in vdifio/src/vdifmux.c. The inequality check in that function:<br>
<br>
'getVDIFNumChannels(vh) != vm->inputChannelsPerThread'</div>
<div class="x_elementToProof" style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif; font-size:12pt; color:rgb(0,0,0)">
<br>
</div>
<div class="x_elementToProof" style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif; font-size:12pt; color:rgb(0,0,0)">
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.</div>
<div class="x_elementToProof" style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif; font-size:12pt; color:rgb(0,0,0)">
<br>
</div>
<div class="x_elementToProof" style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif; font-size:12pt; color:rgb(0,0,0)">
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.</div>
<div class="x_elementToProof" style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif; font-size:12pt; color:rgb(0,0,0)">
<br>
</div>
<div class="x_elementToProof" style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif; font-size:12pt; color:rgb(0,0,0)">
Cheers,</div>
<div class="x_elementToProof" style="font-family:Aptos,Aptos_EmbeddedFont,Aptos_MSFontService,Calibri,Helvetica,sans-serif; font-size:12pt; color:rgb(0,0,0)">
Jake</div>
</div>
</body>
</html>