随笔分类 - 技术
主要是计算机相关技术,包括热点分析,名词解释
摘要:摘要:最近看《计算机体系结构:量化研究方法(第五版)》,发现指令集设计中的一些原则,对API设计也同样适用,给大家分享一下。 本文中的所有内容来自工作和学习过程中的心得整理,如需转载请注明出处。周荣华@燧原科技 1 正交 指令集需要满足操作、数据类型和寻址方式三个方面的功能就是正交的。所以API设计
阅读全文
摘要:本章是系列文章的第十一章,主要介绍GPU的编译原理,分析了多核运行过程中的内存分岔和控制流分岔的分析和处理。 本文中的所有内容来自学习DCC888的学习笔记或者自己理解的整理,如需转载请注明出处。周荣华@燧原科技 11.1 什么是GPU 11.1.1 GPU的发展历史 软件控制的VGA帧缓冲区 频繁
阅读全文
摘要:本章是系列文章的第十章,主要介绍CPU流水线、超标量体系架构等硬件设计,和编译器怎么使能这些功能来减少计算的时钟周期。 本文中的所有内容来自学习DCC888的学习笔记或者自己理解的整理,如需转载请注明出处。周荣华@燧原科技 10.1 概念 指令级并行是是让一个程序中的多个操作同时执行的方法 指令级并
阅读全文
摘要:从排查一次匪夷所思的coredump,引出各种体系架构的差异。 本文中的所有内容来自学习DCC888的学习笔记或者自己理解的整理,如需转载请注明出处。周荣华@燧原科技 1 背景 从全世界有记载的第一台计算机Z1 (computer) - Wikipedia在1936年发明,到1946年冯诺依曼体系架
阅读全文
摘要:本章是系列文章的案例学习,不属于正篇,主要介绍了TensorFlow引入的XLA的优化算法。XLA也有很多局限性,XLA更多的是进行合并,但有时候如果参数特别多的场景下,也需要进行分割。XLA没有数据切分的功能。当前最主流的编译器领域的编译优化功能还是mlir。 本文中的所有内容来自学习DCC888
阅读全文
摘要:本章是系列文章的第八章,用着色算法进行寄存器的分配过程。 本文中的所有内容来自学习DCC888的学习笔记或者自己理解的整理,如需转载请注明出处。周荣华@燧原科技 寄存器分配 寄存器分配是为程序处理的值找到存储位置的问题 这些值可以存放到寄存器,也可以存放在内存中 寄存器更快,但数量有限 内存很多,但
阅读全文
摘要:本章是系列文章的第七章,终于来到了鼎鼎大名的SSA,SSA是编译器领域最伟大的发明之一,也是影响最广的发明。 本文中的所有内容来自学习DCC888的学习笔记或者自己理解的整理,如需转载请注明出处。周荣华@燧原科技 7.1 控制流图回顾 对下面的c代码保存成7.1.cc: 1 int max(int
阅读全文
摘要:本章是系列文章的第六章,介绍了循环的分析方法。循环优化的逻辑相对简单,但对性能提升的效果却非常明显。循环优化的分析还产生了一个图灵奖。 本文中的所有内容来自学习DCC888的学习笔记或者自己理解的整理,如需转载请注明出处。周荣华@燧原科技 6.1 循环的重要性 90/10定律,90%的算力消耗在10
阅读全文
摘要:本章是系列文章的第五章,介绍了指针分析方法。指针分析在C/C++语言中非常重要,分析的结果可以有效提升指针的优化效率。 本文中的所有内容来自学习DCC888的学习笔记或者自己理解的整理,如需转载请注明出处。周荣华@燧原科技 5.1 概念 指针是许多重要编程语言的特性之一 指针的使用,可以避免大量的数
阅读全文
摘要:本章是系列文章的第四章,介绍了worklist算法。Worklist算法是图分析的核心算法,可以说学会了worklist算法,编译器的优化方法才算入门。这章学习起来比较吃力,想要融汇贯通的同学,建议多参考几个学校的教程交叉着看。 卡耐基梅隆大学 15745: https://www.cs.cmu.e
阅读全文
摘要:本章是系列文章的第三章,介绍了基于数据流分析的一些优化方法。包括生命周期管理,可获得表达式,常用表达式,可达性定义。本章在介绍这4中分析方法的基础上提取出它们的通用模式。这一章形式化的内容比较多,看的时候有点烧脑,最好自己手工推导一下,要不然基本上看不懂:) 本文中的所有内容来自学习DCC888的学
阅读全文
摘要:本章是系列文章的第二章,介绍了基于控制流图的一些优化方法。包括DAG、值标记、相同子表达式等方法。这章的后面介绍了llvm的一些基本概念,并引导大家写了个简单的pass。 本文中的所有内容来自学习DCC888的学习笔记或者自己理解的整理,如需转载请注明出处。周荣华@燧原科技 2 控制流图 2.1 基
阅读全文
摘要:本章是整个课程的第一章,主要介绍了一下文章的起源,编译器的历史和相关概念。 本文中的所有内容来自学习DCC888的学习笔记或者自己理解的整理,如需转载请注明出处。周荣华@燧原科技 1. 导论 1.1. 什么是DCC888 DCC是葡萄牙语Departamento de Ciência da Comp
阅读全文
摘要:1 CMAKE的交叉编译配置 主要是C和C++编译器的配置和SYSROOT的配置。 set (CMAKE_SYSTEM_NAME "Linux") set (CMAKE_SYSTEM_PROCESSOR "x86_64") set (default_toolchain_folder /home/.d
阅读全文
摘要:1. 下载safe-rm 社区有个safe-rm,可以解决绝大多数误删除目录的问题,安装命令: apt install safe-rm 2. 配置safe-rm 默认safe-rm会禁止删除一些已知的系统目录,用户可以通过配置/etc/safe-rm.conf来增加额外的删除黑名单,下面例子里面后面
阅读全文
摘要:wikipedia上关于SSA的定义如下: In compiler design, static single assignment form (often abbreviated as SSA form or simply SSA) is a property of an intermediate
阅读全文
摘要:1. 缘起 这几天调gcc 7.5.0 +glibc 2.23的交叉编译工具链,由于gcc 7.5.0的默认打开Werr,偶然发现了glibc一个隐藏了二十年的世纪大bug。 这个bug在glibc 2.0版本刚开始就引入了,但直到2.25版本才最终解决,即使按glibc-2.0.1.bin.alp
阅读全文
摘要:为了避免和host的编译系统耦合,很多sdk和需要和客户联编的软件都会提供自己的工具链或者要求客户的系统满足某种工具链要求。 大概梳理下来独立的ToolChain 有如下一些好处: 1. 不用关心host操作系统,只要下载toolchain,随时随地(前提是x86的Linux操作系统,Windows
阅读全文
摘要:1 引言 网上说正则式的文章很多,刚开始有同事提议写写正则式,我实际上是有点拒绝的,毕竟看看别人的文章基本上就能满足需求了,纯粹做搬运工有点心有不甘,但要写的有新意确实也很困难。 但回想起自己刚接触正则表达式时的窘境,也看到csdn上还有一些没什么油盐的正则表达式文章居然还开收费,觉得还是有一些可说
阅读全文
摘要:这是一篇翻译稿,方便给不知道BDD的同学扫盲。原文链接:What is BDD (Behavior Driven Development)? | Agile Alliance Definition定义 Behaviour Driven Development (BDD) is a synthesis
阅读全文

浙公网安备 33010602011771号