中文
注册
我要评分
文档获取效率
文档正确性
内容完整性
文档易理解
在线提单
论坛求助
鲲鹏小智

BLAS库函数

根据Java语言的书写风格,矩阵默认使用行主序。

枚举类型

表1描述了KML_JAVA库中BLAS的枚举类型。

表1 BLAS枚举类型及定义

枚举类型

说明

定义

Transpose

定义常规矩阵或共轭矩阵是否进行转置。

public enum Transpose {

NO_TRANS(111),

TRANS(112),

CONJ_TRANS(113),

CONJ_NO_TRANS(114);

}

Uplo

定义使用矩阵的上三角还是下三角部分。

public enum Uplo {

UPPER=121,

LOWER=122;

}

Diag

定义使用矩阵是否为单元矩阵。

public enum Diag {

NON_UNIT=131,

UNIT=132;

}

Side

定义矩阵为左操作还是右操作元素。

public enum Side {

LEFT=141,

RIGHT=142;

}

依赖

import com.huawei.kml.BLAS;

若用户需使用枚举体,请显式声明:

import com.huawei.kml.BLAS.Diag;

import com.huawei.kml.BLAS.Side;

import com.huawei.kml.BLAS.Transpose;

import com.huawei.kml.BLAS.Uplo;

示例

public class DMMTest {
    void testGemm() {
        int sizeM = 4;
        int sizeN = 4;
        int sizeK = 3;
        double[] matrixA = new double[]{ 0.340188, 0.411647, -0.222225, 
                                        -0.105617, -0.302449, 0.053970, 
                                         0.283099, -0.164777, -0.022603, 
                                         0.298440, 0.268230, 0.128871};
        double[] matrixB = new double[]{ -0.135216, 0.416195, -0.358397, -0.257113, 
                                         0.013401, 0.135712, 0.106969, -0.362768, 
                                         0.452230, 0.217297, -0.483699, 0.304177};
        double[] matrixC = new double[]{ -0.343321, 0.498924, 0.112640, -0.006417, 
                                         -0.099056, -0.281743, -0.203968, 0.472775, 
                                         -0.370210, 0.012932, 0.137552, -0.207483, 
                                         -0.391191, 0.339112, 0.024287, 0.271358};
        double alpha = 1.0;
        double beta = 2.0;
        BLAS.dgemm( Transpose.NO_TRANS, Transpose.NO_TRANS, sizeM, sizeN, sizeK, alpha, matrixA, sizeK, matrixB, sizeN, beta, matrixC, sizeN);
    }
}
/* 
     * matrixC: 
     *     -0.827621       1.147010        0.254881        -0.317229 
     *     -0.163476       -0.636762       -0.428542       1.098841 
     *     -0.791128       0.116416        0.166949        -0.434854 
     *     -0.760862       0.866839        -0.092028       0.407877 
     *      */