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

3.3 小结

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

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库中还包含了下面的角色:

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

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

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

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

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

  1. 《信息物理融合系统(CPS)设计、建模与仿真——基于 Ptolemy II 平台》——第3章 数据流 3.1同步数据流...

    本节书摘来自华章出版社<信息物理融合系统(CPS)设计.建模与仿真--基于 Ptolemy II 平台>一书中的第3章,第3.1节,作者:[美]爱德华·阿什福德·李(Edward Ashf ...

  2. 《信息物理融合系统(CPS)设计、建模与仿真——基于 Ptolemy II 平台》——第2章 图形化建模 2.1开始...

    本节书摘来自华章出版社<信息物理融合系统(CPS)设计.建模与仿真--基于 Ptolemy II 平台>一书中的第2章,第2.1节,作者:[美]爱德华·阿什福德·李(Edward Ashf ...

  3. 《信息物理融合系统(CPS)设计、建模与仿真——基于 Ptolemy II 平台》——1.6 异构建模的方法...

    本节书摘来自华章出版社<信息物理融合系统(CPS)设计.建模与仿真--基于 Ptolemy II 平台>一书中的第1章,第1.6节,作者:[美]爱德华·阿什福德·李(Edward Ashf ...

  4. 《信息物理融合系统(CPS)设计、建模与仿真——基于 Ptolemy II 平台》——3.2 动态数据流...

    本节书摘来自华章出版社<信息物理融合系统(CPS)设计.建模与仿真--基于 Ptolemy II 平台>一书中的第3章,第3.2节,作者:[美]爱德华·阿什福德·李(Edward Ashf ...

  5. 《信息物理融合系统(CPS)设计、建模与仿真——基于 Ptolemy II 平台》——1.2 域和计算模型...

    本节书摘来自华章出版社<信息物理融合系统(CPS)设计.建模与仿真--基于 Ptolemy II 平台>一书中的第1章,第1.2节,作者:[美]爱德华·阿什福德·李(Edward Ashf ...

  6. 《信息物理融合系统(CPS)设计、建模与仿真——基于 Ptolemy II 平台》——2.6 类和继承...

    本节书摘来自华章出版社<信息物理融合系统(CPS)设计.建模与仿真--基于 Ptolemy II 平台>一书中的第2章,第2.6节,作者:[美]爱德华·阿什福德·李(Edward Ashf ...

  7. 《信息物理融合系统(CPS)设计、建模与仿真——基于 Ptolemy II 平台》——2.5 如何操作大模型...

    本节书摘来自华章出版社<信息物理融合系统(CPS)设计.建模与仿真--基于 Ptolemy II 平台>一书中的第2章,第2.5节,作者:[美]爱德华·阿什福德·李(Edward Ashf ...

  8. 《信息物理融合系统(CPS)设计、建模与仿真——基于 Ptolemy II 平台》——1.9 案例研究...

    本节书摘来自华章出版社<信息物理融合系统(CPS)设计.建模与仿真--基于 Ptolemy II 平台>一书中的第1章,第1.9节,作者:[美]爱德华·阿什福德·李(Edward Ashf ...

  9. 《信息物理融合系统(CPS)设计、建模与仿真——基于 Ptolemy II 平台》——2.7 高阶组件...

    本节书摘来自华章出版社<信息物理融合系统(CPS)设计.建模与仿真--基于 Ptolemy II 平台>一书中的第2章,第2.7节,作者:[美]爱德华·阿什福德·李(Edward Ashf ...

最新文章

  1. CSS布局之-水平垂直居中
  2. 教你搭建基于typescript的vue项目
  3. Linux内核源码分析--内核启动之(2)Image内核启动(汇编部分)(Linux-3.0 ARMv7) 【转】...
  4. mfc怎么计算字符串宽度_Python基础之好玩的字符串格式化f-string格式
  5. 登陆失败bdstoken_解决PanDownload登录提示账号登录失败,获取bdstoken失败问题
  6. 发票抬头是什么意思?
  7. matlab多种分配方案_基于MATLAB的水资源优化分配问题动态规划解法
  8. 为什么需要分布式配置中心
  9. ispostback之坑
  10. JDK11.0.9-windows64下载
  11. oppoa79支持手机html,oppo a79驱动
  12. lzw编码c语言,LZW字典压缩算法的实现
  13. 计算机学硕考公更好还是专硕,专硕 VS 学硕 你适合读哪种?
  14. 【经验分享】BMPR文件及其打开软件Balsamiq Wireframes的下载和安装
  15. 生活都不容易,如果你感觉生活很苦,那就说明你在吃苦,同样,如果你感觉生活有奔头,那就是在努力。
  16. 计算机开机滴一声513错误,电脑滴一声开不了机怎么办_电脑一声响后就开不了机了的处理办法...
  17. 油溶性Cu,Mn共掺杂量子点光转换材料
  18. Android studio设计一个简易微信界面
  19. 第五次作业:项目分类
  20. gre计算机考试科目,gre的考试内容和科目

热门文章

  1. 操作系统二:计算机内存体系
  2. RequestResponseServletContext
  3. inode占满前因后果
  4. 一个查看UI5控件所有公有方法的小技巧
  5. Stereo Matching 立体匹配学习资料
  6. 贵州发布大数据发展十方面成果
  7. OpenCV 获取并修改图中的像素点
  8. C++ 拷贝构造函数应用场景
  9. 东方卫视演得泰坦机器人_机器人“舞林大会”燃爆全民定向运动大赛
  10. sql server取某个时间段内所有日期或者所有月份