Class FlatMatrixF
java.lang.Object
com.github.gbenroscience.parser.turbo.tools.vector.matrix.FlatMatrixF
High-Performance Flat Float Matrix Engine
Optimized for HotSpot C2 Auto-Vectorization (SLP).
* @author GBEMIRO
-
Field Summary
Fields -
Constructor Summary
ConstructorsConstructorDescriptionFlatMatrixF(int rows, int cols) FlatMatrixF(int rows, int cols, float[] data) -
Method Summary
Modifier and TypeMethodDescriptionstatic voidadd(FlatMatrixF A, FlatMatrixF B, FlatMatrixF C) byte[]voidfloatget(int r, int c) booleanstatic voidlayerNorm(FlatMatrixF x, FlatMatrixF gamma, FlatMatrixF beta, FlatMatrixF out, float eps) static FlatMatrixFmatmul(FlatMatrixF A, FlatMatrixF B) static voidmatmul(FlatMatrixF A, FlatMatrixF B, FlatMatrixF C) static FlatMatrixFmatmul(FlatMatrixF A, FlatMatrixF B, FlatMatrixF C, ExecutorService executor) static voidmatmulAddBiasGelu(FlatMatrixF A, FlatMatrixF B, FlatMatrixF bias, FlatMatrixF C) static voidmatmulAddBiasRelu(FlatMatrixF a, FlatMatrixF b, FlatMatrixF bias, FlatMatrixF out) static voidmatmulAddBiasSilu(FlatMatrixF a, FlatMatrixF b, FlatMatrixF bias, FlatMatrixF out) static voidmatmulAddSin(FlatMatrixF A, FlatMatrixF B, FlatMatrixF C, float alpha) FUSED MATMUL + alpha * sin(C) C = A * B + alpha * sin(C)static voidmatmulInPlace(FlatMatrixF A, FlatMatrixF B, FlatMatrixF C) MATMUL IN-PLACE (C += A * B)static FlatMatrixFmhaAttention(FlatMatrixF Q, FlatMatrixF K, FlatMatrixF V, FlatMatrixF output, float scale) Multi-head attention: output = softmax(Q * K^T / sqrt(d_k)) * Vstatic FlatMatrixFmhaAttention(FlatMatrixF Q, FlatMatrixF K, FlatMatrixF V, FlatMatrixF output, float scale, ExecutorService executor) static voidmul(FlatMatrixF A, FlatMatrixF B, FlatMatrixF C) static voidvoidstatic voidrmsNorm(FlatMatrixF x, FlatMatrixF weight, FlatMatrixF out, float eps) voidset(int r, int c, float v) voidstatic voidsoftmaxInPlace(float[] x) voidstatic voidswiGLU(FlatMatrixF gate, FlatMatrixF up, FlatMatrixF out) toString()view(int rowOff, int colOff, int rows, int cols) static FlatMatrixFzeros(int r, int c)
-
Field Details
-
data
public final float[] data -
rows
public final int rows -
cols
public final int cols -
rowStride
public final int rowStride -
offset
public final int offset
-
-
Constructor Details
-
FlatMatrixF
public FlatMatrixF(int rows, int cols) -
FlatMatrixF
public FlatMatrixF(int rows, int cols, float[] data)
-
-
Method Details
-
view
-
get
public float get(int r, int c) -
set
public void set(int r, int c, float v) -
isContiguous
public boolean isContiguous() -
asByteArray
public byte[] asByteArray() -
zeros
-
matmul
-
matmul
-
matmul
public static FlatMatrixF matmul(FlatMatrixF A, FlatMatrixF B, FlatMatrixF C, ExecutorService executor) -
geluInPlace
public void geluInPlace() -
siluInPlace
public void siluInPlace() -
reluInPlace
public void reluInPlace() -
softmaxRowsInPlace
public void softmaxRowsInPlace() -
softmaxInPlace
public static void softmaxInPlace(float[] x) -
add
-
mul
-
matmulAddBiasGelu
-
matmulAddBiasRelu
public static void matmulAddBiasRelu(FlatMatrixF a, FlatMatrixF b, FlatMatrixF bias, FlatMatrixF out) -
matmulAddBiasSilu
public static void matmulAddBiasSilu(FlatMatrixF a, FlatMatrixF b, FlatMatrixF bias, FlatMatrixF out) -
matmulAddSin
FUSED MATMUL + alpha * sin(C) C = A * B + alpha * sin(C) -
matmulInPlace
MATMUL IN-PLACE (C += A * B) -
swiGLU
-
rmsNorm
-
layerNorm
public static void layerNorm(FlatMatrixF x, FlatMatrixF gamma, FlatMatrixF beta, FlatMatrixF out, float eps) -
mhaAttention
public static FlatMatrixF mhaAttention(FlatMatrixF Q, FlatMatrixF K, FlatMatrixF V, FlatMatrixF output, float scale) Multi-head attention: output = softmax(Q * K^T / sqrt(d_k)) * V -
mhaAttention
public static FlatMatrixF mhaAttention(FlatMatrixF Q, FlatMatrixF K, FlatMatrixF V, FlatMatrixF output, float scale, ExecutorService executor) -
randomFill
-
toString
-