/** * ?spr2 performs a rank-2 update of an n-by-n packed symmetric matrix a: * a := alpha*x*y' + alpha*y*x' + a. * * @param order * @param Uplo * @param alpha * @param X * @param Y * @param A */ @Override public void spr2(char order, char Uplo, double alpha, INDArray X, INDArray Y, INDArray A) { if (Nd4j.getExecutioner().getProfilingMode() == OpExecutioner.ProfilingMode.ALL) OpProfiler.getInstance().processBlasCall(false, A, X, Y); // FIXME int cast if (X.data().dataType() == DataBuffer.Type.DOUBLE) { DefaultOpExecutioner.validateDataType(DataBuffer.Type.DOUBLE, A, X, Y); dspr2(order, Uplo, (int) X.length(), alpha, X, X.majorStride(), Y, Y.majorStride(), A); } else { DefaultOpExecutioner.validateDataType(DataBuffer.Type.FLOAT, A, X, Y); sspr2(order, Uplo, (int) X.length(), (float) alpha, X, X.majorStride(), Y, Y.majorStride(), A); } OpExecutionerUtil.checkForAny(A); }
/** * @param order * @param Uplo * @param alpha * @param Ap * @param X * @param beta * @param Y */ @Override public void spmv(char order, char Uplo, double alpha, INDArray Ap, INDArray X, double beta, INDArray Y) { if (Nd4j.getExecutioner().getProfilingMode() == OpExecutioner.ProfilingMode.ALL) OpProfiler.getInstance().processBlasCall(false, Ap, X, Y); // FIXME: int cast if (Ap.data().dataType() == DataBuffer.Type.DOUBLE) { DefaultOpExecutioner.validateDataType(DataBuffer.Type.DOUBLE, X, Y); dspmv(order, Uplo, (int) X.length(), alpha, Ap, X, Ap.majorStride(), beta, Y, Y.majorStride()); } else { DefaultOpExecutioner.validateDataType(DataBuffer.Type.FLOAT, X, Y); sspmv(order, Uplo, (int) X.length(), (float) alpha, Ap, X, Ap.majorStride(), (float) beta, Y, Y.majorStride()); } OpExecutionerUtil.checkForAny(Y); }
/** * @param order * @param Uplo * @param alpha * @param X * @param Y * @param A */ @Override public void syr2(char order, char Uplo, double alpha, INDArray X, INDArray Y, INDArray A) { if (Nd4j.getExecutioner().getProfilingMode() == OpExecutioner.ProfilingMode.ALL) OpProfiler.getInstance().processBlasCall(false, A, X, Y); // FIXME: int cast if (X.data().dataType() == DataBuffer.Type.DOUBLE) { DefaultOpExecutioner.validateDataType(DataBuffer.Type.DOUBLE, A, X, Y); dsyr2(order, Uplo, (int) X.length(), alpha, X, X.majorStride(), Y, Y.majorStride(), A, (int) A.size(0)); } else { DefaultOpExecutioner.validateDataType(DataBuffer.Type.FLOAT, A, X, Y); ssyr2(order, Uplo, (int) X.length(), (float) alpha, X, X.majorStride(), Y, Y.majorStride(), A, (int) A.size(0)); } OpExecutionerUtil.checkForAny(A); }
/** * symv computes a matrix-vector product for a symmetric matrix: * y := alpha*a*x + beta*y. * Here a is an n-by-n symmetric matrix; x and y are n-element vectors, alpha and beta are scalars. * * @param order * @param Uplo * @param alpha * @param A * @param X * @param beta * @param Y */ @Override public void symv(char order, char Uplo, double alpha, INDArray A, INDArray X, double beta, INDArray Y) { if (Nd4j.getExecutioner().getProfilingMode() == OpExecutioner.ProfilingMode.ALL) OpProfiler.getInstance().processBlasCall(false, A, X, Y); // FIXME: int cast if (X.data().dataType() == DataBuffer.Type.DOUBLE) { DefaultOpExecutioner.validateDataType(DataBuffer.Type.DOUBLE, A, X, Y); dsymv(order, Uplo, (int) X.length(), alpha, A, (int) A.size(0), X, X.majorStride(), beta, Y, Y.majorStride()); } else { DefaultOpExecutioner.validateDataType(DataBuffer.Type.FLOAT, A, X, Y); ssymv(order, Uplo, (int) X.length(), (float) alpha, A, (int) A.size(0), X, X.majorStride(), (float) beta, Y, Y.majorStride()); } OpExecutionerUtil.checkForAny(Y); }
/** * performs a rank-1 update of a general m-by-n matrix a: * a := alpha*x*y' + a. * * @param order * @param alpha * @param X * @param Y * @param A */ @Override public void ger(char order, double alpha, INDArray X, INDArray Y, INDArray A) { if (Nd4j.getExecutioner().getProfilingMode() == OpExecutioner.ProfilingMode.ALL) OpProfiler.getInstance().processBlasCall(false, A, X, Y); // FIXME: int cast if (X.data().dataType() == DataBuffer.Type.DOUBLE) { DefaultOpExecutioner.validateDataType(DataBuffer.Type.DOUBLE, A, X, Y); dger(order, (int) A.rows(), (int) A.columns(), alpha, X, X.majorStride(), Y, Y.majorStride(), A, (int) A.size(0)); } else { DefaultOpExecutioner.validateDataType(DataBuffer.Type.FLOAT, A, X, Y); sger(order, (int) A.rows(), (int) A.columns(), (float) alpha, X, X.majorStride(), Y, Y.majorStride(), A, (int) A.size(0)); } OpExecutionerUtil.checkForAny(A); }
/** * sbmv computes a matrix-vector product using a symmetric band matrix: * y := alpha*a*x + beta*y. * Here a is an n-by-n symmetric band matrix with k superdiagonals, x and y are n-element vectors, alpha and beta are scalars. * * @param order * @param Uplo * @param alpha * @param A * @param X * @param beta * @param Y */ @Override public void sbmv(char order, char Uplo, double alpha, INDArray A, INDArray X, double beta, INDArray Y) { if (Nd4j.getExecutioner().getProfilingMode() == OpExecutioner.ProfilingMode.ALL) OpProfiler.getInstance().processBlasCall(false, A, X, Y); // FIXME: int cast if (X.data().dataType() == DataBuffer.Type.DOUBLE) { DefaultOpExecutioner.validateDataType(DataBuffer.Type.DOUBLE, A, X, Y); dsbmv(order, Uplo, (int) X.length(), (int) A.columns(), alpha, A, (int) A.size(0), X, X.majorStride(), beta, Y, (int) Y.majorStride()); } else { DefaultOpExecutioner.validateDataType(DataBuffer.Type.FLOAT, A, X, Y); ssbmv(order, Uplo, (int) X.length(), (int) A.columns(), (float) alpha, A, (int) A.size(0), X, X.majorStride(), (float) beta, Y, Y.majorStride()); } OpExecutionerUtil.checkForAny(Y); }
dgbmv(order, TransA, (int) A.rows(), (int) A.columns(), KL, KU, alpha, A, (int) A.size(0), X, X.majorStride(), beta, Y, Y.majorStride()); } else { DefaultOpExecutioner.validateDataType(DataBuffer.Type.FLOAT, A, X, Y); sgbmv(order, TransA, (int) A.rows(), (int) A.columns(), KL, KU, (float) alpha, A, (int) A.size(0), X, X.majorStride(), (float) beta, Y, Y.majorStride());
/** * tpsv solves a system of linear equations whose coefficients are in a triangular packed matrix. * * @param order * @param Uplo * @param TransA * @param Diag * @param Ap * @param X */ @Override public void tpsv(char order, char Uplo, char TransA, char Diag, INDArray Ap, INDArray X) { if (Nd4j.getExecutioner().getProfilingMode() == OpExecutioner.ProfilingMode.ALL) OpProfiler.getInstance().processBlasCall(false, Ap, X); // FIXME: int cast if (X.data().dataType() == DataBuffer.Type.DOUBLE) { DefaultOpExecutioner.validateDataType(DataBuffer.Type.DOUBLE, X, Ap); dtpsv(order, Uplo, TransA, Diag, (int) X.length(), Ap, X, X.majorStride()); } else { DefaultOpExecutioner.validateDataType(DataBuffer.Type.FLOAT, Ap, X); stpsv(order, Uplo, TransA, Diag, (int) X.length(), Ap, X, X.majorStride()); } OpExecutionerUtil.checkForAny(X); }
/** * spr performs a rank-1 update of an n-by-n packed symmetric matrix a: * a := alpha*x*x' + a. * * @param order * @param Uplo * @param alpha * @param X * @param Ap */ @Override public void spr(char order, char Uplo, double alpha, INDArray X, INDArray Ap) { if (Nd4j.getExecutioner().getProfilingMode() == OpExecutioner.ProfilingMode.ALL) OpProfiler.getInstance().processBlasCall(false, Ap, X); // FIXME: int cast if (X.data().dataType() == DataBuffer.Type.DOUBLE) { DefaultOpExecutioner.validateDataType(DataBuffer.Type.DOUBLE, X); dspr(order, Uplo, (int) X.length(), alpha, X, X.majorStride(), Ap); } else { DefaultOpExecutioner.validateDataType(DataBuffer.Type.FLOAT, X); sspr(order, Uplo, (int) X.length(), (float) alpha, X, X.majorStride(), Ap); } OpExecutionerUtil.checkForAny(Ap); }
/** * tpmv computes a matrix-vector product using a triangular packed matrix. * * @param order * @param Uplo * @param TransA * @param Diag * @param Ap * @param X */ @Override public void tpmv(char order, char Uplo, char TransA, char Diag, INDArray Ap, INDArray X) { if (Nd4j.getExecutioner().getProfilingMode() == OpExecutioner.ProfilingMode.ALL) OpProfiler.getInstance().processBlasCall(false, Ap, X); // FIXME: int cast if (X.data().dataType() == DataBuffer.Type.DOUBLE) { DefaultOpExecutioner.validateDataType(DataBuffer.Type.DOUBLE, X); dtpmv(order, Uplo, TransA, Diag, (int) Ap.length(), Ap, X, X.majorStride()); } else { DefaultOpExecutioner.validateDataType(DataBuffer.Type.FLOAT, X); stpmv(order, Uplo, TransA, Diag, (int) Ap.length(), Ap, X, X.majorStride()); } OpExecutionerUtil.checkForAny(X); }
/** * trmv computes a matrix-vector product using a triangular matrix. * * @param order * @param Uplo * @param TransA * @param Diag * @param A * @param X */ @Override public void trmv(char order, char Uplo, char TransA, char Diag, INDArray A, INDArray X) { if (Nd4j.getExecutioner().getProfilingMode() == OpExecutioner.ProfilingMode.ALL) OpProfiler.getInstance().processBlasCall(false, A, X); // FIXME: int cast if (A.data().dataType() == DataBuffer.Type.DOUBLE) { DefaultOpExecutioner.validateDataType(DataBuffer.Type.DOUBLE, A, X); dtrmv(order, Uplo, TransA, Diag, (int) X.length(), A, (int) A.size(0), X, X.majorStride()); } else { DefaultOpExecutioner.validateDataType(DataBuffer.Type.FLOAT, A, X); strmv(order, Uplo, TransA, Diag, (int) X.length(), A, (int) A.size(0), X, X.majorStride()); } OpExecutionerUtil.checkForAny(X); }
/** * trsv solves a system of linear equations whose coefficients are in a triangular matrix. * * @param order * @param Uplo * @param TransA * @param Diag * @param A * @param X */ @Override public void trsv(char order, char Uplo, char TransA, char Diag, INDArray A, INDArray X) { if (Nd4j.getExecutioner().getProfilingMode() == OpExecutioner.ProfilingMode.ALL) OpProfiler.getInstance().processBlasCall(false, A, X); // FIXME: int cast if (X.data().dataType() == DataBuffer.Type.DOUBLE) { DefaultOpExecutioner.validateDataType(DataBuffer.Type.DOUBLE, A, X); dtrsv(order, Uplo, TransA, Diag, (int) A.length(), A, (int) A.size(0), X, X.majorStride()); } else { DefaultOpExecutioner.validateDataType(DataBuffer.Type.FLOAT, A, X); strsv(order, Uplo, TransA, Diag, (int) A.length(), A, (int) A.size(0), X, X.majorStride()); } OpExecutionerUtil.checkForAny(X); }
/** * syr performs a rank-1 update of an n-by-n symmetric matrix a: * a := alpha*x*x' + a. * * @param order * @param Uplo * @param N * @param alpha * @param X * @param A */ @Override public void syr(char order, char Uplo, int N, double alpha, INDArray X, INDArray A) { if (Nd4j.getExecutioner().getProfilingMode() == OpExecutioner.ProfilingMode.ALL) OpProfiler.getInstance().processBlasCall(false, A, X); // FIXME: int cast if (X.data().dataType() == DataBuffer.Type.DOUBLE) { DefaultOpExecutioner.validateDataType(DataBuffer.Type.DOUBLE, A, X); dsyr(order, Uplo, (int) X.length(), alpha, X, X.majorStride(), A, (int) A.size(0)); } else { DefaultOpExecutioner.validateDataType(DataBuffer.Type.FLOAT, A, X); ssyr(order, Uplo, (int) X.length(), (float) alpha, X, X.majorStride(), A, (int) A.size(0)); } OpExecutionerUtil.checkForAny(A); }
/** * syr2 performs a rank-2 update of an n-by-n symmetric matrix a: * a := alpha*x*y' + alpha*y*x' + a. * * @param order * @param Uplo * @param TransA * @param Diag * @param A * @param X */ @Override public void tbmv(char order, char Uplo, char TransA, char Diag, INDArray A, INDArray X) { if (Nd4j.getExecutioner().getProfilingMode() == OpExecutioner.ProfilingMode.ALL) OpProfiler.getInstance().processBlasCall(false, A, X); // FIXME: int cast if (X.data().dataType() == DataBuffer.Type.DOUBLE) { DefaultOpExecutioner.validateDataType(DataBuffer.Type.DOUBLE, A, X); dtbmv(order, Uplo, TransA, Diag, (int) X.length(), (int) A.columns(), A, (int) A.size(0), X, X.majorStride()); } else { DefaultOpExecutioner.validateDataType(DataBuffer.Type.FLOAT, A, X); stbmv(order, Uplo, TransA, Diag, (int) X.length(), (int) A.columns(), A, (int) A.size(0), X, X.majorStride()); } }
/** * ?tbsv solves a system of linear equations whose coefficients are in a triangular band matrix. * * @param order * @param Uplo * @param TransA * @param Diag * @param A * @param X */ @Override public void tbsv(char order, char Uplo, char TransA, char Diag, INDArray A, INDArray X) { if (Nd4j.getExecutioner().getProfilingMode() == OpExecutioner.ProfilingMode.ALL) OpProfiler.getInstance().processBlasCall(false, A, X); // FIXME: int cast if (X.data().dataType() == DataBuffer.Type.DOUBLE) { DefaultOpExecutioner.validateDataType(DataBuffer.Type.DOUBLE, A, X); dtbsv(order, Uplo, TransA, Diag, (int) X.length(), (int) A.columns(), A, (int) A.size(0), X, X.majorStride()); } else { DefaultOpExecutioner.validateDataType(DataBuffer.Type.FLOAT, A, X); stbsv(order, Uplo, TransA, Diag, (int) X.length(), (int) A.columns(), A, (int) A.size(0), X, X.majorStride()); } }
int dIndex = (int) toSet.offset() + (i * toSet.majorStride()); d[dIndex] = data[count++]; int dIndex = (int) toSet.offset() + (i * toSet.majorStride()); underlyingData.put(dIndex, data[count++]);
int dIndex = (int) toSet.offset() + (i * toSet.majorStride()); d[dIndex] = data[count++]; int dIndex = (int) toSet.offset() + (i * toSet.majorStride()); underlyingData.put(dIndex, data[count++]);
public static INDArray ger(INDArray A, INDArray B, INDArray C, float alpha) { DataTypeValidation.assertFloat(A, B, C); // = alpha * A * transpose(B) + C BLAS.getInstance().sger( A.rows(), // m A.columns(),// n alpha, // alpha A.data().asFloat(), // d_A or x A.majorStride(), // incx B.data().asFloat(), // dB or y B.majorStride(), // incy C.data().asFloat(), // dC or A C.size(0) // lda ); return C; }
/** * @param x * @return */ public static double asum(INDArray x) { if (x.data().dataType() == DataBuffer.Type.FLOAT) { float sum = BLAS.getInstance().sasum(x.length(), x.data().asFloat(), x.offset(), x.majorStride()); return sum; } else { double sum = BLAS.getInstance().dasum(x.length(), x.data().asDouble(), x.offset(), x.majorStride()); return sum; } }
/** * @param x * @return */ public static double asum(INDArray x) { if (x.data().dataType() == DataBuffer.Type.FLOAT) { float sum = BLAS.getInstance().sasum(x.length(), x.data().asFloat(), x.offset(), x.majorStride()); return sum; } else { double sum = BLAS.getInstance().dasum(x.length(), x.data().asDouble(), x.offset(), x.majorStride()); return sum; } }