|
Replies:
3
-
Last Post:
Sep 29, 2006 11:11 AM
by: Ingo Lütkebohle
|
|
|
|
|
|
|
[JAI] vectorization in java on x86
Posted:
Sep 27, 2006 1:44 PM
|
|
|
Hi,
the recent discussion of JAI native acceleration for Mac OS X reminded me of something related: Is there a way to have the JIT "vectorize" certain statements, that is, compile bytecode to SIMD instructions based on whatever processor support is available (e.g., MMX, SSE, whatever AMD has got...).
There has been research into something like this for quite a while, e.g. see this workshop page from 1999 (search for vectorization): http://www.csrd.uiuc.edu/ics99/tut1p.html
I also found a post from 2005 by Chris Campbell (cc'ed) that something like this has been implemented for Sparc/VIS but not for x86 yet. Any news on x86 implementations? It would really kick butt 
cheers,
-- Dipl.-Inform. Ingo Lütkebohle Faculty of Technology Bielefeld University http://www.techfak.uni-bielefeld.de/~iluetkeb/
Fingerprint 3187 4DEC 47E6 1B1E 6F4F 57D4 CD90 C164 34AD CE5B
--------------------------------------------------------------------- To unsubscribe, e-mail: interest-unsubscribe@jai.dev.java.net For additional commands, e-mail: interest-help@jai.dev.java.net
|
|
|
|
|
|
|
Re: [JAI] vectorization in java on x86
Posted:
Sep 28, 2006 1:34 PM
in response to: Ingo Lütkebohle
|
|
|
Hi Ingo,
> the recent discussion of JAI native acceleration for Mac OS X reminded > me of something related: Is there a way to have the JIT "vectorize" > certain statements, that is, compile bytecode to SIMD instructions > based on whatever processor support is available (e.g., MMX, SSE, > whatever AMD has got...). > > There has been research into something like this for quite a while, > e.g. see this workshop page from 1999 (search for vectorization): > http://www.csrd.uiuc.edu/ics99/tut1p.html > > I also found a post from 2005 by Chris Campbell (cc'ed) that something > like this has been implemented for Sparc/VIS but not for x86 yet. Any > news on x86 implementations? It would really kick butt 
Chris might have a better answer to your question. In the meantime, I found this RFE in the bug database:
http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=6340864
Regards, -James
--------------------------------------------------------------------- To unsubscribe, e-mail: interest-unsubscribe@jai.dev.java.net For additional commands, e-mail: interest-help@jai.dev.java.net
|
|
|
|
|
|
|
|
Re: [JAI] vectorization in java on x86
Posted:
Sep 28, 2006 2:36 PM
in response to: James Cheng
|
|
|
Hmm, do you have a link to that post? I don't specifically remember the context.
HotSpot already does inline a number of operations (e.g. trig functions) using vectorized machine instructions (SSE2, VIS) when available.
There is some experimental work happening on the HotSpot team in the area of "auto-vectorization", which is essentially what you describe. It locates Java code that is ripe for vectorization and then produces the most optimal SIMD instructions at the machine level. It looks promising but so far no definite release plans; hopefully we'll see some of it in the JDK 7 timeframe.
I've been doing some similar investigation on the Java 2D and Image I/O front to see if we could leverage this work, but that's even more of a research project at this point.
Thanks, Chris
|
|
|
|
|
|
|
|
Re: [JAI] vectorization in java on x86
Posted:
Sep 29, 2006 11:11 AM
in response to: campbell
|
|
|
2006/9/28, jai-interest@javadesktop.org <jai-interest@javadesktop.org>: > Hmm, do you have a link to that post? I don't specifically remember the context.
It was on the Java2d-Interest list: http://archives.java.sun.com/cgi-bin/wa?A2=ind0505&L=java2d-interest&P=2305
> HotSpot already does inline a number of operations (e.g. trig functions) using vectorized machine instructions (SSE2, VIS) when available.
Is this really SIMD or "just" using the faster trig functions of the SS2 unit?
> There is some experimental work happening on the HotSpot team in the area of "auto-vectorization", which is essentially what you describe. It locates Java code that is ripe for vectorization and then produces the most optimal SIMD instructions at the machine level. It looks promising but so far no definite release plans; hopefully we'll see some of it in the JDK 7 timeframe.
That sounds pretty cool, if a bit uncertain However, what I'm wondering about is the "auto-" part. I'd be perfectly happing putting the a hint to use a vectorized operation in manually in some way and I'd guess that would be easier to support in the JIT than auto-vectorization. Is there some reason that it's not done that way?
Cheers,
-- Dipl.-Inform. Ingo Lütkebohle Faculty of Technology Bielefeld University http://www.techfak.uni-bielefeld.de/~iluetkeb/
Fingerprint 3187 4DEC 47E6 1B1E 6F4F 57D4 CD90 C164 34AD CE5B
--------------------------------------------------------------------- To unsubscribe, e-mail: interest-unsubscribe@jai.dev.java.net For additional commands, e-mail: interest-help@jai.dev.java.net
|
|
|
|
|