CBLAS接口有哪些好的文档资料?

16

有人能推荐一份cblas接口的好参考资料或教程吗?在谷歌上找不到,我找到的所有手册都是关于fortran blas接口的,而随MKL附带的pdf文件只要花费十秒钟就可以搜索到,但并没有什么帮助。

特别是,我很好奇为什么行和列的额外参数;不能使用转置标志已经完成相同的操作吗?这似乎只会给本来就容易出错的接口增加复杂性。


https://www.intel.com/content/www/us/en/docs/onemkl/developer-reference-c/2023-2/blas-routines.html - 0xdeadbeef
2个回答

6
本文介绍如何在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
这表明一切顺利,我们甚至没有错误使用转置矩阵。

2

1
我觉得这个链接失效了 :-\ - Plamen
确认:无法访问该网站。 - Bruce_Warrior

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接