Discussions
Categories
- 196.8K All Categories
- 2.2K Data
- 238 Big Data Appliance
- 1.9K Data Science
- 450.2K Databases
- 221.7K General Database Discussions
- 3.8K Java and JavaScript in the Database
- 31 Multilingual Engine
- 550 MySQL Community Space
- 478 NoSQL Database
- 7.9K Oracle Database Express Edition (XE)
- 3K ORDS, SODA & JSON in the Database
- 544 SQLcl
- 4K SQL Developer Data Modeler
- 187K SQL & PL/SQL
- 21.3K SQL Developer
- 295.8K Development
- 17 Developer Projects
- 138 Programming Languages
- 292.5K Development Tools
- 107 DevOps
- 3.1K QA/Testing
- 646K Java
- 28 Java Learning Subscription
- 37K Database Connectivity
- 154 Java Community Process
- 105 Java 25
- 22.1K Java APIs
- 138.1K Java Development Tools
- 165.3K Java EE (Java Enterprise Edition)
- 18 Java Essentials
- 160 Java 8 Questions
- 86K Java Programming
- 80 Java Puzzle Ball
- 65.1K New To Java
- 1.7K Training / Learning / Certification
- 13.8K Java HotSpot Virtual Machine
- 94.3K Java SE
- 13.8K Java Security
- 204 Java User Groups
- 24 JavaScript - Nashorn
- Programs
- 437 LiveLabs
- 38 Workshops
- 10.2K Software
- 6.7K Berkeley DB Family
- 3.5K JHeadstart
- 5.7K Other Languages
- 2.3K Chinese
- 171 Deutsche Oracle Community
- 1.1K Español
- 1.9K Japanese
- 232 Portuguese
AVX/AVX2 vector operations in OpenJ9

Hi,
At JavaOne 2017 Intel presented very interesting approach of incorporating AVX2 vector instructions in HotSpot. This will allow Machine Learning and other data-intensive Java applications to utilize specialized AVX/AVX2 instructions to achieve much better performance.
Will OpenJ9 users benefit from this Intel/Oracle collaboration and upcoming Intel's OpenJDK-based vector library
Thank you
Answers
-
At JavaOne 2017 Intel presented very interesting approach of incorporating AVX2 vector instructions in HotSpot. This will allow Machine Learning and other data-intensive Java applications to utilize specialized AVX/AVX2 instructions to achieve much better performance.Will OpenJ9 users benefit from this Intel/Oracle collaboration and upcoming Intel's OpenJDK-based vector library
It's not clear what you mean by 'benefit'.
Do you mean can you actually run/incorporate that vector library into your Java applications? Then yes. IBM has had Java vector libraries available for over a decade.
Do you mean will you get better performance? Hard to say since performance almost ALWAYS depends on exactly 1) WHAT you are doing and 2) HOW you are doing it.
SIMD (Single Instruction Multiple Data) has been available in Intels's (and other) cpus for over a decade.
But in those cpus the data has to be in the cpu memory - typicallly a set of large (64/128 bit) floating point registers and you have to load those registers with the data from another source such as main memory.
So the amount of data that can be operated on in parallel is pretty limited.
Contrast that with how the latest generation of graphics cards, such as NVIDIA, implement SIMD:
https://developer.nvidia.com/cuda-zone
In GPU-accelerated applications, the sequential part of the workload runs on the CPU – which is optimized for single-threaded performance – while the compute intensive portion of the application runs on thousands of GPU cores in parallel. When using CUDA, developers program in popular languages such as C, C++, Fortran, Python and MATLAB and express parallelism through extensions in the form of a few basic keywords.
There are no Java libraries available that support the use of those graphics cards for deep learning applications.
As before the slowest part of the process is loading the data to the graphics card and then moving results back to the cpu/memory main system.
Except those graphics contain gigabytes of memory that can be used in those SIMD operations. CPU and cache memory doesn't even to extend to the GB range.
So you don't have to wait for that library to start getting involved in deep learning. You can get a lower end NVIDIA card for a couple hundred dollars and one of the free Java libraries that can work with it.
You can also use one of the free Java libraries that use C DLLs to interface to the graphics card.