有人能推荐一份cblas接口的好参考资料或教程吗?在谷歌上找不到,我找到的所有手册都是关于fortran blas接口的,而随MKL附带的pdf文件只要花费十秒钟就可以搜索到,但并没有什么帮助。
特别是,我很好奇为什么行和列的额外参数;不能使用转置标志已经完成相同的操作吗?这似乎只会给本来就容易出错的接口增加复杂性。
有人能推荐一份cblas接口的好参考资料或教程吗?在谷歌上找不到,我找到的所有手册都是关于fortran blas接口的,而随MKL附带的pdf文件只要花费十秒钟就可以搜索到,但并没有什么帮助。
特别是,我很好奇为什么行和列的额外参数;不能使用转置标志已经完成相同的操作吗?这似乎只会给本来就容易出错的接口增加复杂性。
/ 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
这表明一切顺利,我们甚至没有错误使用转置矩阵。