<div dir="ltr"><div dir="ltr"><br></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Wed, 22 May 2019 at 22:25, Smith, Barry F. <<a href="mailto:bsmith@mcs.anl.gov">bsmith@mcs.anl.gov</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><br>
> On May 22, 2019, at 11:27 AM, Jed Brown <<a href="mailto:jed@jedbrown.org" target="_blank">jed@jedbrown.org</a>> wrote:<br>> <br>
> Byte swapping to/from big endian for integer types can be written in a<br>
> portable way that compiles to no-op (at least when optimization is on;<br>
> but see [1]), but I don't think that's possible for floating point data.<br>
> Of course we could just compile code for both options and select which<br>
> one to call at run-time.  Since they operate on arrays instead of<br>
> individual values, the dispatch should be negligible.<br>
<br>
    This is a great idea, we should do it. Presumably we just run the test to determine which format the system uses once, the first time we need to byte swap and then reuse the info? <br></blockquote><div><br></div><div>Probably not the prettiest way of doing it, but it works right now for PETSc code: <a href="https://bitbucket.org/petsc/petsc/pull-requests/1698/runtime-endianness-detection/diff">https://bitbucket.org/petsc/petsc/pull-requests/1698/runtime-endianness-detection/diff</a></div><div><br></div></div>-- <br><div dir="ltr" class="gmail_signature"><div dir="ltr"><div>Lisandro Dalcin<br>============<br>Research Scientist<br>Extreme Computing Research Center (ECRC)<br>King Abdullah University of Science and Technology (KAUST)<br><a href="http://ecrc.kaust.edu.sa/" target="_blank">http://ecrc.kaust.edu.sa/</a><br></div></div></div></div>