CN112394914B - 一种面向物联网应用的以边缘为中心的编程方法 - Google Patents

一种面向物联网应用的以边缘为中心的编程方法 Download PDF

Info

Publication number
CN112394914B
CN112394914B CN202011168995.4A CN202011168995A CN112394914B CN 112394914 B CN112394914 B CN 112394914B CN 202011168995 A CN202011168995 A CN 202011168995A CN 112394914 B CN112394914 B CN 112394914B
Authority
CN
China
Prior art keywords
logic block
code
data
internet
logic
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Active
Application number
CN202011168995.4A
Other languages
English (en)
Other versions
CN112394914A (zh
Inventor
董玮
高艺
袁宇
李博睿
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Zhejiang University ZJU
Original Assignee
Zhejiang University ZJU
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Zhejiang University ZJU filed Critical Zhejiang University ZJU
Priority to CN202011168995.4A priority Critical patent/CN112394914B/zh
Publication of CN112394914A publication Critical patent/CN112394914A/zh
Application granted granted Critical
Publication of CN112394914B publication Critical patent/CN112394914B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/30Creation or generation of source code
    • G06F8/31Programming languages or programming paradigms
    • G06F8/315Object-oriented languages
    • GPHYSICS
    • G16INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR SPECIFIC APPLICATION FIELDS
    • G16YINFORMATION AND COMMUNICATION TECHNOLOGY SPECIALLY ADAPTED FOR THE INTERNET OF THINGS [IoT]
    • G16Y40/00IoT characterised by the purpose of the information processing
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/12Protocols specially adapted for proprietary or special-purpose networking environments, e.g. medical networks, sensor networks, networks in vehicles or remote metering networks
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/34Network arrangements or protocols for supporting network services or applications involving the movement of software or configuration parameters 

Abstract

一种面向物联网应用的以边缘为中心的编程方法,包括:首先根据编程模型编写应用程序;代码分区器获取应用程序涉及的不同硬件平台上的执行时间,预测部署应用程序时所涉及的网络状况;代码分区器将应用程序解析为以逻辑块为基本单元的数据流图,构建逻辑块分配至设备的最优问题,并将该问题转化为整数规划问题求解,根据最优解将逻辑块分配至具体设备;代码生成器将逻辑块的代码转为可编译的C代码;代码编译器将代码编译成可执行程序,将可执行程序传送到边缘服务器上;边缘服务器执行可执行程序,并告知物联网节点获取新的可执行程序,物联网节点上运行的加载代理获取新的可执行应用程序,检测、验证和接收可执行文件并动态运行。

Description

一种面向物联网应用的以边缘为中心的编程方法
技术领域
本发明涉及一种面向物联网应用的编程方法。
背景技术
随着物联网技术的发展,大量物联网设备涌现出来。据预测,到2020年,全球将有500亿物联网设备。随着物联网设备的增加,物联网应用的规模以及复杂性也越来越高。物联网应用程序开发通常涉及在设备端和服务器端分别进行编程,开发者通过对设备端节点编程采集传感数据和控制设备,通过服务器端编程收集节点数据进行进一步分析。但是,这种分别在云端编程的方式不适用于涉及复杂交互和处理密集数据的应用程序。对于复杂交互的物联网应用,使用传统的编程方法开发,应用程序逻辑将分散在不同的传感器节点,从而导致系统复杂性增加和可管理性降低。对于需要处理密集数据的物联网应用,例如语音识别应用程序,按照传统的编程方式,一种方法是将所有传感器数据传输到运行复杂识别算法的服务器,但由于需要传输大量数据,可能消耗物联网设备较多的能量;另一种方法是在物联网设备上运行识别算法,但是由于设备的计算能力不足,这种方法可能会导致过多的延迟。这种云端分开编程的方式需要开发人员做出适当的决定,这是非常困难的。
边缘计算的日益发展为物联网应用程序开发方式的改变提供了契机。借助边缘计算,物联网节点连接到可以执行复杂计算的本地边缘服务器,这些边缘服务器通常具有电源,因此不受能耗的约束。边缘计算可以提供低处理延迟和更好的隐私性。利用边缘的优势,提出了一种面向物联网应用的以边缘为中心的编程方法。为了加快复杂交互应用程序开发过程,基于广泛采用的编程模型IFTTT设计了一种用于指定多设备交互的编程语言。为了进一步提高表达能力并采用数据密集型计算,使用虚拟传感器扩展了传统的IFTTT语法,从而加快了开发人员利用机器学习技术设计自己的数据处理逻辑的速度。
总的来看,相比于云端分开编程的物联网应用开发方式,以边缘为中心的编程方法,极大地简化了物联网应用程序编程,对涉及复杂交互和处理密集数据的应用程序,提供很好的编程支持,从而提高了物联网应用开发效率。
发明内容
本发明要克服现有技术的上述缺点,提出了一种面向物联网应用的以边缘为中心的编程方法。
本发明的目的是利用以边缘为中心的编程方法,简化涉及复杂交互和处理密集数据的物联网应用程序开发过程,提高物联网应用开发效率。
为实现以上目的,本发明所采取的技术方案是:提出了一种面向物联网应用的以边缘为中心的编程方法,该方法包括以下步骤。
步骤1:开发者根据本发明提供的编程模型编写应用程序,编程模型分为三个部分:设备配置、逻辑实现和规则定义。
步骤2:利用性能测试和统计来获取不同硬件平台上的执行时间。对于低端传感器节点,利用周期精确的模拟器来获取时序信息,针对基于MSP430的节点采用MSPsim,针对基于AVR的节点采用Avrora来获取时间信息。对于Raspberry Pi等高端设备,选择接近周期精确的模拟器gem5分析。
步骤3:预测部署应用程序时的网络状况。利用多输出支持向量回归算法(M-SVR)生成一系列表示间隔序列中未来网络状况的预测结果。预测器的输入为带宽和接收信号强度指示符之类的原始观测值,数据以0.1Hz采样以便不影响常规网络传输。预测器输出将来的吞吐量估算值和每个数据包的传输时间。
步骤4:代码分区器首先将步骤1输入的应用程序预处理为许多逻辑块,每个逻辑块代表一个计算阶段。逻辑块是键值对为<功能,设备>的元组,代表在设备上执行相应功能操作,功能操作包括两种类型,一种是设备操作原语,一种是步骤1引入的虚拟传感器操作。根据元组中设备不同,逻辑块分为两种:固定和可移动。固定块执行的通常是受物理约束的功能,须指定执行设备;可移动逻辑块执行的计算可以部署在设备或边缘服务器上,具有一定的灵活性。固定逻辑块元组中设备名称为步骤1定义的设备别名,可移动逻辑块的设备用问号表示,以表示不确定性。代码分区器使用以下3种策略将步骤1中规则定义部分解析为以逻辑块为基本单元的数据流图:
(1)对于在IF语句中利用虚拟传感器的条件,从逻辑实现部分获取虚拟传感器工作流程,转换为可移动逻辑块,并为该部分的输入插入数据采样SAMPLE逻辑块。
(2)对于仅比较传感器值的条件,将其转换为两个阶段:数据采样SAMPLE和数值比较CMP,使用CONJ块表示IF语句中所有条件的合计。
(3)对于THEN语句中的每个动作,使用两个逻辑块的前后组合表示:一个可移动逻辑块AUX表示该动作是边缘服务器触发或本地设备触发的,AUX后面的一个固定逻辑块ACTUATE表示该动作的实际执行。
步骤5:借助步骤4得到的以逻辑块为基本单元的数据流图,将最佳设备分配问题公式化为数值优化问题。以二元指示符
Figure BDA0002746705600000031
表示分配结果:
Figure BDA0002746705600000032
其中si表示可能将逻辑块bi分配其上的设备。
以G(V,E)表示数据流图,以p表示从起始逻辑块到末尾逻辑块的完整路径;len(p)表示路径p的长度即该路径上总耗时,包含逻辑块执行计算的时间以及前后逻辑块设备之间的数据传播时延;δ(p)表示路径p中的逻辑块即顶点数,P(G)表示数据流图G中包含所有完整路径的集合。优化目标为最大程度地缩短数据流图中最长路径的长度,即min maxp∈P(G)len(p),表示如下:
Figure BDA0002746705600000041
其中,i,i′表示路径p上的相邻逻辑块,i′=i+1。Si表示第i个逻辑块的计算可能分配到的设备集合。
Figure BDA0002746705600000042
表示第i个逻辑块的计算在设备si上的处理时间,由步骤2的时间分析器提供。
Figure BDA0002746705600000043
表示数据在位于设备si与设备si′之间的传输时间,si与si′分别为执行逻辑块bi与逻辑块bi′计算的设备,如果两个连续的逻辑块计算运行在同一设备上,则数据传输时间可以忽略不计,于是有:
Figure BDA0002746705600000044
qii′表示边缘设备(i,i′)之间数据传输大小,rii′k表示传输协议k的每个数据包的最大有效负载,tii′k表示协议k每个数据包的传输时间,由步骤3的网络预测器提供。
步骤6:将公式(2)转换为整数规划问题(以下简称ILP),引入辅助变量
Figure BDA0002746705600000045
代替二次项
Figure BDA0002746705600000046
将二次目标函数转换为线性目标函数,
Figure BDA0002746705600000047
的引入的同时需引入以下约束:
Figure BDA0002746705600000048
Figure BDA0002746705600000049
Figure BDA00027467056000000410
Figure BDA00027467056000000411
然后对极大极小形式的目标函数进一步变换,引入辅助变量z,并将内部max函数转换为一组约束,使其遵循标准ILP问题公式。重写的ILP目标函数如下所示:
Figure BDA0002746705600000051
服从条件:
Figure BDA0002746705600000052
为确保将所有逻辑块计算都指定给特定的设备,
Figure BDA0002746705600000053
需添加约束:
Figure BDA0002746705600000054
利用lp_solve算法求解服从式(4)-(7),式(9)和式(10)约束的公式(8)的最佳解,即为输入应用程序逻辑块的最佳划分。
步骤7:代码生成器借助Contiki的代码模板和带有接收回调功能的发送线程构造可编译代码。原型线程从步骤2中求解的最优数据流图片段生成。每个设备的代码片段通过利用图的深度优先遍历获得,该遍历在设备更改时结束。然后,通过调用逻辑块的函数,将一个线程与一个片段组装在一起,以线程为载体执行代码片段。在线程执行末尾,向发送线程发出事件以进行数据传输,并让步其他线程。
步骤8:代码编译器根据目标平台将代码编译成可执行程序,之后将可执行程序传送到边缘服务器上。
步骤9:边缘服务器执行属于其的可执行程序,并告知物联网节点获取新的可执行程序。
步骤10:物联网节点上运行的加载代理通过与边缘服务器通信以获取新的可执行应用程序,检测、验证和接收可执行文件并动态运行。
本发明的优点是:简化物联网应用程序编程,对涉及复杂交互和密集数据处理的应用程序,提供很好的编程支持,从而提高了物联网应用开发效率。
附图说明
为了更清楚地说明本发明实例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是实施本发明方法的工作流程图。
图2是本发明提供的特定编程语言规范编写的应用程序示例图。
图3是本发明将应用程序解析成的以逻辑块为基本单元的数据流图。
具体实施方式
下面将结合本发明实例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明的保护范围。
本发明实例提供了一种面向物联网应用的以边缘为中心的编程方法,下面介绍本发明工作流程。
步骤1:基于本发明提供的特定编程语言规范编写应用程序,包括设备配置、逻辑实现、规则定义三部分,如图2所示。设备配置部分定义设备类型与传感器属性。逻辑实现部分引入虚拟传感器处理密集数据,虚拟传感器是描述复杂数据处理算法的有效方法集合,这些算法通常分为特征提取和分类阶段。首先需定义虚拟传感器名称及各阶段名称,然后定义输入数据源,各阶段所使用模型,最后定义虚拟传感器输出。规则定义部分采用IF-THEN的IFTTT编程模式达到以边缘为中心来组织应用程序逻辑的目标。
步骤2:利用性能测试和统计来获取不同硬件平台上的执行时间。对于低端传感器节点,利用周期精确的模拟器来获取时序信息,针对基于MSP430的节点采用MSPsim,针对基于AVR的节点采用Avrora来获取时间信息。对于Raspberry Pi等高端设备,选择接近周期精确的模拟器gem5分析。
步骤3:预测部署应用程序时的网络状况。利用多输出支持向量回归算法(M-SVR)生成一系列表示间隔序列中未来网络状况的预测结果。预测器的输入为带宽和接收信号强度指示符之类的原始观测值,数据以0.1Hz采样以便不影响常规网络传输。预测器输出将来的吞吐量估算值和每个数据包的传输时间。
步骤4:代码分区器的输入为步骤1中的原始应用程序,步骤2的时间测量结果以及步骤3的网络预测结果。代码分区器首先将步骤1输入的应用程序预处理为许多逻辑块,每个逻辑块代表一个计算阶段,如图3所示。逻辑块是键值对为<功能,设备>的元组,代表在设备上执行相应功能操作,功能操作包括两种类型,一种是设备操作原语,如数据采样SAMPLE,数值比较CMP,输出执行ACTUATE和条件合计处理CONJ等,一种是步骤1引入的虚拟传感器操作,如GMM算法训练。根据元组中设备不同,逻辑块分为两种:固定和可移动。固定块执行的通常是受物理约束的功能,须指定执行设备,例如必须将SAMPLE操作放在设备上。可移动逻辑块执行的计算可以部署在设备或边缘服务器上,具有一定的灵活性。固定逻辑块元组中设备名称为步骤1定义的设备别名,可移动逻辑块的设备用问号表示,以表示不确定性。
代码分区器使用以下3种策略将步骤1中规则定义部分解析为以逻辑块为基本单元的数据流图,从而获得用户逻辑以及每个计算阶段依赖性的完整视图:
(1)对于在IF语句中利用虚拟传感器的条件,从逻辑实现部分获取虚拟传感器工作流程,转换为可移动逻辑块,并为该部分的输入插入数据采样SAMPLE逻辑块。
(2)对于仅比较传感器值的条件,将其转换为两个阶段:数据采样SAMPLE和数值比较CMP,使用CONJ块表示IF语句中所有条件的合计。
(3)对于THEN语句中的每个动作,使用两个逻辑块的前后组合表示:一个可移动逻辑块AUX表示该动作是边缘服务器触发或本地设备触发的,AUX后面的一个固定逻辑块ACTUATE表示该动作的实际执行。
步骤5:借助以逻辑块为基本单元的数据流图,将最佳设备分配问题公式化为数值优化问题。代码分区器的目标是求解每个可移动逻辑块功能执行的最佳设备,达到充分利用每个设备的计算能力以减少延迟的目的。
以二元指示符
Figure BDA0002746705600000081
表示分配结果:
Figure BDA0002746705600000082
其中si表示可能将逻辑块bi分配其上的设备。
以G(V,E)表示数据流图,以p表示从起始逻辑块到末尾逻辑块的完整路径;len(p)表示路径p的长度即该路径上总耗时,包含逻辑块执行计算的时间以及前后逻辑块设备之间的数据传播时延;δ(p)表示路径p中的逻辑块即顶点数,P(G)表示数据流图G中包含所有完整路径的集合。优化目标为最大程度地缩短数据流图中最长路径的长度,即min maxp∈P(G)len(p),表示如下:
Figure BDA0002746705600000083
其中,i,i′表示路径p上的相邻逻辑块,i′=i+1。Si表示第i个逻辑块的计算可能分配到的设备集合。
Figure BDA0002746705600000084
表示第i个逻辑块的计算在设备si上的处理时间,由步骤2的时间分析器提供。
Figure BDA0002746705600000085
表示数据在位于设备si与设备si′之间的传输时间,si与si′分别为执行逻辑块bi与逻辑块bi′计算的设备,如果两个连续的逻辑块计算运行在同一设备上,则数据传输时间可以忽略不计,于是有:
Figure BDA0002746705600000091
qii′表示边缘设备(i,i′)之间数据传输大小,rii′k表示传输协议k的每个数据包的最大有效负载,tii′k表示协议k每个数据包的传输时间,由步骤3的网络预测器提供。
步骤6:将数值优化问题转换为整数规划问题。公式(2)的目标公式是一个二次极大极小问题,被证明是一个NP难问题。将公式(2)转换为整数规划问题(以下简称ILP),进而可以通过标准求解器有效求解。首先通过引入辅助变量
Figure BDA0002746705600000092
代替二次项
Figure BDA0002746705600000093
将二次目标函数转换为线性目标函数,
Figure BDA0002746705600000094
的引入的同时需引入以下约束:
Figure BDA0002746705600000095
Figure BDA0002746705600000096
Figure BDA0002746705600000097
Figure BDA0002746705600000098
以上所有四个约束都是线性的。然后对极大极小形式的目标函数进一步变换,引入辅助变量z,并将内部max函数转换为一组约束,使其遵循标准ILP问题公式。重写的ILP目标函数如下所示:
Figure BDA0002746705600000099
服从条件:
Figure BDA00027467056000000910
此外,为确保将所有逻辑块计算都指定给特定的设备,
Figure BDA00027467056000000911
需添加约束:
Figure BDA00027467056000000912
致此,原二次极大极小问题转换为ILP完成。利用lp_solve算法求解服从式(4)-(7),式(9)和式(10)约束的公式(8)的最佳解,即为输入应用程序逻辑块的最佳划分。
步骤7:从最佳分区和逻辑块构造Contiki操作系统上可编译代码段。
借助Contiki操作系统的跨平台特性,可以将逻辑块转换为函数,为Linux边缘服务器以及传感设备生成最终的可编译代码,难点在于如何在生成的代码中高效组织函数调用。利用Contiki事件驱动内核和原型线程技术最直观的方法是将所有分配给同一设备的逻辑块安排在同一原型线程中,若随后的逻辑块分属另一个设备,则执行发送/接收数据。这种设计生成的原型线程可能太长,由于Contiki1的非抢占式调度而降低了系统性能。若一个逻辑块对应一个原型线程会导致增加线程切换开销,降低整体运行时间。
本发明方法利用Contiki的代码模板和带有接收回调功能的发送线程构造可编译代码。原型线程从步骤2中求解的最优数据流图片段生成。每个设备的代码片段通过利用图的深度优先遍历获得,该遍历在设备更改时结束。然后,通过调用逻辑块的函数,将一个线程与一个片段组装在一起,以线程为载体执行代码片段。在线程执行末尾,向发送线程发出事件以进行数据传输,并让步其他线程。
步骤8:将代码编译为特定平台的可执行文件。使用Contiki提供的特定于平台的工具链对步骤3生成的代码进行编译,该工具链包括为TelosB平台提供的msp430-gcc工具和为Raspberry Pi提供的gcc-linaro-arm工具。编译完成后将可执行程序传送到边缘服务器上。
步骤9:边缘服务器执行属于其的可执行程序,并告知物联网节点获取新的可执行程序
步骤10:物联网节点上运行的加载代理通过与边缘服务器通信以获取新的可执行应用程序,检测、验证和接收可执行文件并动态运行。
本说明书实施例所述的内容仅仅是对发明构思的实现形式的列举,本发明的保护范围不应当被视为仅限于实施例所陈述的具体形式,本发明的保护范围也及于本领域技术人员根据本发明构思所能够想到的等同技术手段。

Claims (1)

1.一种面向物联网应用的以边缘为中心的编程方法,包括以下步骤:
步骤1:开发者根据本发明提供的编程模型编写应用程序,编程模型分为三个部分:设备配置、逻辑实现和规则定义;
步骤2:利用性能测试和统计来获取不同硬件平台上的执行时间;对于低端传感器节点,利用周期精确的模拟器来获取时序信息,针对基于MSP430的节点采用MSPsim,针对基于AVR的节点采用Avrora来获取时间信息;对于Raspberry Pi等高端设备,选择接近周期精确的模拟器gem5分析;
步骤3:预测部署应用程序时的网络状况;利用多输出支持向量回归算法(M-SVR)生成一系列表示间隔序列中未来网络状况的预测结果;预测器的输入为带宽和接收信号强度指示符之类的原始观测值,数据以0.1Hz采样以便不影响常规网络传输;预测器输出将来的吞吐量估算值和每个数据包的传输时间;
步骤4:代码分区器首先将步骤1输入的应用程序预处理为许多逻辑块,每个逻辑块代表一个计算阶段;逻辑块是键值对为<功能,设备>的元组,代表在设备上执行相应功能操作,功能操作包括两种类型,一种是设备操作原语,一种是步骤1引入的虚拟传感器操作;根据元组中设备不同,逻辑块分为两种:固定和可移动;固定块执行的通常是受物理约束的功能,须指定执行设备;可移动逻辑块执行的计算可以部署在设备或边缘服务器上,具有一定的灵活性;固定逻辑块元组中设备名称为步骤1定义的设备别名,可移动逻辑块的设备用问号表示,以表示不确定性;代码分区器使用以下3种策略将步骤1中规则定义部分解析为以逻辑块为基本单元的数据流图:
(1)对于在IF语句中利用虚拟传感器的条件,从逻辑实现部分获取虚拟传感器工作流程,转换为可移动逻辑块,并为该部分的输入插入数据采样SAMPLE逻辑块;
(2)对于仅比较传感器值的条件,将其转换为两个阶段:数据采样SAMPLE和数值比较CMP,使用CONJ块表示IF语句中所有条件的合计;
(3)对于THEN语句中的每个动作,使用两个逻辑块的前后组合表示:一个可移动逻辑块AUX表示该动作是边缘服务器触发或本地设备触发的,AUX后面的一个固定逻辑块ACTUATE表示该动作的实际执行;
步骤5:借助步骤4得到的以逻辑块为基本单元的数据流图,将最佳设备分配问题公式化为数值优化问题;以二元指示符
Figure 54135DEST_PATH_IMAGE002
表示分配结果:
Figure 768013DEST_PATH_IMAGE004
(1)
其中
Figure 859334DEST_PATH_IMAGE006
表示可能将逻辑块
Figure 316860DEST_PATH_IMAGE008
分配其上的设备;
Figure 927970DEST_PATH_IMAGE010
表示数据流图,以
Figure 297903DEST_PATH_IMAGE012
表示从起始逻辑块到末尾逻辑块的完整路径;
Figure 627253DEST_PATH_IMAGE014
表示路径
Figure DEST_PATH_IMAGE016
的长度即该路径上总耗时,包含逻辑块执行计算的时间以及前后逻辑块设备之间的数据传播时延;
Figure DEST_PATH_IMAGE018
表示路径
Figure 484875DEST_PATH_IMAGE012
中的逻辑块即顶点数,
Figure 216071DEST_PATH_IMAGE020
表示数据流图
Figure 6172DEST_PATH_IMAGE022
中包含所有完整路径的集合;优化目标为最大程度地缩短数据流图中最长路径的长度,即
Figure 806507DEST_PATH_IMAGE024
,表示如下:
Figure 605836DEST_PATH_IMAGE026
其中,
Figure 676691DEST_PATH_IMAGE028
表示路径
Figure DEST_PATH_IMAGE030
上的相邻逻辑块,
Figure DEST_PATH_IMAGE032
Figure DEST_PATH_IMAGE034
表示第
Figure DEST_PATH_IMAGE036
个逻辑块的计算可能分配到的设备集合;
Figure DEST_PATH_IMAGE038
表示第
Figure DEST_PATH_IMAGE040
个逻辑块的计算在设备
Figure DEST_PATH_IMAGE042
上的处理时间,由步骤2的时间分析器提供;
Figure 608000DEST_PATH_IMAGE044
表示数据在位于设备
Figure DEST_PATH_IMAGE046
与设备
Figure DEST_PATH_IMAGE048
之间的传输时间,
Figure 90104DEST_PATH_IMAGE046
Figure 427545DEST_PATH_IMAGE048
分别为执行逻辑块
Figure DEST_PATH_IMAGE050
与逻辑块
Figure DEST_PATH_IMAGE052
计算的设备,如果两个连续的逻辑块计算运行在同一设备上,则数据传输时间可以忽略不计,于是有:
Figure DEST_PATH_IMAGE054
(3)
Figure DEST_PATH_IMAGE056
表示边缘设备
Figure DEST_PATH_IMAGE058
之间数据传输大小,
Figure DEST_PATH_IMAGE060
表示传输协议
Figure DEST_PATH_IMAGE062
的每个数据包的最大有效负载,
Figure 775743DEST_PATH_IMAGE064
表示协议
Figure 173226DEST_PATH_IMAGE062
每个数据包的传输时间,由步骤3的网络预测器提供;
步骤6:将公式(2)转换为整数规划问题,以下简称ILP,引入辅助变量
Figure 213732DEST_PATH_IMAGE066
代替二次项
Figure 354863DEST_PATH_IMAGE068
将二次目标函数转换为线性目标函数,
Figure 134732DEST_PATH_IMAGE070
的引入的同时需引入以下约束:
Figure 968696DEST_PATH_IMAGE072
然后对极大极小形式的目标函数进一步变换,引入辅助变量z,并将内部max函数转换为一组约束,使其遵循标准ILP问题公式;重写的ILP目标函数如下所示:
Figure 716072DEST_PATH_IMAGE074
服从条件:
Figure 62313DEST_PATH_IMAGE078
为确保将所有逻辑块计算都指定给特定的设备,
Figure 552331DEST_PATH_IMAGE080
需添加约束:
Figure DEST_PATH_IMAGE082
利用lp_solve算法求解服从式(4)-(7),式(9)和式(10)约束的公式(8)的最佳解,即为输入应用程序逻辑块的最佳划分;
步骤7:代码生成器借助Contiki的代码模板和带有接收回调功能的发送线程构造可编译代码;原型线程从步骤4中求解的最优数据流图片段生成;每个设备的代码片段通过利用图的深度优先遍历获得,该遍历在设备更改时结束;然后,通过调用逻辑块的函数,将一个线程与一个片段组装在一起,以线程为载体执行代码片段;在线程执行末尾,向发送线程发出事件以进行数据传输,并让步其他线程;
步骤8:代码编译器根据目标平台将代码编译成可执行程序,之后将可执行程序传送到边缘服务器上;
步骤9:边缘服务器执行属于其的可执行程序,并告知物联网节点获取新的可执行程序;
步骤10:物联网节点上运行的加载代理通过与边缘服务器通信以获取新的可执行应用程序,检测、验证和接收可执行文件并动态运行。
CN202011168995.4A 2020-10-28 2020-10-28 一种面向物联网应用的以边缘为中心的编程方法 Active CN112394914B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202011168995.4A CN112394914B (zh) 2020-10-28 2020-10-28 一种面向物联网应用的以边缘为中心的编程方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202011168995.4A CN112394914B (zh) 2020-10-28 2020-10-28 一种面向物联网应用的以边缘为中心的编程方法

Publications (2)

Publication Number Publication Date
CN112394914A CN112394914A (zh) 2021-02-23
CN112394914B true CN112394914B (zh) 2022-05-24

Family

ID=74597679

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202011168995.4A Active CN112394914B (zh) 2020-10-28 2020-10-28 一种面向物联网应用的以边缘为中心的编程方法

Country Status (1)

Country Link
CN (1) CN112394914B (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113114760A (zh) * 2021-04-12 2021-07-13 浙江大学 一种基于异构设备的远程物联网平台的构建方法

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9866637B2 (en) * 2016-01-11 2018-01-09 Equinix, Inc. Distributed edge processing of internet of things device data in co-location facilities
KR102092721B1 (ko) * 2016-03-23 2020-04-23 포그혼 시스템스 인코포레이티드 실시간 데이터플로우 프로그래밍에서 패턴 구동형 반응의 구성
CN110377278B (zh) * 2019-06-03 2023-11-03 杭州黑胡桃人工智能研究院 一种基于人工智能与物联网的可视化编程工具系统

Also Published As

Publication number Publication date
CN112394914A (zh) 2021-02-23

Similar Documents

Publication Publication Date Title
Lee et al. Compass: A framework for automated performance modeling and prediction
US6925431B1 (en) Method and system for predicting communication delays of detailed application workloads
Wolf Behavioral intervals in embedded software: timing and power analysis of embedded real-time software processes
US8352505B1 (en) Identification of resource sharing patterns through isomorphic subtree enumeration
CN111897580B (zh) 一种可重构阵列处理器的指令调度系统及方法
CN104407968B (zh) 一种通过静态分析测算代码指令最长运行时间的方法
Obaida et al. Parallel application performance prediction using analysis based models and HPC simulations
US20240094290A1 (en) Integrating Machine Learning Delay Estimation in FPGA-Based Emulation Systems
CN117355847A (zh) 用于采用混合经典/量子系统的增强量子电路操作的通信协调和节点同步
CN112394914B (zh) 一种面向物联网应用的以边缘为中心的编程方法
CN111435352A (zh) 一种分布式实时计算方法、装置、系统及其存储介质
CN106469114A (zh) 一种面向通信测试的并行计算性能检测系统及其方法
Huybrechts et al. COBRA-HPA: a block generating tool to perform hybrid program analysis
Schwarzer et al. Compilation of dataflow applications for multi-cores using adaptive multi-objective optimization
US20230116546A1 (en) Method for compilation, electronic device and storage medium
KR20200132460A (ko) 프로그램 분석 방법 및 그 시스템
Carpenter et al. A streaming machine description and programming model
Thüm et al. Performance analysis strategies for software variants and versions
Michalska et al. A methodology for profiling and partitioning stream programs on many-core architectures
George et al. An Integrated Simulation Environment for Parallel and Distributed System Prototying
CN108920149A (zh) 编译方法和编译装置
CN102760097B (zh) 一种计算机体系结构性能模拟方法及系统
Brumar Early-Stage Non-Conventional Hardware Accelerator Discovery via Optimization Methods and Compiler Analysis
US20230306272A1 (en) Mapping Workloads to Circuit Units in a Computing Device via Reinforcement Learning
Neugebauer Efficient implementation of resource-constrained cyber-physical systems using multi-core parallelism

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant