Page 150 - 《软件学报》2024年第6期
P. 150
2726 软件学报 2024 年第 35 卷第 6 期
语进行建模, 为并行代码建立可扩展的编译器基础结构. Tapir [24] 将程序的控制流表示为与语言无关的控制流图
(CFG), 并在程序的 CFG 中不对称地表示逻辑 fork-join 并行性. STC 编译器 [25] 提供了一种扁平的、易于分析的
IR 来捕获数据驱动的任务并行性执行模型. 每个 IR 过程都被构造成一个块树, 每个块表示为语句序列. 尽管上述
IR 能够以独立于平台的形式表征源程序, 然而, 由于其并没有考虑邻居交互等群体智能系统计算特征, 难以直接
应用至群体智能应用程序的编译过程.
针对现有研究存在的问题, 本文以一种用于编程全分布式智能建筑系统的 SwarmL 语言为例, 提出面向群体
智能系统应用程序的编译系统, 并实现其支撑工具. SwarmL 是一种高级语言, 支持用户以串行思维方式高效编程
并行化的建筑控制应用程序. 本文具体贡献如下.
(1) 提出一种面向群体智能系统应用程序的编译系统及其支撑工具. 通过并行信息识别、任务划分、数据分
配等技术, 该系统将符合用户串行思维方式、面向全局角度编程的群体智能系统应用程序解耦、分离为面向单个
节点独立执行的中间代码. 根据源程序的隐式并行语义编译生成变量读写机制、对邻居节点的循环遍历操作以及
分布式计算属性, 以支持群体智能系统底层节点间的通信和协作. 实现了具有程序编辑和代码生成功能的可视化
编译系统工具, 将复杂工作量由用户编程转移到编译和运行时系统, 显著降低了应用程序开发难度.
基于标准化的建筑信息模型和智能节点, 建筑功能系统的定义变得标准化和通用化, 其构建和部署过程也变
(2) 提出一种通用化、标准化的编译系统中间表示. 在分析群体智能系统体系结构和程序执行模型的基础上,
该中间表示将每个群体智能操作表示为输入输出变量和标准化群体智能算子相结合的计算事件, 因而具有并行和
分布式特征的群体智能应用程序被转换为按照语义顺序排列而成的计算事件序列. 该中间表示能够适配一类具有
节点交互协作、并行执行特征的群体智能系统硬件平台, 进而屏蔽硬件平台的异构性.
(3) 提供更好的应用程序开发效率和目标代码执行性能. 以全分布式智能建筑系统为例对该编译系统进行测
试, 结果表明, 该编译系统能够将串行的群体智能系统应用程序转换为硬件平台可执行的并行目标代码, 且提升应
用程序开发效率, 其生成的代码在一系列基准测试中具有比现有编译器更好的性能.
第 1 节介绍群体智能系统应用程序的一个案例并总结编译应用程序的重要挑战. 第 2 节提出面向群体智能系
统应用程序的编译系统总体框架和中间表示的标准化格式. 第 3 节形式化建模群体智能系统应用程序的具体编译
算法并研究实现编译系统工具. 第 4 节通过实验验证该编译系统的有效性和效率. 第 5 节讨论群体智能系统程序
编译和程序自动并行化方法的相关工作, 并与本文方法相比较. 第 6 节进行总结与展望.
1 群体智能系统应用程序编译挑战: 以 SwarmL 语言为例
本节介绍全分布式智能建筑系统及其编程语言 SwarmL, 其是群体智能系统的一个典型案例. 以 SwarmL 所开
发的分布式建筑控制应用程序为例, 总结编译群体智能系统应用程序的关键挑战.
1.1 全分布式智能建筑系统
全分布式智能建筑系统仿照自然界中蜜蜂、蚂蚁等群体的工作机制, 将建筑建模为由一组智能节点组成的无
中心、分散的计算网络 [2,26] , 如图 1 所示. 每个节点具有计算和通信功能, 负责控制和管理本地的一个建筑空间或
一件大型机电设备. 节点配置有分布式操作系统 [27] 和一个标准信息模型 [28] , 存储了对应的建筑空间或机电设备的
各类参数信息. 节点仅与直接相邻的节点进行数据交互, 从邻居节点处获取输入信息, 完成本地计算, 再将计算结
果传送给邻居节点. 所有节点以一种自组织的协作机制相互配合完成复杂的建筑控制和管理任务, 这避免了集中
式系统存在的中央链路拥堵、配置复杂等问题, 具有即插即用、自组织、自适应等特征 [29] .
得简单. 全分布式智能建筑系统将建筑物理场模型和分布式、并行计算模式深度融合, 允许用户将建筑管理控制
任务开发为通用化应用程序 (application, APP) 并下载到智能节点网络上执行, 例如变风量空调系统优化控制 [30] 、
冷机群控 [31] 等. 这些应用程序比传统的集中式建筑系统控制策略表现出更好的鲁棒性和收敛性.
1.2 SwarmL
全分布式智能建筑作为群体智能系统的一个实例, 其编程语言 SwarmL 能够直观刻画典型群体智能控制计算
逻辑, 因此, 本文选择 SwarmL 语言作为案例来描述群体智能系统应用程序的编译过程.