【ESWIN实习】一、熟悉kernel编译流程
任务
以矩阵乘法kernel为例子。
- Kernel位置:
pint_sdk/core/kernels/blas/level3/gemm-f32.h
- 脚本:
pint_sdk/core/kernels/blas/build.sh
- 参考 Confluence 中的 Convolution 2D kernel 文档编译流程:
Dashboard / Software Documents / Compute Kernel Development / KernelDev_SharedDoc / Convolution 2D kernel user manual
- Bitbucket代码位置:http://192.168.0.16:7990/projects/PAN/repos/pint_sdk/browse
一、初始编译实验
直接运行pint_sdk/core/kernels/blas/build.sh
,会出现缺少一些头文件的报错,例如缺少:pintdev.h、pintmath.h等库。后尝试从Bitbucket上安装uaptool,由于缺少root权限,所以没有安装仓库中要求的依赖。
直接进行如下操作进行安装:
最后make install
出现如下报错信息:
好像安装失败了?但是此时再执行./build.sh
,竟然没有报错了?不知道我这个是否编译成功了呢?
二、更换服务器后再次编译
fpga03据说缺少一些环境信息,故更换fpga12再次进行尝试!
还是有报错,继续找问题…
在万工的帮助下,终于找到问题了,团队开发的最新代码都在dev-weekly
分支上,不在master
上,所以将分支切换到dev-weekly
分支上即可编译通过!
git clone http://192.168.0.16:7990/scm/pan/pint_sdk.git
cd /home/xbwang/PINT/pint_sdk/core/kernels/blas
git status //查看分支状态
git branch -a //查看全部分支
git checkout remotes/origin/dev_weekly //切换到 dev_weekly 分支
git status //查看分支状态
./build.sh
- 1
- 2
- 3
- 4
- 5
- 6
- 7
编译成功截图如下:
疑问:
- 1、同一个用户的不同服务器文件竟然都在?
- 2、各个服务器的环境是不是不一样?
- 3、BLAS LEVEL3是什么含义?
三、Convolution 2D 代码研读
官方文档整理版,可参考这里。
三、BLAS Level geem(矩阵乘法) 代码研读
3.1、BLAS简介
BLAS【Basic Linear Algebra Subprograms,基础线性代数程序集】是一个应用程序接口【API】标准,用于规范发布基础基础线性代数操作的数值库【常用于向量或矩阵计算】。该程序集最初发布于1979年,并用于创建更大的数值程序包【例如:LAPACK】。在高性能计算领域,BLAS被广泛使用。
3.2、BLAS特点
1、BLAS按照功能被分为三个级别:
- Level1:向量-向量计算,比如:点积【dot】,向量加法和乘法【axpy】,绝对值的和【asum】等。
- Level2:向量-矩阵计算,比如:矩阵向量乘法【gemv】。
- Level3:矩阵-矩阵计算,比如:矩阵乘法【gemm】。
2、每一种函数操作都区分不同的数据类型【单精度、双精度、复数】,比如:矩阵乘法分为sgemm【单精度一般矩阵乘法】、dsymm【双精度对称矩阵乘法】、zhemm【双精度复数埃米特矩阵乘法】。之所以要分这么多种,主要是针对每种不同类型的矩阵都要分别设计专门的算法,使得计算性能最优。
3.3、基本运算函数
注:BLAS运算中的每个函数分为:单精度、双精度、复数和双精度复数4种类型。
3.3、Level1~3常见的运算函数
3.3.1、Level1:向量-向量计算
3.3.2、Level2:向量-矩阵计算
3.3.3、Level3:矩阵-矩阵计算
3.4、代码研读
注:命名前缀
gemm-f32
中,gemm
表示矩阵乘法,f32
表示float
!
参考
文章来源: recclay.blog.csdn.net,作者:ReCclay,版权归原作者所有,如需转载,请联系作者。
原文链接:recclay.blog.csdn.net/article/details/114023176
- 点赞
- 收藏
- 关注作者
评论(0)