[Sbs_daq] Big endian raw data?
Ole Hansen
ole at jlab.org
Sun Oct 3 14:57:15 EDT 2021
Yes, x86 has byte-swap opcodes. But EVIO isn't using them. Using those
instructions greatly alleviates the CPU cost. I wrote an
assembly-optimized version of the byte-swapping code in the early 2000s,
which I can resurrect, although that was 32-bit assembly, not even using
MMX, let alone SSE instructions. Somehow I would think the EVIO library
should include such optimizations out of the box, like good video codecs do.
Ole
On 3.10.21 at 13:45, Benjamin Raydo wrote:
> Hmm, Dave Abbott can comment on this...but there is an endianess flag
> in the EVIO structure that we should be setting to indicate this - we
> may need to check that we are consistent about this use. Anyhow, does
> x86 have a CPU instruction that can do this swap for you - so it is
> really that much CPU power?
>
> Ben
> ------------------------------------------------------------------------
> *From:* Sbs_daq <sbs_daq-bounces at jlab.org> on behalf of Alexandre
> Camsonne <camsonne at jlab.org>
> *Sent:* Sunday, October 3, 2021 1:19 PM
> *To:* Ole Hansen <ole at jlab.org>
> *Cc:* sbs_daq at jlab.org <sbs_daq at jlab.org>
> *Subject:* [Sbs_daq] [EXTERNAL] Re: Big endian raw data?
> I think we might be able to choose.
>
> Though now we use mostly intel CPU unless it breaks any software
> sounds like little endian would be more efficient. Not sure
> endianness of VTP, it is an ARM processor is it Big Endian ?
>
> Alexandre
>
>
> On Sun, Oct 3, 2021, 13:06 Ole Hansen <ole at jlab.org
> <mailto:ole at jlab.org>> wrote:
>
> Maybe our various front-ends differ in endianness, so we write
> mixed-endian data?!? That would be disastrous since it is not
> supported by EVIO. A file can only be one or the other—a very
> binary view. (I guess EVIO was written before we became
> diversity-aware ;) ).
>
> Ole
>
> On 3.10.21 at 13:03, Andrew Puckett wrote:
>>
>> Hi Ole,
>>
>> This is interesting. The GRINCH data are being read out by the
>> new VETROC modules, I don’t know if they differ from the other
>> modules in terms of “endian-ness”. Maybe a DAQ expert can weigh
>> in here?
>>
>> Andrew
>>
>> *From: *Sbs_daq <sbs_daq-bounces at jlab.org>
>> <mailto:sbs_daq-bounces at jlab.org> on behalf of Ole Hansen
>> <ole at jlab.org> <mailto:ole at jlab.org>
>> *Date: *Sunday, October 3, 2021 at 1:00 PM
>> *To: *sbs_daq at jlab.org <mailto:sbs_daq at jlab.org>
>> <sbs_daq at jlab.org> <mailto:sbs_daq at jlab.org>
>> *Subject: *[Sbs_daq] Big endian raw data?
>>
>> Hi guys,
>>
>> Bradley reported a crash of the replay (actually in EVIO) with
>> /adaq1/data1/sbs/grinch_72.evio.0 (see
>> https://logbooks.jlab.org/entry/3916105
>> <https://logbooks.jlab.org/entry/3916105>).
>>
>> When digging into the cause of this crash, I discovered that
>> these raw data are written in big-endian format. How can this be?
>> I thought the front-ends are Intel processors. Are we taking data
>> with ARM chips that are configured for big-endian mode? Is this a
>> mistake, or is there some plan to it?
>>
>> These big-endian data have to be byte-swapped when processing
>> them on x86, which is what all our compute nodes run. That's a
>> LOT of work. It leads to significant and seemingly completely
>> unnecessary overhead. I.e. we're burning CPU cycles for nothing
>> good, it seems.
>>
>> Please explain.
>>
>> Ole
>>
>
> _______________________________________________
> Sbs_daq mailing list
> Sbs_daq at jlab.org <mailto:Sbs_daq at jlab.org>
> https://mailman.jlab.org/mailman/listinfo/sbs_daq
> <https://mailman.jlab.org/mailman/listinfo/sbs_daq>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://mailman.jlab.org/pipermail/sbs_daq/attachments/20211003/0a2f9867/attachment-0001.html>
More information about the Sbs_daq
mailing list