抽象流机器:异构多处理器上流式程序的编译时性能建模
1. 引言
如今,多核系统和分布式内存的应用日益广泛,许多人意识到需要改变软件开发方式以充分利用这些资源。像数字视频、软件无线电、信号处理和3D图形等应用,都可以用块图表示,独立的块之间仅通过规则的数据流进行通信和同步。这些应用具有高度的任务和数据并行性,但使用C或类似的顺序编程语言编写时,这些并行性会被隐藏,程序员需要手动进行任务融合、分裂和分块转换等高级优化。
流编程为这些规则应用提供了一种可移植的方式来利用多处理器机器。近期关于流编程语言(如StreamIt和同步数据流SDF)的研究表明,编译器有可能达到手动调优的顺序或多线程代码的性能。
本文介绍的工作是ACOTES项目的一部分,该项目正在为嵌入式系统开发一个完整的开源流编译器。这个编译器将自动划分流程序以利用任务级并行性,确定通信缓冲区的大小,并通过分块聚合通信。本文描述的抽象流机器(ASM)代表了该编译器的目标系统。
下面是ACOTES迭代流编译器的工作流程:
graph LR
A[source + SPM pragmas] --> B[Task fusion]
B --> C[Allocation]
C --> D[Mercurium]
D --> E[source + acolib]
E --> F[Blocking]
F --> G[gcc]
G --> H[ICI plugin]
H --> I[executable]
I --> J
超级会员免费看
订阅专栏 解锁全文
41

被折叠的 条评论
为什么被折叠?



