Notes From Austin JUG 2014-04-22

Here are the notes that I took at the April 22, 2014 meeting of the Austin JUG. There were some lightning talks about Java 8. The main presentation was about GPU acceleration on the JVM.

As always, the notes are presented pretty much as I wrote them.

Nashorn: Javascript engine in JDK 8, javascript 5.1
Compiles javascript to bytecode
2x to 10x performance improvement, JSR 292, invoke dynamic
Scripting, command-line tools
Avatar.js is the competitor to Node.js
jjs is the interpreter that comes with JDK

NORM!!! (Norm Richards of the Austin Clojure group gave a talk)
jdeps is a new tool

Date/Time library
A pretty good one now. JodaTime
These objects are immutable
Time and Date APIs are pretty similar

Rob on JavaFX
JDK has a web browser inside it
Netbeans: It can convert inner classes to lambda expressions
Brian Williams raps ‘gin and juice’

GPU and Java 8
Gary Frost
Sumatra: GPU Acceleration of Java
GPUs are ideal for compute intensive, parallel tasks
Ideally nested loops where each pass through loop is independent of others

A kernel is a function

Aparapi was the next step
It was more natural, hid details of converting to OpenCL
It will execute code in a thread pool if you don’t have a GPU

Java 8 offers new APIs for dealing with ‘streams’ of data

IntStream.range(0, in.length)
    .forEach(i -> square[i]=in[i]*in[i]);

For data parallel algorithms, we can request a parallel form of execution

IntStream.range(0, in.length)
    .parallel()
    .forEach(i -> square[i]=in[i]*in[i]);

HSA Foundation: GPU vendors

Aparapi could only use arrays of ints
HSA Sumatra can send Java objects to GPU
Sending stuff back and forth from CPU to GPU is the big challenge

Look at Sumatra and GRAAL OpenJDK repos

Not everything should go on GPU
Look for islands of parallel in sea of sequential

 

Image from “Evangelia”, a 9th century manuscript housed at the Bibliothèque nationale de France. Source gallica.bnf.fr / BnF; image assumed allowed under Fair Use.