【AI系统】LLVM 架构设计和原理
本文介绍了LLVM的诞生背景及其与GCC的区别,重点阐述了LLVM的架构特点,包括其组件独立性、中间表示(IR)的优势及整体架构。通过Clang+LLVM的实际编译案例,展示了从C代码到可执行文件的全过程,突显了LLVM在编译器领域的创新与优势。
【C语言】inline 关键字详解
`inline` 关键字是C语言中的一个有用工具,通过消除函数调用的开销来提高执行效率。然而,它并不是万能的,应该根据具体情况慎重使用,以避免代码膨胀和其他潜在问题。
【AI系统】GCC 主要特征
GCC(GNU Compiler Collection)是由理查德·斯托曼于1987年创建,最初作为GNU项目的一部分,旨在为GNU/Linux系统提供高效C语言编译器。随着时间发展,GCC不仅支持多种编程语言如C++、Java、Swift等,还具备强大的可移植性、模块化设计及跨平台交叉编译能力,成为全球广泛使用的开源编译器之一。其编译过程分为预处理、编译、汇编和链接四个阶段,支持静态和动态链接方式,适用于本地编译和交叉编译场景。
【AI系统】传统编译器发展
编译技术是计算机科学的重要组成部分,作为基础软件的核心,它将高级语言转换为机器码,极大提高了编程效率。从1957年的IBM Fortran开始,编译器经历了多个发展阶段,包括结构化程序设计、面向对象编程、并行计算及AI应用等,形成了如今如GCC、LLVM等成熟的编译体系。未来,随着多语言融合和跨平台需求的增长,编译技术将继续演进,支持更多新兴语言和平台。
【AI系统】编译器基础介绍
随着深度学习的发展,AI模型和硬件技术不断演进,开发者面临如何有效利用算力及应对AI框架迭代的挑战。AI编译器成为解决这些问题的关键技术,它帮助用户专注于上层模型开发,减少手动优化性能的成本,最大化硬件效能。本文探讨编译器基础概念,解释编译器与AI框架的关系,介绍编译器与解释器的区别,以及AOT和JIT编译方式的特点和在AI框架中的应用。通过分析Pass和中间表示IR的作用,进一步理解编译器在AI领域的核心价值。
【C语言】register 关键字详解
`register` 关键字是C语言中的一种存储类修饰符,它用于提示编译器将变量存储在CPU寄存器中,而不是在内存中。这种做法旨在提高变量访问的速度,因为访问寄存器比访问内存快得多。
【C语言】extern 关键字详解
`extern` 关键字在C语言中用于跨文件共享变量和函数的声明。它允许你在一个文件中声明变量或函数,而在其他文件中定义和使用它们。理解 `extern` 的使用可以帮助你组织和管理大型项目的代码。
【C语言】const 关键字详解
`const`关键字在C语言中用于定义常量,提供只读的变量。这意味着一旦初始化,`const`变量的值不能再被修改。下面详细介绍`const`关键字的用法、作用以及其在不同上下文中的应用。
【AI系统】AI 芯片的思考
为了应对数据中心算力需求,谷歌自2014年起研发TPU,专为深度学习设计的硬件加速器。TPU加速了谷歌的机器学习任务,尤其在大模型训练和推理方面表现突出。大卫·帕特森教授加入谷歌TPU团队后,分享了TPU发展历程及技术心得,强调了AI模型对内存和算力需求的快速增长、模型结构的快速演变、生产部署中的多租户需求、SRAM与DRAM的权衡、内存优化的重要性、DSA的专业与灵活性、半导体供应链选型、编译器优化及AI应用兼容性等方面的关键挑战与解决方案。