SNiPER软件框架 与并行计算进展 邹佳恒 高能物理计算和软件会议,成都 2017.06.06.

Slides:



Advertisements
Similar presentations
7.1 内置对象概述及分类 JSP 视频教学课程. JSP2.2 目录 1. 内置对象简介 1. 内置对象简介 2. 内置对象分类 2. 内置对象分类 3. 内置对象按功能区分 3. 内置对象按功能区分 4. 内置对象作用范围 4. 内置对象作用范围.
Advertisements

1 计算机软件考试命题模式 计算机软件考试命题模式 张 淑 平 张 淑 平. 2  命题模式内容  组织管理模式 − 命题机构和人员组成 − 命题程序  试卷组成模式.
高级服务器设计和实现 1 —— 基础与进阶 余锋
LSF系统介绍 张焕杰 中国科学技术大学网络信息中心
提升应用内HTML5 的开发和使用体验
初级会计电算化 (用友T3) 制作人:张爱红.
实验四 利用中规模芯片设计时序电路(二).
基于解释性语言的手机跨平台架构 Sloan Yi. Qt MTK.
Oracle数据库 Oracle 子程序.
Kvm异步缺页中断 浙江大学计算机体系结构实验室 徐浩.
LSF系统介绍 张焕杰 中国科学技术大学网络信息中心
Hadoop I/O By ShiChaojie.
OpenMP简介和开发教程 广州创龙电子科技有限公司
嵌入式系统课程简介 宋健建 南京大学软件学院 2004/02/10.
第二讲 搭建Java Web开发环境 主讲人:孙娜
R in Enterprise Environment 企业环境中的R
SOA – Experiment 3: Web Services Composition Challenge
SVN服务器的搭建(Windows) 柳峰
走进编程 程序的顺序结构(二).
辅导课程六.
华为—E8372h- 155 外观设计 产品类型:数据卡 建议零售价格:299元 上市时间:2017年6月7日 目标人群:大众
第11章:一些著名开源软件介绍 第12章:服务安装和配置 本章教学目标: 了解当前一些应用最广泛的开源软件项目 搭建一个网站服务器
大数据管理技术 --NoSQL数据库 HBase 陈 辉 大数据分析技术.
Visual Studio Team System 简介
DM81X 视频采集处理 ——简单采集显示例程讲解 广州创龙电子科技有限公司
第一单元 初识C程序与C程序开发平台搭建 ---观其大略
邹佳恒 第十八届全国科学计算与信息化会议 • 威海,
Online job scheduling in Distributed Machine Learning Clusters
What have we learned?.
数据挖掘工具性能比较.
PaPaPa项目架构 By:Listen 我在这.
动态规划(Dynamic Programming)
CPU结构和功能.
应用实例 识别Ps & Pt ADTS 压力通道并校验 CPD8000 New MENSOR‘s ADTS: CPA8001.
实习前你需要知道的 PRESENTED BY Yisa.
宁波市高校慕课联盟课程 与 进行交互 Linux 系统管理.
三:基于Eclipse的集成开发环境搭建与使用
Unit 11.Operating System 11.1 What’s OS 11.2 Related Courses
程序设计工具实习 Software Program Tool
SOA – Experiment 2: Query Classification Web Service
解决变化问题的自底向上 流程建模方法 严志民 徐玮.
内容摘要 ■ 课程概述 ■ 教学安排 ■ 什么是操作系统? ■ 为什么学习操作系统? ■ 如何学习操作系统? ■ 操作系统实例
C语言程序设计 主讲教师:陆幼利.
简单介绍 用C++实现简单的模板数据结构 ArrayList(数组, 类似std::vector)
微机系统的组成.
$9 泛型基础.
K60入门课程 02 首都师范大学物理系 王甜.
第四章 团队音乐会序幕: 团队协作平台的快速创建
VisComposer 2019/4/17.
实验四、TinyOS执行机制实验 一、实验目的 1、了解tinyos执行机制,实现程序异步处理的方法。
提供机构:XXXXXXXXX 机构级别:X级X等(无级别可不填写)
微机原理与接口技术 微机原理与接口技术 朱华贵 2015年11月13日.
实验七 安全FTP服务器实验 2019/4/28.
计算机网络与网页制作 Chapter 07:Dreamweaver CS5入门
信号量(Semaphore).
JSP实用教程 清华大学出版社 第2章 JSP运行环境和开发环境 教学目标 教学重点 教学过程 2019年5月7日.
iSIGHT 基本培训 使用 Excel的栅栏问题
2019/5/8 第2章 数据分析软件介绍.
多层循环 Private Sub Command1_Click() Dim i As Integer, j As Integer
28th Weekly Operation Report on DIRAC Distributed Computing
临界区问题的硬件指令解决方案 (Synchronization Hardware)
OpenStack vs CloudStack
GIS基本功能 数据存储 与管理 数据采集 数据处理 与编辑 空间查询 空间查询 GIS能做什么? 与分析 叠加分析 缓冲区分析 网络分析
第二节 C语言的特点.
Python 环境搭建 基于Anaconda和VSCode.
本节内容 Windows线程切换_时钟中断切换 视频提供:昆山滴水信息技术有限公司 官网地址: 论坛地址: QQ交流 :
基于列存储的RDF数据管理 朱敏
本节内容 动态链接库 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
本节内容 进程 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
FVX1100介绍 法视特(上海)图像科技有限公司 施 俊.
Presentation transcript:

SNiPER软件框架 与并行计算进展 邹佳恒 高能物理计算和软件会议,成都 2017.06.06

主要内容 软件框架概述 SNiPER简介 近期功能更新 并行计算开发进展 计划与总结

离线软件系统 基础软件库:离线软件的基石 数据处理系统:从实验“原始数据”到“物理成果”的输运工具 软件框架:连接物理学家与软件,并承载数据处理系统的桥梁

软件框架 VS. 软件库 定位 使用方式 软件框架代表了领域内软件复用的新高度 软件库着眼于处理某一个问题 软件框架着眼于处理某一领域问题 软件库(函数)由用户调用,是用户搭建自己软件大厦的砖块 软件框架反向调用用户代码 软件框架中已确定了软件的主体执行逻辑 用户定义软件执行的具体细节 软件框架代表了领域内软件复用的新高度 介于传统软件库与完整软件产品之间的“半成品” 高度模块化,易扩展 用户能够更专注于具体问题(如数据处理算法)

SNiPER软件框架的发展历史 Gaudi软件框架(引入吸收) BOSS & NuWa LAF轻量级物理分析框架(自主开发) 由CERN为LHCb实验开发 国内使用:BESIII(BOSS)和大亚湾(NuWa) 功能强大、完善,带给我们很多启发 LAF轻量级物理分析框架(自主开发) 专为大亚湾实验物理分析开发 针对中微子实验中特殊需求进行设计 SNiPER v1 在LAF基础上的功能扩充 SNiPER v2 大量新设计、新思想,功能逐渐完善 增强通用性 BOSS & NuWa LAF Gaudi JUNO早期 ... SNiPER v1 JUNO & LHAASO SNiPER v2

主要内容 软件框架概述 SNiPER简介 近期功能更新 并行计算开发进展 计划与总结

开发与使用环境 C++与Python混合语言编程 包管理工具CMT 代码管理:CVS 和 Git 大量基于C++的高能物理通用软件:ROOT、Geant4 … 混合编程是高能物理领域内的发展潮流 > C++用于实现核心功能,保证系统运行效率 > Python用于作业配置,高度灵活并具有高可集成性 包管理工具CMT 帮助开发者处理软件编译时的各种问题(如依赖关系等) 帮助用户设置软件运行环境 代码管理:CVS 和 Git

SNiPER的层次结构 SNiPER In an User Algorithm: I/O: disk, DB, network, grid… 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

SNiPER核心功能 I 问题分解与模块化 动态加载和配置 模块的运行时管理 借鉴Gaudi经验,将问题归纳为“算法”和“服务”等概念 强内聚:一个软件包(模块)专注于解决一个主要问题 弱耦合:模块与框架、模块与模块之间仅通过接口通信 动态加载和配置 不同模块可按需进行灵活组合,实现各种不同计算任务 借助Python接口可做软件参数的运行时配置 避免对代码的反复修改和编译 模块的运行时管理 模块的实例管理、状态维护、调用执行等

SNiPER核心功能 II 事例数据I/O接口与内存管理 基于事例循环的流程控制(Task) 基于消息的流程控制(Incident) 事例在内存中的生命周期管理,避免内存泄露等严重问题 基于事例循环的流程控制(Task) 算法序列的顺序执行 基于消息的流程控制(Incident) 流程的跳跃执行,可实现子算法序列的按需执行等复杂功能 分级的日志功能 每个模块的日志输出级别可独立设置 方便用户为软件调试而设置日志信息的多少

主要内容 软件框架概述 SNiPER简介 近期功能更新 并行计算开发进展 计划与总结

Task组织结构的扁平化 取消Task组织的树形结构 树形结构带来复杂性,但JUNO等实验实践中均未应用2层以上结构 增加TopTask派生类,可最多实现2层Task结构 单Task作业不会体会到任何变化,多Task作业需由TopTask实例开始 新的类继承关系示意图 新的类包含关系示意图

重构状态管理功能 明确系统在各状态间的转换关系,由独立的状态机负责状态管理 添加Ready等新状态和暂停等新操作(可能有助于多线程并行计算等 模式下的执行)

开发和使用的体验提升 适配C++11标准 优化执行逻辑 改良错误警告信息 需g++4.8以上版本编译器(尚未在JUNO等实验中实际应用) 采用新标准重写了大量代码,使代码更简练易读 优化执行逻辑 作业配置阶段(initialize之前)发现的错误,都用异常立即中断执行, 避免因疏忽而运行了错误配置的作业 从初始化开始,特别是事例处理中,发现错误后尽可能优雅退出执行 改良错误警告信息 日志与异常进行集成 程序退出时检查软件系统错误状态 在日志结尾给出明确错误信息,帮助定位错误和调试软件

其它重要变化 核心类型Task的重构 新的辅助类型 添加AlgSupervisor/SvcSupervisor等新的管理类 明确Task类型的分工,将StateMachine等功能独立实现,使Task的定 位更为清晰和易于理解 新的辅助类型 SniperScope,帮助用户对消息等功能进行定位 SniperContext,全局状态记录

主要内容 软件框架概述 SNiPER简介 近期功能更新 并行计算开发进展 计划与总结

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

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

目前开发状态 SniperMuster的实现 SniperKernel核心功能的增强 SNiPER (Top)Task与TBB task的一一映射 主要类型定义如下: SniperKernel核心功能的增强 线程安全的日志机制 基于“线程”的消息机制:将原来全局的Incident Manager修改为每 个“线程”对应一个Incident Manager

运行测试 以HelloWorld算法为例,暂不考虑内存管理与I/O等共享资源 定义一个线程内的函数,几乎与配置串行作业一样 调用Muster开启多线程并执行

性能测试 使用”Example/HelloWorld”算法(没有I/O),设置运行事例30,000,000 执行3次的平均时间(4核CPU): TBB线程数 运行时间(s) 1 20.94 2 12.50 4 7.43 串行执行(不使用Muster) 18.82

总结与下一步计划 进展总结 未来计划 对SNiPER核心功能做了大量改进,包括使用C++11新标准等 多线程环境下的数据I/O和内存管理 JUNO等实验中的实践应用

Thanks !