- 博客(104)
- 资源 (5)
- 收藏
- 关注

原创 电影旅行敲代码的To Do List
题目 说明 完成 Clang Fuzzer 否 LLVM Fuzzer 否 CodeChecker论文笔记 http://gsd.web.elte.hu/papers/2018/codecompass-industry_icpc_2018.pdf 否 Steensgaard’s pointer analysis ...
2019-11-19 20:30:20
2679
原创 LLVM Instruction Selection 笔记
不同的 “抽象” 用于不同的目的,例如 LLVM IR SSA 用来更好的做优化,AST 用来做 syntax 和 semantic 检查,而 SelectionDAG 主要是用来做 Instruction Selection 以及一些的简单的变换(或者说 scheduling)。常规认知中的编译是将 “高级语言” 变换为 “机器语言”,中间会经历一些列的 lowering 的阶段,每一个 lowering 的阶段几乎都会伴随一个中间的抽象形式来方便做性质分析和优化变换。这些注释我们需要搭配着示例来解释。
2024-05-05 21:09:41
1216
原创 [DRAFT] LLVM ThinLTO原理分析
LLVM ThinLTO Objects都包含了哪些?继续使用 Example of link time optimization 中的例子进行分析,在《LLVM full LTO 学习笔记》中我们通过 magic number 作为切入点,简单分析了 full lto 的过程。下面这个路子继续该分析$ clang -flto=thin -c a.c -o a_lto.o$ clang -flto=thin -c main.c -o main_lto.o$ hexdump a_lto.o | hea
2023-10-19 15:21:42
426
原创 论文阅读:ThinLTO: Scalable and Incremental LTO
ThinLTO: Scalable and Incremental LTO 论文阅读笔记A little bit of history.SYZYGY – A Framework for Scalable Cross-Module IPOielf,persistent intermediate representation (IR),基于 ELF 格式,存储自定义格式的 IR(以及 summary)。论文中表示 ielf 文件大小平均是原始 elf 文件的五倍,极端情况下有700倍。在 SYZY.
2022-03-14 10:22:30
1138
原创 LLVM full LTO 学习笔记
什么是LTO(略)LLVM LTO Objects都包含了哪些?使用 Example of link time optimization 中的例子,如下所示。--- a.h ---extern int foo1(void);extern void foo2(void);extern void foo4(void);--- a.c ---#include "a.h"static signed int i = 0;void foo2(void) { i = -1;}stati
2022-02-06 01:00:25
3346
6
原创 2021年度总结 - 工作四年半记
入职字节后,开始在公司内部去记录自己的年度回顾,这里摘除敏感信息后,放在这里2017.06 ~ 2018.12 技术提升,吾性自足,不假外求2018.01 ~ 2019.12 提升视野,迷茫2020.01 ~ 2020.12 学会如何工作与沟通,完成职场人切换,技术积累拉胯2021.01 ~ 2021.12 带人、工作规划与任务拆解,技术积累继续拉胯关于工作本来想拆解下2021年 做的好的地方 和 做的不好的地方。但回忆了下,很多工作做的都不尽如人意,甚至部分工作可以用糟糕来形容,有很多值得
2022-01-03 20:49:45
1398
5
原创 [Computer Architecture读书笔记] H.2 Detecting and Enhancing Loop-Level Parallelism
H.1 Introduction: Exploiting Instruction-Level Parallelism Statically附录H对C3.2进行了更详细的介绍,首先提出了四个技术要点finding parallelismreducing controlreducing data dependencesusing speculation相比于runtime,cpu为了提升ILP所做的工作,they can take into account a wider range of th
2021-11-28 20:48:32
1074
原创 [Computer Architecture读书笔记] 3.2 Basic Compiler Techniques for Exposing ILP
垃圾内容,读书笔记,勿看本书重在Computer Architecture,所以对compiler optimization没有做重点介绍,本章节算是对一些compiler optimization进行了科普。理解本章节,可以按照“计算机体系结构就是trade-off”这个主旨进行。囿于现实因素,存在很多限制,而编译优化就是在夹缝中就生存,在诸多条条框框中求得一个近优解。3.2 Basic Compiler Techniques for Exposing ILP类似于图灵机,由于现实的束缚,不可能存在
2021-11-28 13:42:56
386
原创 [loop optimization] loop versioning
无耻抄袭,业务民科,笔记勿看In code optimization, multi-versioning is a well-known approach to generate code that may adapt to a changing execution context: several versions of an original code snippet are generated at compile-time, each one being the result of some d
2021-11-27 15:10:34
654
原创 工作三年半记
我的技术路线我的跳槽我从章磊,赵扶摇,李崇哲,丁孟为身上学到的从leader张伟身上学到的从蛙总身上学到的从梁广泰身上学到的我自己的职业经历从我女朋友,从蒋队身上学到的覃超 - 新人在公司打游戏思路前期闷头刷兵,不要浪,不要骚,把安排的任务做好就可以了。 中期打团战 后期抗伤害,主力输出。摒弃学生思维Proactive 主动...
2021-02-21 20:43:58
1582
7
原创 编译工具链相关招聘帖
字节跳动系统部-基础库与编译工具链研发实习生 (此贴长久有效)职责描述C/C++编译工具链维护,包括gcc/llvm,debugger,linker以及其它binutils工具参与公司软硬件协同优化方案的创新与落地公司内部基础库研发维护,包括glibc/libstdc++/libstdc++以及第三方基础库工作要求了解编译器原理,对工具链有一定的技术热情具备编译优化能力有性能优化经验者优先,例如Perf/Vtune/EMON等性能优化工具对计算体系结构与Linux内核有一定了解参与
2021-01-12 12:03:07
844
原创 GNU Toolchain源码阅读缩写速查
缩写缩写说明AVAIL_OUTThe AVAIL_OUT set, which represents which values are available in a given basic block.ANTIC_INThe ANTIC_IN set, which represents which values are anticipatable in a given basic block.GCSEGlobal common subexpression elimin
2020-08-03 13:53:16
407
原创 记一次gcc -O2大幅度增加binary size的问题
为什么-O2选项会增加binary的大小,是不是开启的inline flags引起,什么是function-level linking
2020-05-24 16:36:50
2324
4
原创 GCC中的COW(Copy On Write)
文章目录什么是COWCopy Elision实现可能实现libstdc++的实现有什么问题COW与C++11有什么关系呢如何触发libstdc++分配内存时的bookkeeping information待总结In the GCC 5.1 release libstdc++ introduced a new library ABI that includes new implementatio...
2020-02-01 20:52:47
1463
原创 go module & package & versioning & vendor 笔记
个人总结,无参考价值Go ModuleGo设计之初的GOPATH机制可以说比较失败,所以后面才有了vendor和module来修补,module解决核心的问题是version问题,也就是包管理问题。module的整个设计可以参考Russ Cox的博客Go & Versioning。普通用户只需要使用就行了,不需要考虑module背后设计哲学。go.modgo module使用go....
2020-01-02 21:29:06
1214
原创 浅谈 language server & LSIF & SARIF & Babelfish & Semantic & Tree-sitter & Kythe & Glean等
注:本人做过静态代码分析,也算是做过code intelligence,两者互有交叉,所以这里将涉及到的有意思的东西记录下来,未来有精力再依次对这些项目进行介绍文章目录什么是language server protocolJSONRPCLSIF(Language Server Index Format)SARIF(Static Analysis Results Interchange Forma...
2019-12-30 14:14:37
4190
2
原创 clang static analyzer总结
总结注:有一段时间没有接触csa,很多东西发生了变化,但本质的东西没有大的变动,这里再回顾一下。这里不会介绍太细节的东西,搞技术搞的太细节了,会导致自己“过拟合”,从而缺少接受其他知识的泛化的能力。我在这里罗列这些东西,对于他人没有什么特别有价值的东西,我能读到的源码,别人也能读到,我能看到的论文,别人也能看到。这些内容唯一的价值是帮助我理思路从源代码到程序真正运行下面几个阶段都可以做代码分...
2019-12-25 21:28:25
6265
3
原创 #64 Abstract Interpretation: Introduction & #66 Galois Connections - 课程笔记
业余民科,阅读笔记,拾人牙慧前置知识Operational semanticsTAPLOpertional semantics specifies the behavior of a programming language by defining a simple abstract machine for it. This machine is “abstract” in the se...
2019-12-22 19:50:38
917
原创 Python深度学习:基于TensorFlow - 第9章 TensorFlow基础 阅读笔记
这一章首先介绍了TensorFlow的整体架构图,给出一个大体的认识。We designed TensorFlow for large-scale distributed training and inference, but it is also flexible enough to support experimentation with new machine learning mode...
2019-12-19 16:09:24
399
原创 Python深度学习 - 基于TensorFlow:线性代数阅读笔记
垃圾内容,勿读想要了解线性代数本质,请翻墙看3Blue1Brown的视频3Blue1Brown 线性代数本质这一系列的章节安排如下图所示:Linear transformations and matrices这个视频首先介绍了线性变换的几个要点,然后以视频的形式介绍一个二阶矩阵如何在二维坐标系中承担起转换的角色。Linear transformation有两个属性需要保持:all...
2019-12-17 16:18:13
652
原创 论文 A Linear Time Algorithm for Placing phi-Nodes:阅读笔记
介绍这个论文提出了一种简单高效率的插入ϕ\phiϕ-node的方法。论文指出了传统插入ϕ\phiϕ-node算法的一些弊端。注:这个论文还有一些前置论文,我懒得看了想要解决的问题论文想要解决的是在计算dominance frontier时候潜在的O(N2)O(N^2)O(N2)的复杂度。论文指出计算ϕ\phiϕ-node插入位置可以在线性时间内完成,核心就在于处理dominator tre...
2019-12-15 14:40:10
947
原创 再谈Dominator Tree的计算
文章目录Vertex-removal AlgorithmThe Iterative Algorithm RevisitDistributive Data-Flow FrameworkLengauer-Tarjan Algorithm Revisit具体实现DFS计算semidominatorseval & link计算idomidomidomThe SEMI-NCA Algorithm论文...
2019-12-10 19:58:15
4203
7
原创 Python深度学习 基于Tensorflow: Theano基础 读书笔记
未来补充逻辑回归实例拟合函数f(x)=11+ex∗w−bf(x) = \frac{1}{1 + e^{x * w - b}}f(x)=1+ex∗w−b1代价函数xent(w,b)=−y∗log(f(x))−(1−y)∗log(1−f(x))xent(w, b) = -y * log(f(x)) - (1 - y) * log(1 - f(x))xent(w,b)=−y∗log(f(x)...
2019-12-05 14:38:01
301
原创 深度学习的数学:深度学习和卷积神经网络 读书笔记
BP神经网络的问题https://www.cnblogs.com/subconscious/p/5058741.html神经网络与拓扑摘抄于Neural Networks, Manifolds, and Topology,用于记录。针对神经网络想要解决的问题,我们可以把神经网络看做线性可分的问题,https://zhuanlan.zhihu.com/p/22888385http://c...
2019-12-03 16:15:55
284
原创 构造SSA
业余民科,拾人牙慧,垃圾内容勿看在文章《SSA的优势》以接近于无的实操经验总结了SSA的优势。在文章《构造Dominator Tree以及Dominator Frontier》介绍了如何构造Dominator Tree和Dominator Frontier,为放置ϕ\phiϕ指令做准备。这篇文章介绍如何构造SSA的形式。构造DomTree这里我们就使用《Engineering a Com...
2019-12-01 14:03:22
3049
2
原创 深度学习的数学:反向传播算法
业余民科学习者阅读笔记,垃圾内容代价函数最小值回顾在《深度学习的数学:神经网络的数学基础 - 阅读笔记》中提到了,如果要求模型的参数Arg0, Arg1, ..., ArgnArg_0,\ Arg_1,\ ...,\ Arg_nArg0, Arg1, ..., Argn。给定一组打了标签的数据<input1, t...
2019-11-26 18:53:34
651
原创 std::variant visitor与pattern matching
业余民科,拾人牙慧,垃圾内容std::variant我在《CppCon 2016: Ben Deane “Using Types Effectively" 笔记》中提到了Ben认为std::variant和std::optional是C++最重要的新特性。但是在笔记中,我只提到了std::variant是type-safe的union,与ML或者Haskell中pattern matching...
2019-11-26 12:54:53
779
原创 CppCon 2016: Ben Deane “Using Types Effectively" 笔记
与视频内容重复std::optional && std::variantoptionalstd::optional是由A proposal to add a utility class to represent optional objects提出来的?里面详细介绍了std::optional的设计以及背后的原因。cppreference里面详细介绍了std::option...
2019-11-24 16:17:41
276
原创 Programming Language, Part C - 第一周上课笔记
OOP的核心PLP - Dynamic Method Bindingdynamic dispatchdynamic dispatch vs closures如何使用racket模拟dynamic dispatch读书的重点在于思考和理解,否则无疑是向脑子里倾倒垃圾...
2019-11-22 17:57:24
386
原创 Engineering a Compiler: 5.1/5.2 Graphical IRs
业余民科学习者阅读笔记,垃圾内容在《PLP: 4.2/4.3 Attribute Gramma阅读笔记3》中提到AST在整个编译过程中并不是必须的,同理IR也并不是必须的(AST本来就是IR的一种)。源码被compiler部分模块处理后得到IR,IR以另外一种形式保存了源码的内容,有时可能需要symbol table或者其它数据结构辅助。IR作为抽象出来的一个layer,主要目的是进行targe...
2019-11-19 15:46:41
484
3
原创 深度学习的数学:神经网络的数学基础 - 阅读笔记
业余民科学习者阅读笔记,垃圾内容simoid函数早期神经网络使用sigmoidsigmoidsigmoid函数作为神经元的激活函数,它有如下的形式。σ(x)=11+e−x\sigma(x)=\frac{1}{1+e^{-x}}σ(x)=1+e−x1现在我还没有足够的知识理解为什么使用sigmoidsigmoidsigmoid函数作为神经网络的激活函数,大家众说纷纭,没有足够有说服力的答案...
2019-11-18 18:30:02
974
原创 PLP: 4.2/4.3 Attribute Gramma阅读笔记3
构造AST在compiler中是否是一个必不可少的步骤? 由于attribute grammar和one-pass compiler或者说语法制导翻译(syntax-directed translation,SDT)联系很紧密,所以attribute grammar和这个问题有存在间接的的关系。答案是否,构造AST并不是一个必要的步骤(可以思考构造AST的目的是什么),甚至在计算机资源极其有限的...
2019-11-15 17:20:28
754
原创 untyped lambda calculus
(阅读笔记,低质,请直接翻看引用)最近在看TAPL,遇到了lambda-calculus,这算是我第一次系统性的学习这个概念。然后就像了解到信息论和图灵机一样,跪倒在地。按照自己不记录一下就没有学透彻的惯例,记录一下学习心得。lambda 相关约定t::=termsxvariableλx.tabstractiont tapplicationt ::= \qquad \qquad \...
2019-10-20 12:21:08
665
原创 structural induction
最近在看programming languges theory相关的书,遇到了structural induction这个概念,记录一下。在介绍structural induction之前,先介绍一个在自然数上应用数学归纳法的例子。定义一个集合 SSS。1 ∈S\in S∈S3×t+2∈S3 \times t + 2 \in S3×t+2∈S,其中 t∈St \in St∈S其它自然数都...
2019-09-28 17:20:30
794
原创 Some Thoughts
自己的经历书籍书籍时间自私的基因2013年暗时间2013年数学之美2013年人类不平等的起源2013年进化心理学2014年枪炮病菌与钢铁2014年自私的基因进化心理学枪炮病菌与钢铁暗时间数学之美枢纽剧鸿观圆桌派马爷 道理不是学来的,是通过经历然后自己反思得到的。一千零一夜晓说概率的世界罗辑思维天道...
2019-06-10 22:06:57
970
3
原创 gopls中一死锁问题记录
死锁表象client端在发完initialize请求后,gopls调用initialize对应的handler,初始化成功。但是client端在发下一个请求时,gopls就"卡"死了,client端发出去了请求,但是gopls却显示没有收到。而gopls端CPU资源和内存资源占用极低。调用lsof -i:port(其实从这里就能看出来是gopls创建了两个监听同一端口的goroutine导致的...
2019-06-02 11:33:41
3074
原创 深度调试gopls(过时,低质量-How-自用)
什么是LSPLSP(Language Server Protocol)是微软在开发visual studio code中针对Language Server设计的一种协议,关于设计中的抉择,在文章《Language Server Extension Guide》有详细介绍。下面我粘贴了这篇文章中的一些描述,采用Language Server的原因主要分为如下三点:不同语言的language ...
2019-02-23 20:32:41
4385
原创 调试gopls(tools/lsp)及部分源码剖析笔记(过时,低质量,自用)
goplsgopls是go官方给出的go-langserver的一个外部接口,核心是x/tools/internal/lsp,所以调试gopls可以说就是调试go lsp。调试query使用delve进行调试,调试命令如下。前半段是调试go-pls的调试命令,后面跟的是gopls执行时的参数,下面的命令就是要查询internal/lsp/cmd/definition.go偏移1277的位置定...
2019-02-22 17:30:44
6876
5
Modern Compiler Design (David Galles 2004)
2014-10-09
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人