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 );
   154   155   156   157   158   159   160   161   162   163   164