Sanjay,
Your help is welcome.
Julien

On Sun, Aug 7, 2016 at 11:03 PM, Sanjay Rao <getsanjay...@live.com> wrote:

> I guess I would be of some help w.r.t Big Endian systems, I in fact want
> to be part of this development and testing work,  quite held-up now for a
> month.
>
> Thanks,
> Sanjay
>
> > From: wesmck...@gmail.com
> > Date: Sat, 6 Aug 2016 17:52:26 -0700
> > Subject: Re: Is there plan to support BigEndian Systems like SUN SPARC
> Hardware ?
> > To: dev@arrow.apache.org
> > CC: emkornfi...@gmail.com; jul...@dremio.com
>
> >
> > I suspect that relaxing the constraint to native endianness (and
> > including this in any IPC/RPC metadata (per ARROW-245) will not cause
> > too many problems. One of the challenges for us will be testing and
> > continuous integration -- what are the options for running the test
> > suite on a regular basis on big endian platforms? I know that in
> > pandas we occasionally ran into esoteric test failures for the PPC /
> > big-endian Debian package builds but for the most part there haven't
> > been any problems.
> >
> > - Wes
> >
> > On Fri, Aug 5, 2016 at 4:39 AM, Sanjay Rao <getsanjay...@live.com>
> wrote:
> > > Some places where explicit check for Little Endian is there-
> > > ./memory/src/main/java/io/netty/buffer/UnsafeDirectLittleEndian.java:
> if (!NATIVE_ORDER || buf.order() != ByteOrder.BIG_ENDIAN)
> {./memory/src/main/java/io/netty/buffer/UnsafeDirectLittleEndian.java:
> throw new IllegalStateException("Arrow only runs on LittleEndian systems.");
> > > Sanjay
> > >> From: pchan...@maprtech.com
> > >> Date: Thu, 4 Aug 2016 17:04:34 -0700
> > >> Subject: Re: Is there plan to support BigEndian Systems like SUN
> SPARC Hardware ?
> > >> To: dev@arrow.apache.org; emkornfi...@gmail.com
> > >> CC: jul...@dremio.com
> > >>
> > >> Drill's assumption of little endian is in the ValueVector code, and
> Arrow
> > >> has inherited the same assertion. (
> > >> https://github.com/apache/arrow/blob/master/java/memory/
> src/main/java/io/netty/buffer/UnsafeDirectLittleEndian.java#L58
> > >> )
> > >>
> > >> In the Java implementation, the underlying Netty implementation
> handles the
> > >> conversion between endianness fairly well, so potentially this assert
> can
> > >> be removed from here and Drill can move this higher up in the Drill
> code.
> > >>
> > >>
> > >> Parth
> > >>
> > >> On Thu, Aug 4, 2016 at 1:14 PM, Micah Kornfield <
> emkornfi...@gmail.com>
> > >> wrote:
> > >>
> > >> > Hi Julien,
> > >> > Thats the theory. I don't think that there is anything in the C++
> code
> > >> > base that should break but we don't have access to hardware to
> verify that.
> > >> >
> > >> > The java Arrow code currently asserts that it is running on a
> little endian
> > >> > machine. I did a very quick scan of the Java code and didn't see
> anything
> > >> > there would break on a big-endian system, but according to at least
> one
> > >> > person who is working on Drill, it seems that Drill assumes little
> > >> > endianness (I don't know if this is in Arrow/ValueVector code or it
> is
> > >> > higher up the stack in the Drill code).
> > >> >
> > >> > Thanks,
> > >> > Micah
> > >> >
> > >> >
> > >> > On Thu, Aug 4, 2016 at 11:36 AM, Julien Le Dem <jul...@dremio.com>
> wrote:
> > >> >
> > >> > > So it sounds like right now it just works as long as there are no
> > >> > > inter-system communication (with different endianness) because
> both java
> > >> > > and c++ code just use the underlying endianness.
> > >> > > Is that correct?
> > >> > >
> > >> > >
> > >> > > On Thu, Aug 4, 2016 at 11:17 AM, Micah Kornfield <
> emkornfi...@gmail.com>
> > >> > > wrote:
> > >> > >
> > >> > >> Hi Sanjay,
> > >> > >> I think we are trying to work that out now. As you've seen with
> some of
> > >> > >> you initial investigation we have no coverage for big-endian
> machines
> > >> > yet.
> > >> > >> But in the long run, we should be able to make it work (it seems
> like
> > >> > >> there
> > >> > >> might be some difference of opinion on how to make it work).
> > >> > >>
> > >> > >> Thanks,
> > >> > >> Micah
> > >> > >>
> > >> > >> On Mon, Aug 1, 2016 at 11:16 AM, Sanjay Rao <
> getsanjay...@live.com>
> > >> > >> wrote:
> > >> > >>
> > >> > >> > Hi Wes, Hi Micah,
> > >> > >> > I understood what you meant, so point 2. Arrow working with
> Big Endian
> > >> > >> > machine to Big Endian shouldn't be an issue right ?
> > >> > >> > Please confirm.
> > >> > >> > Thanks,Sanjay
> > >> > >> > > From: wesmck...@gmail.com
> > >> > >> > > Date: Mon, 1 Aug 2016 11:07:07 -0700
> > >> > >> > > Subject: Re: Is there plan to support BigEndian Systems like
> SUN
> > >> > SPARC
> > >> > >> > Hardware ?
> > >> > >> > > To: dev@arrow.apache.org; emkornfi...@gmail.com
> > >> > >> > >
> > >> > >> > > hey Micah,
> > >> > >> > >
> > >> > >> > > On Mon, Aug 1, 2016 at 11:02 AM, Micah Kornfield <
> > >> > >> emkornfi...@gmail.com>
> > >> > >> > wrote:
> > >> > >> > > > Hi Wes,
> > >> > >> > > > The point I was trying to argue from an earlier thread is
> that the
> > >> > >> most
> > >> > >> > > > common cases for relocation are:
> > >> > >> > > > 1. Little endian machine to little endian machine (most
> likely
> > >> > same
> > >> > >> > > > machine)
> > >> > >> > > > 2. big endian machine to big endian machine (most likely
> same
> > >> > >> machine)
> > >> > >> > > > 3. big endian machine to little endian machine or vice
> versa
> > >> > >> > > >
> > >> > >> > > > The purpose of the metadata would be to make use-cases 1
> and 2
> > >> > >> possible
> > >> > >> > > > without byte-swapping. Use case 3 would obviously require
> byte
> > >> > >> > swapping
> > >> > >> > > > but for an initial implementation the code could simply
> indicate
> > >> > >> that
> > >> > >> > it is
> > >> > >> > > > not supported.
> > >> > >> > > >
> > >> > >> > > > This seems less complex to me than actually implementing
> any sort
> > >> > of
> > >> > >> > > > byte-swapping logic while still supporting the widest
> variety of
> > >> > >> > hardware
> > >> > >> > > > with the same code for the most common use-cases.
> > >> > >> > >
> > >> > >> > > This makes sense. My comments were for the situation that a
> big
> > >> > endian
> > >> > >> > > system would be exposing memory to an unknown consumer -- for
> > >> > example,
> > >> > >> > > if we implemented an RPC wire format for Arrow memory, then
> in
> > >> > general
> > >> > >> > > a big endian system would need to send little-endian
> integers to an
> > >> > >> > > arbitrary receiver. I'm not sure the best way to provide for
> easy
> > >> > >> > > native-endianness support for cases 1/2, but trying to fully
> solve
> > >> > >> > > this problem now seems premature until we've established
> some of
> > >> > these
> > >> > >> > > tools (so long as we haven't painted ourselves into a
> corner).
> > >> > >> > >
> > >> > >> > > - Wes
> > >> > >> > >
> > >> > >> > > >
> > >> > >> > > > Thanks,
> > >> > >> > > > Micah
> > >> > >> > > >
> > >> > >> > > > P.S. If anybody can provide pointers I'd be interested to
> > >> > understand
> > >> > >> > which
> > >> > >> > > > pieces of the java code make assumptions about
> little-endianness.
> > >> > >> >
> > >> > >> >
> > >> > >>
> > >> > >
> > >> > >
> > >> > >
> > >> > > --
> > >> > > Julien
> > >> > >
> > >> >
> > >
>



-- 
Julien

Reply via email to