【转】常用 blas 函数
原作者:huashiyiqike 原文地址:http://www.cnblogs.com/huashiyiqike/p/3886670.html
Y=alpha * X +beta*Y
template <> void caffe_cpu_axpby<float>(const int N, const float alpha, const float* X,const float beta, float* Y) {cblas_saxpby(N, alpha, X, 1, beta, Y, 1); }template <> void caffe_cpu_axpby<double>(const int N, const double alpha, const double* X,const double beta, double* Y) {cblas_daxpby(N, alpha, X, 1, beta, Y, 1); }
cblas_dscal(N, beta, Y, incY); Y=Y*beta
cblas_daxpy(N, alpha, X, incX, Y, incY); Y= (alpha * X) + Y)
Y=alpha * X + Y
template <> void caffe_axpy<float>(const int N, const float alpha, const float* X,float* Y) { cblas_saxpy(N, alpha, X, 1, Y, 1); }template <> void caffe_axpy<double>(const int N, const double alpha, const double* X,double* Y) { cblas_daxpy(N, alpha, X, 1, Y, 1); }
DEFINE_VSL_BINARY_FUNC(Add, y[i] = a[i] + b[i]); DEFINE_VSL_BINARY_FUNC(Sub, y[i] = a[i] - b[i]); DEFINE_VSL_BINARY_FUNC(Mul, y[i] = a[i] * b[i]); DEFINE_VSL_BINARY_FUNC(Div, y[i] = a[i] / b[i]);template <> void caffe_add<float>(const int n, const float* a, const float* b, float* y) { vsAdd(n, a, b, y); }template <> void caffe_add<double>(const int n, const double* a, const double* b, double* y) { vdAdd(n, a, b, y); }
y=x;
template <> void caffe_copy<float>(const int N, const float* X, float* Y) {cblas_scopy(N, X, 1, Y, 1); }template <> void caffe_copy<double>(const int N, const double* X, double* Y) {cblas_dcopy(N, X, 1, Y, 1); }template <> void caffe_gpu_copy<float>(const int N, const float* X, float* Y) {CUBLAS_CHECK(cublasScopy(Caffe::cublas_handle(), N, X, 1, Y, 1)); }template <> void caffe_gpu_copy<double>(const int N, const double* X, double* Y) {CUBLAS_CHECK(cublasDcopy(Caffe::cublas_handle(), N, X, 1, Y, 1)); }
Computes alpha*x*y' + A.
cblas_sger Multiplies vector X by the transform of vector Y, then adds matrix A (single precison).
Multiplies vector X by the transform of vector Y, then adds matrix A (single precison).
void cblas_sger (
const enum CBLAS_ORDER Order,
const int M,
const int N,
const float alpha,
const float *X,
const int incX,
const float *Y,
const int incY,
float *A,
const int lda
);
Y(vetor)←αAX + βY
This function multiplies A * X (after transposing A, if needed) and multiplies the resulting matrix by alpha.
It then multiplies vector Y by beta. It stores the sum of these two products in vector Y.
template <> void caffe_cpu_gemv<float>(const CBLAS_TRANSPOSE TransA, const int M,const int N, const float alpha, const float* A, const float* x,const float beta, float* y) {cblas_sgemv(CblasRowMajor, TransA, M, N, alpha, A, N, x, 1, beta, y, 1); }
C(matrix)←αAB + βC
template<typename T> void gpu_multmat(T* A, T* B, T* C, int M,int K,int N){const T alpha = 1,beta=0;caffe_gpu_gemm(CblasNoTrans,CblasNoTrans,M,N,K,alpha,A,B,beta,C); }
template<> void caffe_cpu_gemm<float>(const CBLAS_TRANSPOSE TransA,const CBLAS_TRANSPOSE TransB, const int M, const int N, const int K,const float alpha, const float* A, const float* B, const float beta,float* C) {int lda = (TransA == CblasNoTrans) ? K : M;int ldb = (TransB == CblasNoTrans) ? N : K;cblas_sgemm(CblasRowMajor, TransA, TransB, M, N, K, alpha, A, lda, B,ldb, beta, C, N); }
A=M*N B=M*KC=A'*B N M K
template<typename T> void cpu_multTmat(T* A, T* B, T* C, int M,int K,int N){const T alpha = 1,beta=0;caffe_cpu_gemm(CblasTrans,CblasNoTrans,M,N,K,alpha,A,B,beta,C);// cblas_dgemm(CblasRowMajor, CblasNoTrans, CblasNoTrans, M, N, K, alpha, A, M, B, K, beta, C, M); }
A=M*N B=N*K
C=A*B M N K
template<typename T> void cpu_multmat(T* A, T* B, T* C, int M,int K,int N){const T alpha = 1,beta=0;caffe_cpu_gemm(CblasNoTrans,CblasNoTrans,M,N,K,alpha,A,B,beta,C);// cblas_dgemm(CblasRowMajor, CblasNoTrans, CblasNoTrans, M, N, K, alpha, A, M, B, K, beta, C, M); }
转载于:https://www.cnblogs.com/gkwang/p/4365559.html
【转】常用 blas 函数相关推荐
- jQuery中常用的函数方法总结
jQuery中为我们提供了很多有用的方法和属性,自己总结的一些常用的函数,方法.个人认为在www.21kaiyun.com的紫微斗数星座在线排盘开发中会比较常用的,仅供大家学习和参考. 事件处理 re ...
- R语言广义线性模型函数GLM、广义线性模型(Generalized linear models)、GLM函数的语法形式、glm模型常用函数、常用连接函数、逻辑回归、泊松回归、系数解读、过散度分析
R语言广义线性模型函数GLM.广义线性模型(Generalized linear models).GLM函数的语法形式.glm模型常用函数.常用连接函数.逻辑回归.泊松回归.系数解读.过散度分析 目录
- R语言常用sys函数汇总:sys.chmod、Sys.Date、Sys.time、Sys.getenv、Sys.getlocale、sys.getpid、sys.glob、sys.info等
R语言常用sys函数汇总:sys.chmod.Sys.Date.Sys.time.Sys.getenv.Sys.getlocale.sys.getpid.sys.glob.sys.info等 目录
- mysql的聚合函数综合案例_MySQL常用聚合函数详解
一.AVG AVG(col) 返回指定列的平均值 二.COUNT COUNT(col) 返回指定列中非NULL值的个数 三.MIN/MAX MIN(col):返回指定列的最小值 MAX(col):返回 ...
- excel中最常用的30个函数_最常用日期函数汇总excel函数大全收藏篇
在我们的实际工作中,经常需要用到日期函数.日期函数那么多,你还只会用函数TODAY吗?那你就OUT了.今天一起来看下常用日期函数的用法! 1.DATE 函数DATE:返回在日期时间代码中代表日期的数字 ...
- MapInfo中常用查询函数及用法
MapInfo中常用查询函数及用法: 函数用途 语法 备注 图层中选点 Str$(obj)="point": Str(String)表示字符串:point表示点: 图层中选线 St ...
- loadrunner写脚本常用C函数
loadrunner写脚本常用C函数 strcat的串连两个字串. strchr返回指向第一次出现的字符串中的字符. STRCMP比较两个字符串来确定的字母顺序. STRCPY一个字符串复制到另一个地 ...
- linux c数字转字符串函数,Linux常用C函数—字符串转换篇
Linux 常用C 函数-字符串转换篇 atof (将字符串转换成浮点型数) 相关函数 atoi ,atol ,strtod ,strtol ,strtoul 定义函数 double atof(con ...
- SQL常用字符串函数
SQL常用字符串函数 一.字符转换函数 1.ASCII() 返回字符表达式最左端字符的ASCII 码值.在ASCII()函数中,纯数字的字符串可不用''括起来,但含其它字符的字符串必须用''括起来使用 ...
- SQL Server几个常用Date函数(二)
在上一节SQL Server几个常用Date函数(一)中我们介绍了下表中前两个date函数,本节继续学习下面三个函数. 函数 描述 GETDATE() 返回当前日期和时间 CONVERT() 用不同的 ...
最新文章
- 在线作图|小基因组——线粒体基因组圈图
- 【转】C++面试题(四)——智能指针的原理和实现
- Grunt安装中遇到的问题汇总
- 基于python物流管理系统毕业设计-长白高校邦数据科学通识课【Python基础语法】答案...
- 基于spring cloud 的灰度发布实践_【收藏】基于spring cloud灰度发版方案
- [轉]数据挖掘工具的选择
- 贾跃亭的惩罚来了!就这??
- 计算机控制系统功能,计算机控制系统功能之操作指导-电脑自学网
- linux命令安装tongweb教程,【中间件】TongWeb安装
- 数字图像处理-直方图均衡化,直方图规定化
- 重置IE浏览器的设置
- MeasureSpec
- 压力测试-LR工具安装
- 企业财务数据分析指标
- 计算机二级题百度云,计算机二级office题库
- oracle SQL以结尾函数,Oracle SQL 内置函数大全
- 拉丁超立方——样本点空间转换
- 危骆邦油邦快讯|一分钟看懂山东地炼成品油报价
- 关于某normal大学数据库登录的一个尝试
- oracle 按照固定顺序排序