FPGA探索者
从招聘方的角度聊聊吧,我负责过这类岗位的面试。
除了编译器原理(数据流分析、中间表示、代码生成这些基础),我们最看重的其实是候选人的“硬件意识”。具体来说:
1. 对并行计算和内存系统的理解:AI芯片是高度并行的,有各种计算阵列。你需要懂SIMD、SIMT、数据并行、任务并行这些概念,知道怎么把计算拆开映射上去。内存方面,要理解带宽、延迟、数据复用(局部性原理),编译器做的很多优化(如tiling、loop unrolling)都是为了更好地利用内存层次。
2. 对特定领域IR(中间表示)的掌握:TVM的Relay、MLIR的Dialect(特别是linalg、tosa、affine这些),这些是连接AI模型和硬件后端的桥梁。你需要知道如何在这些IR上做图层面的优化(算子融合、常量折叠、布局转换)。
3. 实践能力:最好有在TVM/MLIR上添加新算子或为新硬件后端(哪怕是模拟的)实现代码生成的经验。这能证明你能把知识和硬件架构结合起来。
前景很好,因为软件栈是AI芯片落地的大瓶颈。核心技术壁垒就是跨领域的知识整合和解决实际性能问题的能力。很多问题没有标准答案,需要你根据硬件特性去探索最优解。
补充知识的话,建议一边学硬件架构(看论文和文档),一边动手玩TVM/MLIR,尝试做一些优化实验,比如针对一个特定硬件模型(可以假设一个简单的加速器阵列)去优化一个算子。这样学得最快。
