Presentation is loading. Please wait.

Presentation is loading. Please wait.

邹佳恒 第十八届全国科学计算与信息化会议 • 威海,

Similar presentations


Presentation on theme: "邹佳恒 第十八届全国科学计算与信息化会议 • 威海,"— Presentation transcript:

1 邹佳恒 第十八届全国科学计算与信息化会议 • 威海,2017.07.05
SNiPER软件框架 多线程并行计算研究 邹佳恒 第十八届全国科学计算与信息化会议 • 威海,

2 主要内容 SNiPER软件框架概述 SNiPER多线程计算的设计和开发 原型系统的测试 总结与计划 基本思想 Intel TBB简介
SNiPER Muster的实现 I/O和内存管理的概念设计 原型系统的测试 总结与计划

3 离线软件系统 基础软件库:高能物理领域内被广泛使用的大量软件工具 数据处理系统:从实验“原始数据”到“物理成果”的输运工具
软件框架:连接物理学家与软件,并承载数据处理系统的桥梁

4 基于SNiPER的软件层次结构 SNiPER In an User Algorithm:
get data from memory execute calculation put results back to memory I/O: disk, DB, network, grid… Collect algorithm results Prepare data to be processed features such as geometry … No need to care where the data comes from No need to care where the data will go User’s Application Layer(用户代码层) Core Software Layer(核心层) Python UI Layer(用户配置层) Configure and run a job

5 主要内容 SNiPER软件框架概述 SNiPER多线程计算的设计和开发 原型系统的测试 总结与计划 基本思想 Intel TBB简介
SNiPER Muster的实现 I/O和内存管理的概念设计 原型系统的测试 总结与计划

6 SNiPER多线程计算的基本需求 软件框架的特征 软件顶层设计 可靠性、稳定性、运行效率等软件系统基础特征
提供主体流程控制和用户层代码规范,不涉及具体的数据处理过程 核心层接口和功能的连续性,避免用户层代码大规模改动 软件顶层设计 能够兼容多种并行/异构计算技术(多线程、MPI、GPU等) 能够兼容串行/并行的用户层代码 用户层串行代码(需满足少量规范),由框架核心层提供并行计算能力 支持多种形式的用户层并行代码(TBB、OpenMP、Raw Thread等) 对用户(近似)透明,从串行计算向并行计算迁移的代价足够小

7 SNiPER多线程计算的设计思想 SNiPER的技术后发优势 SNiPER多线程计算的努力方向
SNiPER支持相互独立的多个Task实例,能够直观对应到不同线程上 SNiPER多线程计算的努力方向 以非侵入的方式实现多线程并行计算 多线程相关的主体代码在核心层代码(SniperKernel)之外实现 核心层代码不依赖多线程环境,兼容已有的用户层串行代码 尽可能少的修改用户接口,避免用户代码大规模改动 采用已经开源的Intel TBB任务并行软件库

8 Intel TBB简介 高层次的概念抽象,可应用于软件系统的顶层设计 Intel TBB task
能被独立分解,可并发执行的计算任务 轻量,相对线程能够以极高的效率创建和调度 Intel TBB task scheduler 处理TBB task实例之间的依赖关系和执行次序 负责线程间的负载平衡 忙碌线程上的task实例可迁移至空闲线程(任务窃取) 高层次的任务抽象能有效减少线程间通信和竞争

9 Intel TBB task 典型的task::state() 转换 基于TBB的软件设计
[ Ref: Intel TBB manual ] 基于TBB的软件设计 任务抽象和分解 创建大量task实例 交由task scheduler负责剩余的工作

10 多线程SNiPER的主体结构 • • • Muster Multiple SNiPER Task Scheduler
SniperTbbTask Mapping of a SNiPER Task to a TBB task Global Res. Global Resources such as Element Factory Thread Local Resource Copies Muster spawn ( N ) SniperTbbTask in Thread #1 Algorithm Algorithm #1.1 Service #1.1 SniperTbbTask in Thread #2 Algorithm #2.1 Service #2.1 • • • Global Res. I/O Factory

11 SNiPER核心层串行模式 高能物理传统串行软件核心控制流 基于事例循环 SNiPER核心模块默认方式 每次循环只处理一个事例
按顺序串行执行所有事例 SNiPER核心模块默认方式 begin end more events Y N execute

12 Muster with TBB task scheduler
SNiPER Muster多线程模式 事例级并行,单个事例处理过程与串行运行模式一致 任务分解和映射 (SNiPER Task  TBB task) 每个事例的计算过程映射为一个TBB task 数据I/O等异步操作也映射为不同的TBB task类型 begin end more events N Y I/O task Event 1 Event 2 Event 3 ••• Event N Global Buffer process task SNiPER exe Muster with TBB task scheduler

13 并行环境下的I/O概念设计 对每个I/O流使用单例模式 负责事例计算的各task实例与I/O解耦和 Singleton Input Task
InputSvc Singleton Output Task OutputSvc Singleton GlobalBuffer Lock free push_back Lock free pop_front SniperTbbTask Task LocalBuffer ••• a portion of GlobalBuffer determined by current event

14 并行环境下的事例内存管理设计 Global Buffer:与I/O流绑定,通过缓存避免I/O wait和竞争,同时还可 用于保证事例的输出次序 Local Buffer:与串行模式Data Buffer相同,以兼容用户层串行代码 Thread 1 Thread 2 Thread 3 Thread 4

15 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默认调度方法的补充

16 主要内容 SNiPER软件框架概述 SNiPER多线程计算的设计和开发 原型系统的测试 总结与计划 基本思想 Intel TBB简介
SNiPER Muster的实现 I/O和内存管理的概念设计 原型系统的测试 总结与计划

17 用户层串行算法兼容性示范 以HelloWorld算法为例,暂不考虑内存管理与I/O等共享资源
定义一个待映射的SNiPER Task实例,几乎与配置串行作业一样 调用Muster开启多线程并执行

18 性能测试 执行3次的平均时间(4核CPU): 使用”HelloWorld”算法(没有I/O),运行事例30,000,000
event task任务分解的准确性和可靠性 event task实例的调度性能 执行3次的平均时间(4核CPU): TBB线程数 运行时间(s) 1 20.94 2 12.50 4 7.43 传统串行模式(w/o Muster) 18.82

19 进展总结与开发计划 进展总结 开发计划 基于Intel TBB实现了SNiPER Muster多线程计算原型系统
事例级的任务分解和映射 对SNiPER核心层模块非侵入式的设计和实现 对用户(近似)透明,极小化用户的迁移代价 开发计划 并行环境下的数据I/O和内存管理的实现 JUNO等实验中的实践应用

20 Thanks !


Download ppt "邹佳恒 第十八届全国科学计算与信息化会议 • 威海,"

Similar presentations


Ads by Google