GPU 技术栈
剖析从高层框架到硬件的GPU计算技术栈,理解其组件与协作机制。
剖析从高层框架到硬件的GPU计算技术栈,理解其组件与协作机制。
read more
LLVM And Popular Compilers 大多数人印象中的的程序典型编译流程: 预处理 ( Preprocessing ) 编译 ( Compilation ) 汇编 ( Assemble ) 链接 ( Linking ) 这也是 Unix 操作系统上 GCC 编译器编译 C 代码的编译流程。 LLVM LLVM 则是一个 modulized 的编译器基础设施,提供了编译器开发所需的各种工具和库。 LLVM 有自己的语言,LLVM assembly language,有自己的一套语法和结构,是一个静态单赋值的代码表示(code representation),同时提供了类型安全、接近于汇编(low level)的运算操作,还有很强的灵活性,几乎可以表示一切其他语言。 设计成三种等价的不同形式来使用。 LLVM assembly language 是文件文本存储格式。文件后缀是 .ll。 示例 LLVM bitcode LLVM bitcode 是文件二进制存储格式,文件后缀是 .bc。 LLVM IR (Intermediate Representation) LLVM IR 是代码表示在内存中的表示。因为通常用作其他语言实现的中间表示,所以被称作 IR ,官方设计目标是成为 universal IR。 下面统一称作 LLVM IR。 LLVM 项目提供了完善的工具链,提供以下编译能力: AOT(Ahead of Time) 静态编译器,提前把 LLVM IR 编译到可执行文件,直接运行 JIT(Just in Time) 动态解释器,运行时先编译,再执行 Interpreter 动态解释器,运行时直接解释执行 LLVM IR ...