自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(49)
  • 收藏
  • 关注

原创 git相关

8/查看本地分支---- git branch -av / git branch -v。2/创建分支-----git checkout -b 分支名称 标识。9/将本地和远端分支信息都列出来-----git branch -va。3/查看本地有多少分支-------git branch -v。7/切换分支-----git checkout 分支名称。4/查看当前分支的log日志------git log。5/查看所有分支----git branch -a。

2023-08-14 16:55:05 108

原创 GVIM的使用

替换命令,替换文本中的“abc”为“def”,输入命令:%s/abc/def/gc,再输入y--当前替换,n--当前不替换,a--全部替换。替换文本中第10行到第100行中的“abc”为“def”,命令为:%10,100s/abc/def/gc。恢复上一步被撤销的内容,ctrl+u。

2023-08-02 15:25:06 138

原创 配置uprof环境

利用sudo nano /etc/apt/sources.list 更改完source后 :wq!sudo alien xxxx.rpm #将rpm转换位deb,完成后会生成一个同名的xxxx.deb。Ubuntu的软件包格式是deb,如果要安装rpm的包,则要先用alien把rpm转换成deb。sudo apt-get install alien #alien默认没有安装,所以首先要安装它。sudo dpkg -i xxxx.deb #安装。3/将.rpm转换成deb。6/查看BCC是否安装完成。

2023-07-18 21:02:58 415

原创 CPU之IPC相关

Instruction,即某个固定时间段内系统完成的指令数,考虑到系统中任何形式的应用都是由指令完成,且在不修改应用(代码逻辑)的前提下完成固定的任务所需的指令数是相同的。所以这里的指令数就是一个与系统性能直接挂钩的指标。UnhaltedCycle,即非空时钟周期。不多展开的话,默认CPU会在空闲时执行HALT指令(空指令)作为占位。另,thread下标则是考虑到CPU超线程(HT)技术。而如果说总时钟周期这个指标——Cycle,实际上就是CPU频率的倒数,最重要的产品指标之一。

2023-07-15 12:22:45 312

原创 Linux下做性能分析5:Amdahl模型

而这里面需要特别小心的就是那个Provider-Consumer陷阱,也就是前面提到的,如果一个线程总用不完它的时间片,这个线程就会被自动提权为交互线程,这样,只要发生调度它就会抢占,这样会大幅降低整个系统的性能。因为这不再是一个Amdahl模型了,Amdahl模型的依赖是在等待的时候,你的CPU还能干其他并行的工作,而使用spinlock,你在等待的时候什么都干不了。这里有四条曲线,我们先看spin的两条曲线,你会发现,当你把串行的配比增加的时候,系统在20个核左右就开始进入拐点,性能大幅跳水。

2023-07-15 12:22:00 227

原创 Linux下做性能分析6:理解一些基础的CPU执行模型

因为你写汇编代码很难考虑流水线(特别是这里不光有指令的调度,还有寄存器的调度,用不同的寄存器,可能可以造成不同的依赖,从而优化流水线的执行),如果你强行考虑流水线了,你的代码也没法看了,因为它不是以人脑为对象的了,完全是机器的思维),而编译器考虑这样的东西,毫无压力。我们这样考虑这个问题吧:L1 Cache的访问速度是几个时钟周期(常常会是1个),L2是十几个,L3是几十个,到了内存上,就是几百个,如果是多道系统,插几个CPU,跨Socket的时候,就会更慢。高级的CPU,编译器,都会进行指令调度。

2023-07-14 16:41:13 112

原创 Linux下做性能分析4:怎么开始

领导说,再弄一个小时,他们再搞不定就让他们回家,我们上备份系统……所以现场的机会很宝贵, 针对不同的现场,你最好手上有一套脚本,上去不管三八二十四,先把什么dmesg啦,dpkg -l啦, /proc/cpu, /proc/ingterrupts, /proc/mem啦,ifconfig啦,ps -ef -L啦,/var/log啦,统统先给他扯一套出来,这样你后面怎么都好分析,现场数据对于后面的分析非常重要?整个性能分析的工作,就是建立模型,猜测瓶颈,和数据对照,再采样,再分析瓶颈,修正设计,再采样。

2023-07-14 16:40:29 183

原创 在Linux下做性能分析3:perf

另外,我们要清楚,现代CPU基本上已经不用忙等的方式进入等待了,所以,如果CPU在idle(就是没有任务调度,这种情况只要你的CPU占用率不是100%,必然要发生的),击中任务也会停止,所以,在Idle上是没有点的(你看到Idle函数本身的点并非CPU Idle的点,而是准备进入Idle前后花的时间),所以,perf的统计不能用来让你分析CPU占用率的。读者可以有限度参考这个经验。但更糟糕的是,如果在关中断的时候,发生了多个事件,由于中断控制器会合并相同的中断,你就会失去多次事件,让你的统计发生错误。

2023-07-14 16:39:54 423

原创 在Linux下做性能分析2:ftrace

这个循环队列在内存中,大小是固定的(可以动态设置),所以写入的速度可以很快,在没有ftrace的时候,我经常通过类似的方式人工跟踪系统的执行过程,以便定位调度引起的各种问题。当然,这也很浪费内存。功能跟踪就会简单得多,功能跟踪可以直接使能某种跟踪功能,具体用什么事件,设置什么参数等,都默认设置好,这种预定义功能在available_tracers中列出,只要选择其中一个,把对应的名字写入current_tracer文件中就可以启动这个功能。它可以跟踪在你跟踪的期间里,最高优先级的任务的调度最大时延。

2023-07-14 16:39:23 354

原创 在Linux下做性能分析1:基本模型

1/t2是CPU清队列库存的速度,数据无限地供给到队列上,如果瞬时队列的长度是len,CPU处理一个包的时间是ti,t2=len*ti,如果请求无限上升,len就会越来越长,时延就会变大,所以,通常我们对队列进行流控,流控有很多方法,反压丢包都可以,但最终,当系统进入稳态的时候,队列的长度就会维持在一个稳态,这时的t2就是可以被计算的了。第二,在有流控的系统上,需要注意一种很常见的陷阱:就是队列过长,导致最新的包被排到很后才处理,等完成整个系统的处理的时候,这个包已经被请求方判断超时了。

2023-07-14 16:38:51 1491

原创 Top-down方法学

Top-down方法学由Intel提出,是一种软件性能分析技术。x86处理器的PMU一般提供8个PMC,其中4个是固定的PMC,其对应的监控信号是不能配置的。另外4个PMC监控的信号是可以配置的。

2023-07-14 16:21:08 238

原创 TMAM性能分析模型

根据子项中不同的cache level依赖度,找出该应用程序更多的倾向于哪个级别的cache,如果可能就找对应cache更大的产品。:升级CPU频率,使用更多重指令优化,尽可能的提升子项中port的利用率。此外如果程序支持,只要过程中此项占比没有太大变化,采用更多的核心往往也会有非常线性的性能提升。而top-down模型的重点在于它还可以通过一个在硬件或者软件配置的连续变化过程中倾向性占比的变化反应来预估应用程序的弹性、最大容量和最优容量。:对不起,对于黑盒应用来说无解。:很少出现,这大多数都是。

2023-07-14 14:36:56 1085

原创 CPU性能分析之-PMC/PMU

PMU是性能检测单元,PMC是性能检测计数器PMC/PMU是目前实现软件性能调优、系统健康监控以及计算机资源计数等多种性能-功耗(PnP)领域数据采集的基础。TSC是CPU当前的时钟数指定两个PMC硬件计数器,在同一个时间段内通过硬件的计数器绑定这两个PMU事件。读取计数器,类似“查水表”获得这个时间段两个计数器的值,与上一个值比较,获得本周期增量。通过上面的表达式计算本周期的CPU利用率。等待一个相对固定的时间(刷新率)。跳回2,直到监控结束。

2023-07-14 11:10:03 924

原创 转载-让CPU黑盒不再黑——【TMA_自顶向下的CPU架构性能瓶颈分析方法】(五)Retiring

Retiring这个大类代表的是有效地利用pipeline slots数量所占的比重,即被issued且最终成功retired的uops数量比重。具有高的Retiring值,并不意味着没有进一步可以优化的空间。我们可以通过了解Retired的uops指令类型及其比重,来优化程序,使得程序的执行效率更高,比如将大量的标量指令转变成矢量指令。计算公式:", 1) /对于公式中的SLOTS函数的计算公式,即如何求得Pipeline Slots的总数量,由于前面有进行过讲解,所以这里将不再赘述。我们只需要关注。

2023-07-14 10:52:58 159

原创 让CPU黑盒不再黑——【TMA_自顶向下的CPU架构性能瓶颈分析方法】 Speculation

speculation 投机/推测---错误的分支预测和CPU中的机器清理machine clear机制对CPU性能的影响,将Bad Speculation做为一个大的分类是TMAM的一个特点。若该分类的值大于一定程度时,需先调查解决该分类。bad speculation 分类代表的1/由于错误的speculation所浪费的slots数量,错误分支上的uops虽然被issue了,但是最终没有retired,这部分slot属于浪费的一部分;

2023-07-14 10:05:14 105

原创 转载-让CPU黑盒不再黑——TMA_自顶向下的CPU架构性能瓶颈分析方法What & Why---HOW---Frontend---Speculation---Retiring (未完结)

用Issued uops总数减去Retired uops总数,表示虽然Issue但是没有Retire,做了无用功的uops数量,再加上Recovery过程中所导致的Bubbles,这两者之和再除以总的Slots数量,便可以表示Bad Speculation所浪费的Slots比重。利用TMA结果分析时,只关注第一层级比重最高的分支,然后逐级向下追溯,例如,得知第一层级是Backend,然后只需关注memory部分,最终可以得知,CPU效率不高主要是CPU访问DRAM这条路径导致的。

2023-07-12 21:02:33 452

原创 秋招手撕代码-刷题日记(四)8.2

无额

2022-08-02 20:02:51 107 1

原创 秋招手撕代码-刷题日记(三)7.30

原理异或是每一位都要异或,将多位边为1'b0/1'b1,可以完成0或者1的输出结果,此时无关always@,可以用wire变量定义,根据sel的值做判断,根据示意图定的前后项。“~”会将变量的各个位依次取反如a[30]={1,0,0,1},~a={0,1,1,0};方法2是用always,使用always必须要有reg变量,wire是组合变量用,不能混用。if(sel)这里sel非0即1,不用赋值。”会将变量作为一个值去做处理,非0为1。今天少做题,把项目整理一下。...

2022-08-01 17:17:07 123

原创 秋招手撕代码-刷题日记(二)7.29

编码

2022-07-29 21:03:15 126

原创 秋招手撕代码-刷题日记(一)7.28

刷题

2022-07-28 21:41:00 173

原创 PYTORCH中CNN网络参数计算和模型文件大小预估

网络参数计算先定义好网络结构,然后统计网络参数。网络定义以LeNet-5为例,参考之前的博客《PyTorch构建网络示例:LeNet-5》,网络结构设计代码如下:import torchfrom torch import nnimport torch.nn.functional as Fimport numpy as npimport osclass lenet5(nn.Module): def __init__(self): super(lenet5,

2022-05-10 17:10:28 373

原创 HM块划分有关的函数

最近需要研究HM的与块划分有关的函数(TLibEncoder\TEncCu),但是网上可参考的资料很少,加上这部分的代码比较繁杂,所以本文基于最新的16.20版本,尝试剖析一下其实现原理,后续会更新x265对应部分的源码剖析。HM15.0此部分的代码分析可以参考[这篇博客](https://blog.csdn.net/qq_21880777/article/details/78827285)。CTU层次基本分为两步,首先压缩CTU,然后编码CTUTEncCu::compressCtu压缩CT

2022-05-08 16:08:31 259

原创 hm编码工具使用_HM编码器代码阅读(1)——介绍以及相关知识

HM是HEVC(H.265)的开源实现,可以从网上直接下载。HEVC(H.265)是新一代的视频编解码标准。本人目前研究的只是编码器部分,而且还是入门阶段!为了提高自己,边学边记,由于理解不够深入,难免会有误,请见谅!本人现在使用的版本是15.0,最新版本好像已经到16.0了文件的功能以及作用:AccessUnit.h 定义了存取单元(或者说访问单元),实质是一个类型为NALUnitEBSP的listNAL.h 定义了NALUnit(NAL单元)和NALUnitEBSP(EBSP类型

2022-02-24 15:41:07 419

原创 HEVC概念 缩写对照表

GOP(Group of Pictures)——图像组CTU(Coding Tree Unit)——树形编码单元CTB(Coding Tree Block)——树形编码块CU(Coding Unit)——编码单元MTU(Maximum Transmission Unit)——最大传输单元IDR(Instantaneous Decoding Refresh)——即时解码刷新non-IDR(non-Instantaneous Decoding Refresh)——非即时解码刷新SS(

2022-02-14 18:59:52 198

原创 HM-帧内预测(概述)

HM帧内预测大致可以分成三部分:获取参考像素,参考像素滤波,生成预测图像。变量的命名Tables Are m_ member g_ global p 指针 n个'p' 表明该指针为n级指针 c class 该变量是某个类的对象 i int整型 c class 该变量是某个类的对象 u unsigned h 该变量是字符型,这里不用'c'来代表'char’应该是为了避免跟前面的'class'冲突了

2022-02-14 16:30:25 333

原创 HEVC帧内编码单元划分

原始编码:经过CNN预测深度后编码:

2022-01-13 15:43:42 83

原创 基于Hi3559AV100 RFCN实现细节解析

首先给出整体的RFCN流程图解,整个RFCN分为3个step,具体如下所示:在分析RFCN数据流之前,首先了解一下基于Hi3559AV100的NNIE模型,在搭建好SDK等环境后,配置好对应的硬件,在HiLinux上进行测试,具体如下:~ # ./sample_nnie_mainUsage : ./sample_nnie_main <index>index:0) RFCN(VI->VPSS->NNIE->VGS->VO).1) Segnet(.

2022-01-10 21:25:42 473

原创 转载:海思Hi3559AV100 NNIE开发(1)--(7)

(1)-RFCN(.wk)LoadModel函数参数解析Hi3559AV100 NNIE开发(1)-RFCN(.wk)LoadModel函数参数解析 - 尚码园以后随笔将更多笔墨着重于NNIE开发系列,下文是关于Hi3359AV100 NNIE开发(1)-RFCN NNIE LoadModel函数与参数解析,经过对LoadModel函数的解析,可以很好理解.wk文件的具体内容,为方便为对其余不一样模型.wk加载时如何进行修改给出参照。数组  在RFCNdemo中把RFCN的.wk模型文件经...

2022-01-04 20:37:55 2813

原创 遇到虚拟机ubuntu登录界面输入密码无效,循环出现登录界面

ubuntu 16.04 登陆不进桌面问题描述:  系统软件升级之后,重启,在登陆界面输入密码后,回车,闪现一次黑屏和一些代码,然后又重新回到登陆界面。原因分析:  有两种可能:    1、主目录下的.Xauthority文件拥有者变成了root,从而以用户登陆的时候无法都取.Xauthority文件。从而造成用户登陆不进入系统桌面。  说明:Xauthority,是startx脚本记录文件。Xserver启动时,读文件~/.Xauthority,读入对应其display的记录。当.

2022-01-04 16:05:12 8314

原创 海思朱友鹏学习(二)

MPP:common文件夹是通用性主体函数mpp--api手册:HiMPP 媒体处理软件 V5.0 开发参考.pdf

2021-12-24 19:28:43 683

原创 海思朱友鹏学习(一)

vi这个文件,有几行代码ko驱动HD高清IPC网络摄像机dec=decode解码lib库SDK软件包HItool烧录工具IVEPQtool图像调试MPP媒体处理库wtdg窗口看门狗lib.a静态链接,lib.so是动态include头文件extdrv外部驱动osdrv操作系统和驱动toolchain交叉编译工具链1.6-----Ethernet网线RS232串口...

2021-12-08 17:58:04 301

原创 11.29

网络结构:PRelu比Relu稍好一些。bottlenecks更小在网络开始部分采用快速下采样最后几个卷积层采用早期降维训练中采用批量正则化sample/svp/sample_svp_nnie:#ifdef __cplusplus如果当前的宏已被定义过,则对“x以下”进行编译#if __cplusplusextern "C"{关键字extern对该变量作外部变量声明,外部变量就是全局变量。#endif#endif /* __cplusplus */#d

2021-11-29 21:27:08 133

原创 海思3531DV200 --mpp学习

海思MPP:海思系列芯片网络摄像头开发主要就是使用海思提供的MPP(媒体处理软件平台Media Process Platform,简称 MPP),说简单点MPP就是一套封装好的系统,这套系统包含了已经编译好的硬件驱动及函数依赖库和封装屏蔽芯片底层寄存器操作而可以直接调用相应功能的函数接口MPI(MPP Programe Interface)操作芯片,利用这套系统我们可以快速开发应用软件。MPP的目录结构:海思媒体处理平台的主要媒体业务分为视频输入(VI)、视频处理(VPSS)、视频编

2021-11-27 14:56:04 2236 1

原创 量化部署意义

模型量化将模型的参数离散化,原本32bit的浮点数被映射到8bit的整数上,模型的大小压缩4倍左右;将计算层的输入进行离散化,原本32bit浮点数的乘加操作变为8bit的整数乘加操作,减少了模型推理的计算量,在cpu上能够有2到3倍的速度提升,在DSP上能够有10倍左右的速度提升。 对于量化效果的提升,华为海思部门给出了更改caffe框架、使用量化库进行网络finetune的方法。鉴于caffe训练框架更新维护不够,pytorch框架使用较多的情况,笔者写了基于pytorch...

2021-11-18 21:11:24 860

原创 caffe框架学习(超参数solver)

type:SGD应用最广泛最终学习率等于每层学习率×base学习率如果0.01出现过拟合或者不收敛,降低学习率lr_policy:学习策略(inv用的比较多)最大迭代推荐大一点,10W快照是每迭代多少次保存一下,推荐小一些,1K...

2021-11-17 20:05:19 464

原创 caffe框架学习(layer)

caffe train:1、Data预处理2、定义网络(编辑 prototxt配置文件)3、定义超参数(编辑 prototxt配置文件)4、训练得到caffemodel代码举例:以mobilefacenet为例:name: "mobilefacenet" \名字随意起input: "data" \数据层input_shape {top: "data" \一般用bot...

2021-11-17 19:25:53 859

原创 权重量化的流程

1、对网络的权重进行随机初始化2、对网络做前向计算,即将输入数据经过卷积、 Batchnorm, Scale、激活函数、池化等层后,得到网络的输出值。3、计算网络的输出值与期望的目标值( Ground Truth)之间的误差。。4、当误差大于期望值时,将误差反传回网络中,依次求得池化、激活函数、 Scale,Batchnorm、卷积等网络层的误差。5、根据各层误差对各网络层的梯度进行计算,再由该梯度去更新特定网络层的参数(例如卷积层的权重)。6、重复步骤2到步骤5,反复循环迭代直到

2021-11-15 21:47:55 2439

原创 量化库的文件格式

● gfpq.hpp是量化库的接口头文件。● gfpq.dll 是windows版本的动态库。● gfpq.lib是windows版本的静态库。● libgfpq.a是linux 版本的静态库。● libgfpq.so 是linux 版本的动态库,软链接,指向具体的libgfpq_gpu.so.x.x.x。● 带“ _gpu”的库文件是GPU版本。● Release_note.txt为量化库的版本发布说明。● sample 目录包括量化库的使用例子。...

2021-11-15 21:19:01 264 1

原创 caffe运算层

1、caffe使用的是float运算,NNIE使用int8\16,转换时精度会有损失,若量化精度损失不可接受的情况下,需要带量化去重新训练以降低量化误差。2、NNIE包含Convolution、Deconvolution(逆卷积)、DepthwiseConv、pooling、InnerProduct。Deconvolution(逆卷积):一般和转置卷积(transposed conv)、微步卷积(fractionally strided conv)的叫法等价。deconv最大的作用是对feature

2021-11-15 17:25:54 550

原创 caffe使用

1、比对:Parse Dot File选择主目录下的cnn_net_tree.dot,这里也可以不选择 Left Folder和Right Folder分别选择mapper_quant文件夹和output文件夹 等待加载完成后点击compare即可开始对比着重观察第一行数据输入是否完全一致,若出现微小误差,则可能是图像进行resize操作或scale等操作出现的误差,若误差较大,则可能是RGB通道顺序错误,或者图片不一致等等。可以通过修改prototxt文件,删除一些层只留下前面的层,

2021-11-15 16:21:32 224

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除