有人可以为cblas界面推荐一个好的参考或教程吗?谷歌上没有任何内容,我发现的所有手册页都是针对fortran blas界面的,而且MKL附带的pdf字面上需要10秒才能搜索到并且无用。
特别是,我很好奇为什么行与列专业有额外的参数;使用转置标志不能实现相同的操作吗?看起来额外的参数只会增加已经容易出错的界面的复杂性。
答案 0 :(得分:3)
intro_cblas的irix手册页很不错:
答案 1 :(得分:3)
本文通过一个简单示例演示如何在C中使用cblas(和其他):http://www.seehuhn.de/pages/linear
如果网站出现故障,我已经引用了下面的相关部分。
使用BLAS
为了测试BLAS例程,我们想要执行简单的矩阵向量乘法。读取文件blas2-paper.ps.gz,我们发现相应的Fortran函数的名称是DGEMV。文本blas2-paper.ps.gz也解释了这个函数的参数的含义。在cblas.ps.gz中,我们发现相应的C函数名称是cblas_dgemv。以下示例使用此函数计算矩阵向量乘积
/ 3 1 3 \ / -1 \
| 1 5 9 | * | -1 |.
\ 2 6 5 / \ 1 /
示例文件testblas.c:
#include <stdio.h>
#include <cblas.h>
double m[] = {
3, 1, 3,
1, 5, 9,
2, 6, 5
};
double x[] = {
-1, -1, 1
};
double y[] = {
0, 0, 0
};
int
main()
{
int i, j;
for (i=0; i<3; ++i) {
for (j=0; j<3; ++j) printf("%5.1f", m[i*3+j]);
putchar('\n');
}
cblas_dgemv(CblasRowMajor, CblasNoTrans, 3, 3, 1.0, m, 3,
x, 1, 0.0, y, 1);
for (i=0; i<3; ++i) printf("%5.1f\n", y[i]);
return 0;
}
要编译此程序,我们使用以下命令。
cc testblas.c -o testblas -lblas -lm
此测试程序的输出是
3.0 1.0 3.0 1.0 5.0 9.0 2.0 6.0 5.0 -1.0 3.0 -3.0
表明一切正常,我们甚至没有错误地使用转置矩阵。