The Source for Java Technology Collaboration

Home » java.net Forums » Java Desktop Technologies » JAI

Thread: [JAI] vectorization in java on x86

Welcome, Guest Help
Login Login
Guest Settings Guest Settings
Reply to this Thread Reply to this Thread Search Forum Search Forum Back to Thread List Back to Thread List

Permlink Replies: 3 - Last Post: Sep 29, 2006 11:11 AM by: Ingo Lütkebohle
Ingo Lütkebohle
[JAI] vectorization in java on x86
Posted: Sep 27, 2006 1:44 PM
  Click to reply to this thread Reply

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


James Cheng
Re: [JAI] vectorization in java on x86
Posted: Sep 28, 2006 1:34 PM   in response to: Ingo Lütkebohle
  Click to reply to this thread Reply

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


campbell

Posts: 63
Re: [JAI] vectorization in java on x86
Posted: Sep 28, 2006 2:36 PM   in response to: James Cheng
  Click to reply to this thread Reply

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

Ingo Lütkebohle
Re: [JAI] vectorization in java on x86
Posted: Sep 29, 2006 11:11 AM   in response to: campbell
  Click to reply to this thread Reply

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





 XML java.net RSS