Class MatrixMatrixMult_FDRM
This class contains various types of matrix matrix multiplication operations for FMatrix1Row.
Two algorithms that are equivalent can often have very different runtime performance. This is because of how modern computers uses fast memory caches to speed up reading/writing to data. Depending on the order in which variables are processed different algorithms can run much faster than others, even if the number of operations is the same.
Algorithms that are labeled as 'reorder' are designed to avoid caching jumping issues, some times at the cost of increasing the number of operations. This is important for large matrices. The straight forward implementation seems to be faster for small matrices.
Algorithms that are labeled as 'aux' use an auxiliary array of length n. This array is used to create a copy of an out of sequence column vector that is referenced several times. This reduces the number of cache misses. If the 'aux' parameter passed in is null then the array is declared internally.
Typically the straight forward implementation runs about 30% faster on smaller matrices and about 5 times slower on larger matrices. This is all computer architecture and matrix shape/size specific.
DO NOT MODIFY. Automatically generated code created by GenerateMatrixMatrixMult_FDRM
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionstatic voidmult_aux(float alpha, FMatrix1Row A, FMatrix1Row B, FMatrix1Row C, @org.jetbrains.annotations.Nullable float[] aux) static voidmult_aux(FMatrix1Row A, FMatrix1Row B, FMatrix1Row C, @org.jetbrains.annotations.Nullable float[] aux) static voidmult_reorder(float alpha, FMatrix1Row A, FMatrix1Row B, FMatrix1Row C) static voidmult_reorder(FMatrix1Row A, FMatrix1Row B, FMatrix1Row C) static voidmult_small(float alpha, FMatrix1Row A, FMatrix1Row B, FMatrix1Row C) static voidmult_small(FMatrix1Row A, FMatrix1Row B, FMatrix1Row C) static voidmultAdd_aux(float alpha, FMatrix1Row A, FMatrix1Row B, FMatrix1Row C, @org.jetbrains.annotations.Nullable float[] aux) static voidmultAdd_aux(FMatrix1Row A, FMatrix1Row B, FMatrix1Row C, @org.jetbrains.annotations.Nullable float[] aux) static voidmultAdd_reorder(float alpha, FMatrix1Row A, FMatrix1Row B, FMatrix1Row C) static voidmultAdd_reorder(FMatrix1Row A, FMatrix1Row B, FMatrix1Row C) static voidmultAdd_small(float alpha, FMatrix1Row A, FMatrix1Row B, FMatrix1Row C) static voidmultAdd_small(FMatrix1Row A, FMatrix1Row B, FMatrix1Row C) static voidmultAddTransA_reorder(float alpha, FMatrix1Row A, FMatrix1Row B, FMatrix1Row C) static voidstatic voidmultAddTransA_small(float alpha, FMatrix1Row A, FMatrix1Row B, FMatrix1Row C) static voidstatic voidmultAddTransAB(float alpha, FMatrix1Row A, FMatrix1Row B, FMatrix1Row C) static voidmultAddTransAB(FMatrix1Row A, FMatrix1Row B, FMatrix1Row C) static voidmultAddTransAB_aux(float alpha, FMatrix1Row A, FMatrix1Row B, FMatrix1Row C, @org.jetbrains.annotations.Nullable float[] aux) static voidmultAddTransAB_aux(FMatrix1Row A, FMatrix1Row B, FMatrix1Row C, @org.jetbrains.annotations.Nullable float[] aux) static voidmultAddTransB(float alpha, FMatrix1Row A, FMatrix1Row B, FMatrix1Row C) static voidmultAddTransB(FMatrix1Row A, FMatrix1Row B, FMatrix1Row C) static voidmultTransA_reorder(float alpha, FMatrix1Row A, FMatrix1Row B, FMatrix1Row C) static voidstatic voidmultTransA_small(float alpha, FMatrix1Row A, FMatrix1Row B, FMatrix1Row C) static voidstatic voidmultTransAB(float alpha, FMatrix1Row A, FMatrix1Row B, FMatrix1Row C) static voidmultTransAB(FMatrix1Row A, FMatrix1Row B, FMatrix1Row C) static voidmultTransAB_aux(float alpha, FMatrix1Row A, FMatrix1Row B, FMatrix1Row C, @org.jetbrains.annotations.Nullable float[] aux) static voidmultTransAB_aux(FMatrix1Row A, FMatrix1Row B, FMatrix1Row C, @org.jetbrains.annotations.Nullable float[] aux) static voidmultTransB(float alpha, FMatrix1Row A, FMatrix1Row B, FMatrix1Row C) static voidmultTransB(FMatrix1Row A, FMatrix1Row B, FMatrix1Row C)
-
Constructor Details
-
MatrixMatrixMult_FDRM
public MatrixMatrixMult_FDRM()
-
-
Method Details
-
mult_reorder
-
mult_small
-
mult_aux
public static void mult_aux(FMatrix1Row A, FMatrix1Row B, FMatrix1Row C, @Nullable @org.jetbrains.annotations.Nullable float[] aux) -
multTransA_reorder
-
multTransA_small
-
multTransAB
-
multTransAB_aux
public static void multTransAB_aux(FMatrix1Row A, FMatrix1Row B, FMatrix1Row C, @Nullable @org.jetbrains.annotations.Nullable float[] aux) -
multTransB
-
multAdd_reorder
-
multAdd_small
-
multAdd_aux
public static void multAdd_aux(FMatrix1Row A, FMatrix1Row B, FMatrix1Row C, @Nullable @org.jetbrains.annotations.Nullable float[] aux) -
multAddTransA_reorder
-
multAddTransA_small
-
multAddTransAB
-
multAddTransAB_aux
public static void multAddTransAB_aux(FMatrix1Row A, FMatrix1Row B, FMatrix1Row C, @Nullable @org.jetbrains.annotations.Nullable float[] aux) -
multAddTransB
-
mult_reorder
-
mult_small
-
mult_aux
public static void mult_aux(float alpha, FMatrix1Row A, FMatrix1Row B, FMatrix1Row C, @Nullable @org.jetbrains.annotations.Nullable float[] aux) -
multTransA_reorder
-
multTransA_small
-
multTransAB
-
multTransAB_aux
public static void multTransAB_aux(float alpha, FMatrix1Row A, FMatrix1Row B, FMatrix1Row C, @Nullable @org.jetbrains.annotations.Nullable float[] aux) -
multTransB
-
multAdd_reorder
-
multAdd_small
-
multAdd_aux
public static void multAdd_aux(float alpha, FMatrix1Row A, FMatrix1Row B, FMatrix1Row C, @Nullable @org.jetbrains.annotations.Nullable float[] aux) -
multAddTransA_reorder
-
multAddTransA_small
-
multAddTransAB
-
multAddTransAB_aux
public static void multAddTransAB_aux(float alpha, FMatrix1Row A, FMatrix1Row B, FMatrix1Row C, @Nullable @org.jetbrains.annotations.Nullable float[] aux) -
multAddTransB
-