cblas_sgemm 源码讲解
来源:互联网 发布:高考语文 知乎 编辑:程序博客网 时间:2024/06/14 17:57
1:函数原型:
cblas_sgemm(order,transA,transB,M,N,K,ALPHA,A,LDA,B,LDB,BETA,C,LDC);
函数作用:C=alpha*A*B+beta*C
alpha =1,beta =0 的情况下,等于两个矩阵相成。
第一参数 oreder 候选值 有ClasRowMajow 和ClasColMajow 这两个参数决定一维数组怎样存储在内存中,
一般用ClasRowMajow
参数 transA和transB :表示矩阵A,B是否进行转置。候选参数 CblasTrans 和CblasNoTrans.
参数M:表示 A或C的行数。如果A转置,则表示转置后的行数
参数N:表示 B或C的列数。如果B转置,则表示转置后的列数。
参数K:表示 A的列数或B的行数(A的列数=B的行数)。如果A转置,则表示转置后的列数。
参数LDA:表示A的列数,与转置与否无关。
参数LDB:表示B的列数,与转置与否无关。
参数LDC:始终=N
examp1:
#include <vector>#include <iostream>#include "caffe/util/math_functions.hpp"using namespace std;int main() { const int M=4; const int N=2; const int K=3; const float alpha=1; const float beta=0; const int lda=M; const int ldb=K; const int ldc=N; const float A[K*M]={1,2,3,4,5,6,7,8,9,8,7,6}; const float B[N*K]={5,4,3,2,1,0}; float C[M*N]; cblas_sgemm(CblasRowMajor, CblasTrans, CblasTrans, M, N, K, alpha, A, lda, B, ldb, beta, C, ldc); for(int i=0;i<M;i++) { for(int j=0;j<N;j++) { cout<<C[i*N+j]<<" "; } cout<<endl; }」输出
52 7
58 10
64 13
70 16
#include <vector>#include <iostream>#include "caffe/util/math_functions.hpp"using namespace std;int main() { const int M=4; const int N=2; const int K=3; const float alpha=1; const float beta=0; const int lda=K; const int ldb=N; const int ldc=N; const float A[M*K]={1,2,3,4,5,6,7,8,9,8,7,6}; const float B[K*N]={5,4,3,2,1,0}; float C[M*N]; cblas_sgemm(CblasRowMajor, CblasNoTrans, CblasNoTrans, M, N, K, alpha, A, lda, B, ldb, beta, C, ldc); for(int i=0;i<M;i++) { for(int j=0;j<N;j++) { cout<<C[i*N+j]<<" "; } cout<<endl; } }
结果:
14 8
41 26
68 44
67 46
阅读全文
0 0
- cblas_sgemm 源码讲解
- cblas_sgemm cblas_sgemv
- 对函数 cblas_sgemm的说明
- ThreadLocal源码讲解
- spring resource源码讲解
- PID源码讲解
- RequestMappingHandlerAdapter源码讲解
- LinkedBlockingDeque源码讲解
- suricata 源码详细讲解
- LinkedBlockingQueue源码讲解
- ArrayBlockingQueue源码讲解
- IntentService源码实例讲解
- java中HashMap源码讲解
- u-boot 源码分析讲解
- 微信开发源码讲解
- Android系统源码基础知识讲解
- 源码讲解knockout执行过程
- 源码阅读:全方位讲解LongAdder
- 邀请函 | 千视通诚邀您参加2017第十六届深圳安博会
- 探究InnoDB可重复读
- LeetCode 79. Word Search
- 第二阶段velocity框架熟悉
- c语言实现选择排序、冒泡排序、插入排序
- cblas_sgemm 源码讲解
- Spring官网下载所需的jar包
- Mybatis中接收存储过程的 out型参数
- java多线程之wait notify详解,start于run区别,wait与sleep区别一篇通,附例:生产者消费者。
- Java线程池
- js中数字转为整数,可以进行运算,保存两位小数
- MySQL数据库结构同步--基于工具Navicat
- css前端面试题
- 如何解决“app已损坏,打不开。你应该将它移到废纸篓。”