Slide 21
Slide 21 text
全部Javaで書く
● Jlama
● llama2.java
● Foreign Memory APIとVector API
● 基本型を定義できるProject Valhallaが必要
// matmul
final int SIMD_SIZE = SPECIES.length();
final long FLOAT_SIZE = ValueLayout.JAVA_FLOAT.byteSize();
FloatVector val = FloatVector.zero(SPECIES);
for (int j = 0; j < n; j+=SIMD_SIZE) {
FloatVector a = FloatVector.fromMemorySegment(
SPECIES, w, (i * n + j + 0*SIMD_SIZE) * FLOAT_SIZE, ByteOrder.LITTLE_ENDIAN);
FloatVector b = FloatVector.fromArray(SPECIES, x, j + 0*SIMD_SIZE);
val = a.fma(b, val);
}
xout[i] = val.reduceLanes(VectorOperators.ADD);