Arrays.asList() 数组转换成集合酿成的线上事故,差点要滚蛋了!
本文介绍了Java开发中使用`Arrays.asList()`方法将数组转换为集合时的一个常见陷阱。该方法返回的List是固定长度的,不支持添加或删除操作,直接使用可能导致线上故障。文章通过一次实际开发中的事故案例,分析了问题的原因,并提供了使用`java.util.ArrayList`进行封装的解决方案,以避免此类错误的发生。希望读者能从中吸取教训,提高代码的健壮性。
【C语言】常量的 “前缀和后缀” 大通关!
在C语言中,常量的前缀和后缀用于明确指定常量的类型和进制系统。前缀主要用于区分不同进制的数字常量,而后缀则用于区分不同类型的整数和浮点数。正确使用前缀和后缀,可以提高代码的可读性和可维护性,确保编译器正确地理解和处理常量。
【AI系统】图算 IR
本文全面介绍了计算图的概念及其在AI框架中的应用,涵盖计算图的基本构成、与自动微分的关系、静态图与动态图的生成及特点,以及计算图对AI编译器的重要作用。文章详细解析了计算图的结构,包括张量和算子的角色,探讨了AI框架如何通过计算图实现自动微分,同时对比了静态图和动态图的优缺点,指出了计算图在优化AI编译器性能方面的关键作用。
【AI系统】AI编译器前瞻
本文基于《The Deep Learning Compiler: A Comprehensive Survey》调研,对比了TVM、nGraph、TC、Glow和XLA五个热门AI编译器,介绍了它们的特点和应用场景。文章分析了AI编译器面临的挑战,包括动态Shape问题、Python编译静态化、发挥硬件性能、特殊优化方法及易用性与性能兼顾问题,并展望了AI编译器的未来,探讨了编译器形态、IR形态、自动并行、自动微分及Kernel 自动生成等方面的发展趋势。
【AI系统】AI 编译器历史阶段
本文概述了AI编译器的发展历程,从朴素AI编译器、专用AI编译器到未来的通用AI编译器,详细介绍了各阶段的技术特点与优化目标。AI编译器旨在优化AI和机器学习应用,通过多层IR设计、面向神经网络的深度优化及对DSA芯片的支持,实现高性能计算。随着技术的进步,通用AI编译器将实现计算图与算子的统一表达、自动化优化及模块化设计,推动AI技术的广泛应用和发展。
【AI系统】AI 编译器基本架构
本文承接前文关于AI编译器发展的三个阶段,深入探讨通用AI编译器架构。文章首先回顾现有AI编译器架构,如PyTorch的转换流程及优化策略,然后介绍理想化的通用AI编译器架构,涵盖从前端接收多框架模型输入到后端生成特定硬件代码的全过程。重点解析了编译器的中间表达IR、前端与后端优化技术,以及现有AI编译器全栈产品的层次结构,为读者提供了全面的技术概览。