sniper软件框架 与并行计算进展.pptVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
sniper软件框架 与并行计算进展

SNiPER软件框架 多线程并行计算研究 邹佳恒 第十八届全国科学计算与信息化会议 • 威海,2017.07.05 主要内容 SNiPER软件框架概述 SNiPER多线程计算的设计和开发 基本思想 Intel TBB简介 SNiPER Muster的实现 I/O和内存管理的概念设计 原型系统的测试 总结与计划 2 离线软件系统 3 基础软件库:高能物理领域内被广泛使用的大量软件工具 数据处理系统:从实验“原始数据”到“物理成果”的输运工具 软件框架:连接物理学家与软件,并承载数据处理系统的桥梁 基于SNiPER的软件层次结构 4 主要内容 SNiPER软件框架概述 SNiPER多线程计算的设计和开发 基本思想 Intel TBB简介 SNiPER Muster的实现 I/O和内存管理的概念设计 原型系统的测试 总结与计划 5 SNiPER多线程计算的基本需求 软件框架的特征 可靠性、稳定性、运行效率等软件系统基础特征 提供主体流程控制和用户层代码规范,不涉及具体的数据处理过程 核心层接口和功能的连续性,避免用户层代码大规模改动 软件顶层设计 能够兼容多种并行/异构计算技术(多线程、MPI、GPU等) 能够兼容串行/并行的用户层代码 用户层串行代码(需满足少量规范),由框架核心层提供并行计算能力 支持多种形式的用户层并行代码(TBB、OpenMP、Raw Thread等) 对用户(近似)透明,从串行计算向并行计算迁移的代价足够小 6 SNiPER多线程计算的设计思想 7 SNiPER的技术后发优势 SNiPER的初始版本中虽未实现多线程计算,但其底层设计已充分考虑了并行计算的需求 SNiPER支持相互独立的多个Task实例,能够直观对应到不同线程上 SNiPER多线程计算的努力方向 以非侵入的方式实现多线程并行计算 多线程相关的主体代码在核心层代码(SniperKernel)之外实现 核心层代码不依赖多线程环境,兼容已有的用户层串行代码 尽可能少的修改用户接口,避免用户代码大规模改动 采用已经开源的Intel TBB任务并行软件库 Intel TBB简介 高层次的概念抽象,可应用于软件系统的顶层设计 Intel TBB task 能被独立分解,可并发执行的计算任务 轻量,相对线程能够以极高的效率创建和调度 Intel TBB task scheduler 处理TBB task实例之间的依赖关系和执行次序 负责线程间的负载平衡 忙碌线程上的task实例可迁移至空闲线程(任务窃取) 高层次的任务抽象能有效减少线程间通信和竞争 8 Intel TBB task 9 典型的task::state() 转换 [ Ref: Intel TBB manual ] 基于TBB的软件设计 任务抽象和分解 创建大量task实例 交由task scheduler负责剩余的工作 多线程SNiPER的主体结构 10 Muster Multiple SNiPER Task Scheduler SniperTbbTask Mapping of a SNiPER Task to a TBB task Global Res. Global Resources such as Element Factory SNiPER核心层串行模式 11 高能物理传统串行软件核心控制流 基于事例循环 每次循环只处理一个事例 按顺序串行执行所有事例 SNiPER核心模块默认方式 SNiPER Muster多线程模式 12 事例级并行,单个事例处理过程与串行运行模式一致 任务分解和映射 (SNiPER Task  TBB task) 每个事例的计算过程映射为一个TBB task 数据I/O等异步操作也映射为不同的TBB task类型 并行环境下的I/O概念设计 13 对每个I/O流使用单例模式 负责事例计算的各task实例与I/O解耦和 并行环境下的事例内存管理设计 14 Global Buffer:与I/O流绑定,通过缓存避免I/O wait和竞争,同时还可用于保证事例的输出次序 Local Buffer:与串行模式Data Buffer相同,以兼容用户层串行代码 SNiPER Muster性能优化策略 TBB task objects的Recycling TBB的recycling机制能避免相同类型task对象的大量构造和析构 SNiPER Muster中用于事例计算的task对象数目与开启的线程数目保持一致,并能持续重复使用 为I/O等异步操作构建更多的TBB task对象 合理利用TBB Scheduler Bypass 在确定的上下文环境中,开发者介入TBB task scheduler,实现对task的更高效调度 是对TBB task默认调度方法的补充 1

文档评论(0)

guoxiachuanyue + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档