示例
应用程序需要使用KML_RT运行时动态库前,需要libkml_rt.so动态库的位置,正确应该为HPCKit或鲲鹏数学库rpm包安装后kml动态库所在的根目录,如果不在该目录下,将无法正常加载和使用。
以KML_BLAS level3中函数sgemm为例,应用程序编写和头文件的引用方式不变,在编译时使用KML_RT动态库即可。
依赖
#include "kblas.h"
示例
main.c:
int m = 4, k = 3, n = 4, lda = 4, ldb = 3, ldc = 4;
float alpha = 1.0, beta = 2.0;
/*
* A:
* 0.340188, 0.411647, -0.222225,
* -0.105617, -0.302449, 0.053970,
* 0.283099, -0.164777, -0.022603,
* 0.298440, 0.268230, 0.128871,
* B:
* -0.135216, 0.416195, -0.358397, -0.257113,
* 0.013401, 0.135712, 0.106969, -0.362768,
* 0.452230, 0.217297, -0.483699, 0.304177,
* C:
* -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,
*/
float a[12] = {0.340188, -0.105617, 0.283099,
0.298440, 0.411647, -0.302449,
-0.164777, 0.268230, -0.222225,
0.053970, -0.022603, 0.128871};
float b[12] = {-0.135216, 0.013401, 0.452230, 0.416195,
0.135712, 0.217297, -0.358397, 0.106969,
-0.483699, -0.257113, -0.362768, 0.304177};
float c[16] = {-0.343321, -0.099056, -0.370210, -0.391191,
0.498924, -0.281743, 0.012932, 0.339112,
0.112640, -0.203968, 0.137552, 0.024287,
-0.006417, 0.472775, -0.207483, 0.271358};
cblas_sgemm(CblasColMajor,CblasNoTrans,CblasNoTrans, m, n, k, alpha, a, lda, b, ldb, beta, c, ldc);
/*
* Output C:
* -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
*
*/
编译
gcc main.c -o main -I /usr/local/kml/include -L /usr/local/kml/lib -lkml_rt
父主题: 使用说明