[openjdk] Vector API

目录

 

一、SIMD today

1.1 x86: MMX, SSE, AVX, AVX2, AVX-512

1.2 ARM: NEON, SVE, SVE2

1.3 POWER: VMX/AltiVec

1.4 MIPS: MSA LASX

二、JVM and SIMD today

2.1 Automatic vectorization of Java code

2.2  JVM intrinsics

2.3 Vector API


一、SIMD today

1.1 x86: MMX, SSE, AVX, AVX2, AVX-512

8 64-bit registers (MMX) to 32 512-bit registers (AVX-512)

1.2 ARM: NEON, SVE, SVE2

32 128-bit registers (NEON) to 32 128-2048-bit in SVE

1.3 POWER: VMX/AltiVec

32 128-bit registers

1.4 MIPS: MSA LASX

32 128-bit registers in  32 128-bit registers in  LASX(only Loongson expand)

 

二、JVM and SIMD today

2.1 Automatic vectorization of Java code

Superword optimizations (-XX:+UseSuperWord)in HotSpot C2 compiler to derive SIMD code from sequential code.

缺点:And applied only to unrolled loops. Superword optimizations can be very brittle doesn’t (and can’t) cover all the use cases.

2.2  JVM intrinsics

e.g., Array copying, filling, and comparison

缺点:Intrinsics are point fixes, not general powerful, lightweight, and flexible high development costs

2.3 Vector API

JEP 338: “Vector API (Incubator)”

reliable way to write performant vectorized code.

int[] A, B, C
for (int i = 0; i < MAX; i++) {
A[i] = B[i] + C[i];
}

equal:

var S = IntVector.SPECIES_PREFERRED;
for (int i = 0; i < MAX; i += S.length()) {
var va = IntVector.fromArray(S, A, i);
var vb = IntVector.fromArray(S, B, i);
var vc = va.add(vb);
vc.intoArray(C, i);
}


 

 

 

Java 8 到 Java 17 的新增特性如下: Java 8 新增特性: - Lambda 表达式 - 方法引用和构造函数引用 - 接口默认方法和静态方法 - Stream API - 新的日期/时间 API - Nashorn JavaScript 引擎 Java 9 新增特性: - 模块化系统 - JShell REPL 工具 - 私有接口方法 - 集合工厂方法 - 改进的 Stream API Java 10 新增特性: - 局部变量类型推断 - G1 垃圾收集器的并行 Full GC Java 11 新增特性: - HTTP Client API - 支持 Unicode 10.0.0 - 基于 Java 9 的模块化系统的改进 - 支持 TLS 1.3 Java 12 新增特性: - Switch 表达式 - 新的字符串方法 - 改进的 Shenandoah 垃圾收集器 Java 13 新增特性: - Text Blocks - Switch 表达式增强 - 改进的 ZGC 垃圾收集器 Java 14 新增特性: - Switch 表达式进一步增强 - instanceof 模式匹配 - Records(预览功能) - 基于 OpenJDK 的移动版 Java 15 新增特性: - Sealed 类型(预览功能) - Records - Pattern 模式匹配(预览功能) - Text Blocks 增强 - 改进的 ZGC 垃圾收集器 Java 16 新增特性: - Records - instanceof 模式匹配增强 - 改进的垃圾收集器 - Vector API(预览功能) Java 17 新增特性: - Sealed 类型 - Pattern 模式匹配 - switch 表达式增强 - 基于 OpenJDK 的移动版增强 - 预期的 ZGC 并发垃圾收集 以上是 Java 8 到 Java 17 的新增特性。值得注意的是,某些特性是通过预览功能引入的,可能在未来的版本中发生变化。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

海棠花败

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值