《信息物理融合系统(CPS)设计、建模与仿真——基于 Ptolemy II 平台》——3.3 小结

简介: 数据流是一个简单和通用的计算模型,其中角色的执行由输入数据的可用性来驱动。它对流(expressing streaming)应用的表示特别有用,其中长数据值序列通过计算选择路径,如常见的信号处理和多媒体应用。

本节书摘来自华章出版社《信息物理融合系统(CPS)设计、建模与仿真——基于 Ptolemy II 平台》一书中的第3章,第3.3节,作者:[美]爱德华·阿什福德·李(Edward Ashford Lee),更多章节内容可以访问云栖社区“华章计算机”公众号查看

3.3 小结

数据流是一个简单和通用的计算模型,其中角色的执行由输入数据的可用性来驱动。它对流(expressing streaming)应用的表示特别有用,其中长数据值序列通过计算选择路径,如常见的信号处理和多媒体应用。
SDF是一个简单的(尽管是有限制的)数据流形式,它能进行大量的静态分析和有效的执行。DDF更为灵活,但是对它的控制也更具挑战性,并且执行开销更大,因为它在运行时进行调度决策的定制。它们两者可以整合到一个模型中,因于DDF产生额外的开销,因此仅应用在非用不可的地方。SDF和DDF在模态模型中的良好运用将在第8章解释。使用SDF和DDF的模态模型提供一个通用的并发程序模型。
补充阅读:IO角色
以下是在IO库中重要的输入/输出角色:
3

FileReader和FileWriter通过URL或者URI从本地磁盘或从指定的远程位置读和写文件。对于FileReader,在一个单个输出字符串令牌上产生文件的全部内容。对于FileWriter,将每个输入字符串令牌写入一个文件,重写之前的文件内容。在这两种情况下,可以为每次点火给出新的文件名。为了从标准输入读取,指定System.in为文件名。为了写入标准输出,指定System.out为文件名。LineReader和LineWriter类似,除了它们每次读和写一行。
CSVReader和CSVWriter读和写CSV格式或者逗号分隔值(分隔符可以是任何东西,不一定是逗号)的文件或URL。将CSV文件转换成记录令牌,并将记录(record)令牌转换为CSV文件。文件的第一行定义记录的文件名。为了使用CSVReader,需要帮助类型系统决定输出类型。其最简单的实现方法是可以用后向类型推断(backward type inference)(见14.1.4节)。它设置CSVReader角色输出端口的数据类型为最通用的类型,这个类型能被角色下游接受。例如,如果角色下游从记录中提取字段,类型约束将自动地要求那些字段出现并具有兼容的类型。也可以强制输出类型使用[Customize→Ports]上下文菜单命令。
在IO库中还包含了下面的角色:
3

ArrowKeySensor对键盘的方向键做出响应,并产生输出。
DirectoryListing输出指定目录下与命名某一模式相匹配的文件名数组。
练习

  1. 3.1.3节补充阅读:多速率数据流角色中描述的多速率角色与第2章补充阅读:数组处理角色和补充阅读:数组构建与拆分角色中描述的数组角色对用SDF构建集合操作(collectiveoperations)很有用,这些都是对数据数组的操作。这个练习探讨利用SDF实现所谓的多对多分散/收集(all-to-all scatter/gather)。具体地说,就是构建一个模型,使它产生以下所示的4个数组,它们的值如下:
    3

并将它们转换为具有如下值的数组
3

请用ArrayToElements和ElementsToArray,以及ArrayToSequence和SequenceTo Array(对于后者,可能需要Commutator和Distributor)。评论方法的优缺点。提示:可能必须明确地将连接的通道宽度设置为1。双击线路并设置值。可能要尝试用MultiInstanceComposite。

  1. 如图3-15中的模型,在例3.15中有讨论。使用IterateOverArray角色实现这个相同的模型,并且只用SDF指示器而不用DDF指示器(见2.7.2节)。
  2. Ptolemy II中的DDF指示器支持一个称为ActorRecursion的角色,它是一个对包含它的复合角色的递归。例如,图3-16所示的模型实现Eratosthenes筛选法,其用来寻找素数的方法详见kann和 MacQueen(1977)。
    使用这个角色实现一个计算斐波那契数的复合角色。即复合角色的一次点火需要实现以下点火函数:

f : N → N,对于所有n ∈ N,
3

图3-16 在DDF中使用ActorRecursion的Eratosthenes筛选法
当ActorRecursion点火时,它复制分层结构中上层的复合角色(即它的容器,或者它容器的容器等),层次的名称与它的recursionActor参数值相同。ActorRecursion的实例用那些与容器匹配的端口来填充。这个角色应该视为对特殊种类高阶角色的一个高度的实验实现(experimental realization)。这是一个高阶角色,因为它的参数由一个包含它的角色来指定。然而,它的实现是非常低效的。它每次点火所引用的角色的副本会带来巨大的时间和空间开销。一个更好的实现方式是使用类似于面向过程语言中所使用的栈帧的方法(stack frame approach)。而它使用的这个方法更像是在运行时复制源代码并解释它。为了提高执行效率,如果角色已经提前创建,那么要避免创建副本。仅凭图3-16中的图像,没有办法分辨ActorRecursion实例引用了哪个复合角色。因此,无法从它的可视化表示中真正地阅读该程序。

相关文章
《信息物理融合系统(CPS)设计、建模与仿真——基于 Ptolemy II 平台》——1.5 层次结构模型
本节书摘来自华章出版社《信息物理融合系统(CPS)设计、建模与仿真——基于 Ptolemy II 平台》一书中的第1章,第1.5节,作者:[美]爱德华·阿什福德·李(Edward Ashford Lee),更多章节内容可以访问云栖社区“华章计算机”公众号查看 1.5层次结构模型 复杂系统的模型通常很复杂。
1885 0
|
开发者
《信息物理融合系统(CPS)设计、建模与仿真——基于 Ptolemy II 平台》——导读
本书是为需要对各种系统建模的工程师和科学家,以及想了解如何为复杂、异构系统建模的人而编写的。这些系统包括机械系统、电气系统、控制系统、生物系统等,更有趣的是,还包括结合了这些领域或者其他领域元素的异构系统。本书假设读者熟悉仿真和建模工具及其技术,但不要求对这些内容有深厚的背景知识。
2503 0
《信息物理融合系统(CPS)设计、建模与仿真——基于 Ptolemy II 平台》——导读
《信息物理融合系统(CPS)设计、建模与仿真——基于 Ptolemy II 平台》——1.4 角色模型
本节书摘来自华章出版社《信息物理融合系统(CPS)设计、建模与仿真——基于 Ptolemy II 平台》一书中的第1章,第1.4节,作者:[美]爱德华·阿什福德·李(Edward Ashford Lee),更多章节内容可以访问云栖社区“华章计算机”公众号查看 角色模型 Ptolemy II基于一类面向角色的模型(actor-oriented model),或简单称为角色模型(actor model)。
1499 0
《信息物理融合系统(CPS)设计、建模与仿真——基于 Ptolemy II 平台》——1.7 时间模型
本节书摘来自华章出版社《信息物理融合系统(CPS)设计、建模与仿真——基于 Ptolemy II 平台》一书中的第1章,第1.7节,作者:[美]爱德华·阿什福德·李(Edward Ashford Lee),更多章节内容可以访问云栖社区“华章计算机”公众号查看 1.7时间模型 有些计算模型有时间(time)概念。
1571 0
|
Java C语言
《信息物理融合系统(CPS)设计、建模与仿真——基于 Ptolemy II 平台》——1.3 模型在设计中的作用
本节书摘来自华章出版社《信息物理融合系统(CPS)设计、建模与仿真——基于 Ptolemy II 平台》一书中的第1章,第1.3节,作者:[美]爱德华·阿什福德·李(Edward Ashford Lee),更多章节内容可以访问云栖社区“华章计算机”公众号查看 1.3模型在设计中的作用 本书为在Ptolemy II中理解和建立模型提供了一个框架,更广泛地说,这是理解建模中的关键问题并对复杂异构系统进行仿真的一个框架。
1896 0
|
uml C++
《信息物理融合系统(CPS)设计、建模与仿真——基于 Ptolemy II 平台》——1.6 异构建模的方法
本节书摘来自华章出版社《信息物理融合系统(CPS)设计、建模与仿真——基于 Ptolemy II 平台》一书中的第1章,第1.6节,作者:[美]爱德华·阿什福德·李(Edward Ashford Lee),更多章节内容可以访问云栖社区“华章计算机”公众号查看 1.6异构建模的方法 异构建模有很多种方法(Book et al.,2008)。
2705 0