性能优化学习笔记4
汇编语言和计算机体系结构
最好的接触底层的接口就是汇编语言
预处理、编译、汇编、链接、加载、执行
为什么我们要查看我们的汇编代码?
汇编代码告诉了我们编译器做了什么以及没有做什么
Bugs会被下降到一个更低的层次
Reverse engineering,你可以看到别人的代码是怎么工作的(在软件领域,逆向工程一般是指根据机器代码或者字节码转换回高级语言代码)
X86-64 ISA PRIMER
这里有四个主要的概念:
Registers
Memory addressing modes
Instructions
Data types
x86-64 指令格式 :< opcode > < operand_list >
operand_list 通常由0个、1个、2个或者3个操作数组成(很少有三个的)
正常情况下,所有的operands都是sources,并且有一个同时是source和destination
对于这个语法,主要有两种:AT&T和Intel,其中AT&T是GNU汇编器的默认语法,而Intel是Windows汇编器的默认语法。在指令 ...
性能优化学习笔记3
Class3——Bit Hacks(位操作魔法)
在国外计算机课程中,word是一个抽象的概念,不应该直接视为4字节,8字节,16字节等。在这里,我们把word视为一个抽象的概念,它可以是任何长度的二进制数,我们可以通过位操作去实现一些有趣的操作。
无符号整数以及有符号整数的二进制表示
首先我们进行知识点回顾:
原码:将一个整数,转换成二进制,就是其原码。如单字节的5的原码为:0000 0101;-5的原码为1000 0101。
反码:正数的反码就是其原码;负数的反码是将原码中,除符号位以外,每一位取反。如单字节的5的反码为:0000 0101;-5的反码为1111 1010。
补码:正数的补码就是其原码;负数的反码+1就是补码。如单字节的5的补码为:0000 0101;-5的原码为1111 1011。
补码的计算公式如下:
x=(∑k=0w−2xk2k)−xw−12w−1x=(\sum_{k=0}^{w-2}x_k2^k)-x_{w-1}2^{w-1}
x=(k=0∑w−2xk2k)−xw−12w−1
其中,xw−1x_{w-1}xw−1为符号位,xkx_kxk为二进制 ...
树莓派部署工作
参考网址:https://pytorch.org/tutorials/intermediate/realtime_rpi.html
看那么多知乎巴拉巴拉还不如直接去看官网,一秒钟搞定
性能优化学习笔记2
Class2——Bentley Rules for Optimizing Work
这篇文章主要是针对Program而不是体系结构,体系结构后面有专门的系列去记录
主要包括四个部分,数据结构、逻辑、循环、函数
Data structures
Packing and Encoding
Packing的思想就是把多个数值存储在一个机器字里面,而Encoding的思想就是把一个数值用更少的bits去表示
(主要思想就是更少的内存存取,memory access)
现在我们考虑对日期进行Encoding,这里我们假设仅仅对公元前4096到公元4096年之间进行编码,这里一共大约有 3M 的日期,如果我们用二进制进行存储,那么我们需要大约 ⌈log2(3×106)⌉≈22 bits\lceil \log _2\left( 3\times 10^6 \right) \rceil \approx 22\ bits⌈log2(3×106)⌉≈22 bits ,因此,这样我们仅仅需要一个word就可以存储,但是这样需要更多的工作去做解码,因为其不是一个显式的存储。需要的空间少了,工作加多了。
...
性能优化学习笔记1
Class1——Matrix Multiplication
写在前面:
首先第一次听到性能优化是在我一个朋友推荐下😐,认识了一位在小红书工作的学长,当时莽撞得问他:我想做您这个方向(其实就是想找个实习丰富自己的简历),但是龙哥(我们称这位大神叫龙哥,想加入他就加入龙门)直接问我:你为什么要做这个方向呢?你有没有分布计算的经历?————显而易见,我是没有这个经历的,他也委婉得拒绝了那个莽撞的我,并跟我说,不管你以后做不做这个方向,学习这些都是有用的,我看了第一节课,感觉蛮有兴趣,于是关于这个主题的笔记就开始了。
这个文章的核心思想就是:
If programmers are so willing to sacrifice performance for these properties, why study performance?
Cause performance is the currency of computing !
直到近期,英伟达发布了自己的最新架构Blackwell,B200 芯片,我们才认识到,原来他的眼光并没有停留在AI方向,而是跑向了各种赛道,去为各个方 ...
关于父亲———从年轻到现在
关于父亲——从年轻到现在
故事的开始
在某一天的某个晚上,我在折腾我自己的手机云端,我用的手机是oppo,在我想上传云端某些照片的时候,突然发现自己的手机上出现了一些陈年旧照,有些很老很老了,感觉是2010—2015年之间的某段时间,具体时间我也记不太清楚了,那个时候应该是在智能手机流行的时候,在这些照片里面 😀 有我自己本人年幼的时候的照片,也有高中时候去合肥名义上看中科大实际上是去和高中那些好兄弟们去玩的照片还有拍摄的视频。
一时间这些照片和视频勾起了我不少的回忆,因此我也打算在某一天搞个自己的网站,然后写点东西纪念纪念,这样一来,第一篇回忆向的文章,而这第一篇,就是从我和我母亲的视角回忆我父亲的青春。
父亲年幼的时候
说到父亲年幼,我就想到了我的爷爷,爷爷和奶奶养育了八个子女,其中我的父亲排老七,所以那个时候在乡镇旁边的人都叫他七子,父亲年幼的时候算是有天赋,能吃苦,可惜后面听他说他年轻时候没好好学习,后面就在乡镇和一些朋友们鬼混啥的,中学毕业之后就去工作去了,关于我父亲年幼时候的回忆并不多,我也只能草草说两句。😂
父亲和他的兄弟工作(四川篇)
正是因为我考到了电子科技大学( ...
欢迎来到此地!
你好!欢迎来到本站!我是一名电子科技大学的在读研究生(目前研零),本人于2024年1月开始搭建自己的个人网站,多亏有Jerry博客的帮助,帮我顺利搭建好自己的博客!
祝你天天开心!我想我们会有一天再见面的!
MPI学习路线
HPC 学习资源
不开放编辑 😡
课程
● MIT 6.172: Performance Engineering Of Software Systems(性能优化)
书籍
● Algorithms for Modern Hardware(体系结构)
● Programming Massively Parallel Processors: A Hands-on Approach(CUDA)
○ 建议看英文原版,PDF 见群文件
● 现代CPU性能分析与优化(性能调优)
● MPI 教程(分布式计算、MPI)
论文 / 博客
● GEMM 性能优化(参考文献也可以看看)
○ Anatomy of High-Performance Matrix Multiplication(单线程)
○ ...