Exemple #1
0
  @Override
  protected void sgemm(
      char Order,
      char TransA,
      char TransB,
      int M,
      int N,
      int K,
      float alpha,
      INDArray A,
      int lda,
      INDArray B,
      int ldb,
      float beta,
      INDArray C,
      int ldc) {
    A = Shape.toOffsetZero(A);
    B = Shape.toOffsetZero(B);

    DataBuffer aData = A.data();
    DataBuffer bData = B.data();

    float[] cData = getFloatData(C);
    BLAS.getInstance()
        .sgemm(
            String.valueOf(TransA),
            String.valueOf(TransB),
            M,
            N,
            K,
            alpha,
            aData.asFloat(),
            getBlasOffset(A),
            lda,
            bData.asFloat(),
            getBlasOffset(B),
            ldb,
            beta,
            cData,
            getBlasOffset(C),
            ldc);
    setData(cData, C);
  }
Exemple #2
0
  @Override
  protected void zgemm(
      char Order,
      char TransA,
      char TransB,
      int M,
      int N,
      int K,
      IComplexDouble alpha,
      IComplexNDArray A,
      int lda,
      IComplexNDArray B,
      int ldb,
      IComplexDouble beta,
      IComplexNDArray C,
      int ldc) {
    A = (IComplexNDArray) Shape.toOffsetZero(A);
    B = (IComplexNDArray) Shape.toOffsetZero(B);
    C = (IComplexNDArray) Shape.toOffsetZero(C);

    double[] cData = getDoubleData(C);
    NativeBlas.zgemm(
        TransA,
        TransB,
        M,
        N,
        K,
        CpuComplex.getComplexDouble(alpha),
        getDoubleData(A),
        getBlasOffset(A),
        lda,
        getDoubleData(B),
        getBlasOffset(B),
        ldb,
        CpuComplex.getComplexDouble(beta),
        cData,
        getBlasOffset(C),
        ldc);
    setData(cData, C);
  }