Thanks for letting me know.

If we need to embed C++ binaries (.so files) inside java,
snappy-java's approach https://github.com/xerial/snappy-java would be
useful,
which bundles .so files built for several OS/CPU architectures, and loads
one of them at run-time.

Btw, JVM is smart enough to replace Long.bitCount(long) (popcount) into a
corresponding CPU operation.
No JNI is necessary for this.


On Wed, Feb 24, 2016 at 1:11 PM, Wes McKinney <w...@cloudera.com> wrote:

> I will soon need some SIMD-enabled algorithms for hashing and
> bitmap-related stuff like popcount in the C++ implementation; we might
> prioritize a batchy JNI interface to Arrow C++ to use for cases where
> the JNI overhead is worth paying from the Java side.
>
> On Wed, Feb 24, 2016 at 11:30 AM, Jacques Nadeau <jacq...@apache.org>
> wrote:
> > The short answer is the JVM is horrible at SIMD. It does a few
> > optimizations when working with primitive arrays but beyond that, you're
> > basically stuck working outside the JVM. The key for Arrow is that the
> > overhead of stepping out of the JVM can be amortized across all records
> in
> > a batch. I hope to contribute some examples of this cross use with
> > benchmarks shortly but would love it if others also did some work here.
> >
> > On Wed, Feb 24, 2016 at 2:22 AM, Taro L. Saito <l...@xerial.org> wrote:
> >
> >> Hi,
> >>
> >> I have just started looking at the java code of Arrow. So far what I can
> >> found is:
> >>  - Code template is used to generate efficient codes for reading/writing
> >> fixed bit-length value vectors
> >>  - Unsafe class will be used to accelerate raw memory access within
> >> ByteBuffer
> >>  - ValueHolder class is used to avoid object construction costs
> >>
> >> msgpack-java (https://github.com/msgpack/msgpack-java) is also using
> >> similar techniques, so these optimizations are totally make sense.
> >>
> >> But I still cannot find where SIMD operations will work effectively.
> >> Using JNI to invoke SIMD ops will have non-negligible overhead. So my
> guess
> >> is Arrow will rely on some JVM optimization.
> >>
> >> Could you tell me how SIMD operations will be used in Arrow java?
> >> Thanks in advance,
> >> --
> >> Taro L. Saito
> >> http://xerial.org/leo
> >>
>



-- 
Taro L. Saito
http://xerial.org/leo

Reply via email to