cblas_segmm函数学习

函数定义:

cblas_sgemm(order, transA, transB, M, N, K, ALPHA, A, LDA, B, LDB, BETA, C, LDA);

第一个参数的函数是存储的有限性,有行优先和列优先(c语言是行优先)
第二个参数和第三个参数是是否转置
A矩阵经过transA之后的维度是M×K
B矩阵经过transB之后的维度是K×N
C矩阵的维度是M×N
LDA和LDB是对应矩阵还没变换之前,在主维度方向的维度。(如果是行优先就是列数)。

#include <stdio.h>
#include <cblas.h>

int main() {
  int i, j;
  float a[6]={1,3,5,2,7,8};
  float b[6]={5,3,7,2,4,2};
  float c[6]={0,0,0,0,0,0};
  cblas_sgemm(CblasRowMajor, CblasTrans, CblasTrans, 3, 3, 2, 1.0, a, 3, b, 2, 0.0, c, 3);
  for(i = 0; i < 3; ++i){
    for(j = 0; j < 3; ++j){
      printf("%f ", c[i*3+j]);
    }
    printf("\n");
  }
  return 1;
}

运行结果
这里写图片描述


版权声明:本文为u012235274原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。