摘要: 在冯诺依曼架构下,指令集的使用让软硬件得以解耦并各自飞速发展。然而,近年来并行多核架构加速器的热潮为冯诺依曼架构下的顺序编程模型带来了挑战。在顺序编程模型下设计而成的指令集缺乏对并行硬件的抽象,因此仅仅使用指令集已不能完全完成软硬件的解耦。人工智能软件编译栈领域需要新的编程模型,以对接顺序执行的编程平台和并行多核的硬件后端,并进一步探索并行硬件提供的优化机会。使用数据流模型作为编程模型,为顺序执行程序和并行硬件指令集的对接过程提供通用抽象,在指令集的基础上进一步实现软件前端与硬件后端的解耦。为确保项目的可复用性,将数据流模型以codelet dialect的形式实现在谷歌提出的编译器框架MLIR上。MLIR致力于整合碎片化的编译器生态,提高前后端对接流程的可复用性,在MLIR上实现的数据流模型将进一步提升MLIR系统的可复用性。