Page 159 - 《软件学报》2024年第6期
P. 159
陈文杰 等: 面向全分布式智能建筑系统应用程序的并行化编译方法 2735
语句时, 首先生成一个其对应的语义模块, 该语义模块的编号 M i 在上一个生成的语义模块的基础上递增 1, 初始
d
语义模块编号为 00000001. 遍历其抽象语法树, 识别场变量定义语句的关键字, 通过查询标准化语义模块类型库,
匹配生成语义模块的名称 M Nam 为 e Var_Define, 语义模块类型码 M Typ 为 e 0x000001. 识别场变量定义语句中的全
局信息, 进行计算划分和数据分配, 获取每个节点要在本地定义的场变量属性信息, 包括场变量的名称, 数据类型,
对应的节点类型集合和域名, 并映射生成标准化语义模块的输出变量. 图 7(c) 给出了场变量定义语句到标准化语
义模块的编译转换示例.
模型 A: 模型 B:
场变量定义 Map AB 标准化语义模块
FVD = SSM
s1 s2
Keyword VarName NodeType VpnName DataType = = M Id M Name M Type Var In Var Out
(a) 场变量定义语句与标准化语义模块的映射关系
(GPSta) 和标准化语义模块
场变量定义语句
开始
计算划分和数据分配 VAR AirVolume {NodeType: ROOM, AHU; VPN:VAVsystem;DataType:float}
标准化语义模块
识别场变量定义语句 获取要在本地定义的 {
场变量属性信息 “Json_Type”: “CBlock_Define”,
场变量名称 节点类型集合 标准化语义模块类型库 “SSM_Id”: “00000001”,
生成标准化语义模块名称 = “SSM_Type_Id”: “0x00000001”,
上一个语义模块名称+1 域名 数据类型 “SSM_Type_Name”: “Var_Define”,
标准化语义模块格式库 “Data”: [
“VarName”: “AirVolume”,
查询标准化语义模块类型库, “Nodetype”: “ROOM, AHU”,
生成语义模块名称, 类型码 生成完整的场变量定义语义模块 “VPN”: “VAVsystem”,
“DataType”: “float”
识别语句中的全局信息 结束 ]
},
(b) 场变量定义语句编译算法流程 (c) 场变量定义语句编译转换案例
图 7 场变量定义语句编译示意图
该算法的关键特征在于: 场变量定义语句在网络全局层面进行计算描述, 而 SwarmL 编译系统基于通信生成
树机制, 将对群体任务的全局描述转换为个体节点的控制行为.
3.2.2 全局参数表达式编译算法
全局参数是场变量在计算域上的数据投影, 其表示场变量在发起点或者域中所有节点上的数据集合. 全局参
数表达式通过组合不同参数、计算域和运算符等并行原语, 直观刻画了全局扩散、求和等复杂的群体智能计算任
务, 而无需考虑通信和数据分配等底层计算细节. 以第 1.3 节中的扩散程序为例, 在程序运行时, 构建以发起点为
根节点的生成树, 从发起点开始自根部到末端依次执行. 各节点都将发起点传来的参数数值与本节点上的参数数
值进行运算, 将结果赋值给等号左边的本地参数, 进而实现火灾报警信号全局扩散的效果.
图 8(a) 显示了全局参数表达式 (SSM) 元素间的映射关系. 根据表达式中的运算符
和左右两侧参数的计算域匹配查询标准化语义模块类型库, 映射生成语义模块的类型和名称. 运算符左右两侧的
参数名称被映射为语义模块的输入变量. 表达式运算的结果变量被映射为语义模块的输出变量.
GPSta = <LeftGlobalParameter, Operator, RightGlobalParameter, ResultVar>;
SSM = <M Id , M Name , M Type , Var In , Var Out >;
SSM.M Id = Pre(SSM.M Id ) +1;
(GPSta.LeftScope, GPSta.Operator, GPSta.RightScope) = M.s1, M.s1= (SSM.M Name , SSM.M Type );