张晓梅 ~ 第十五届全国科学计算与信息化会议暨高能物理核物理信息化论坛

Slides:



Advertisements
Similar presentations
第五节 函数的微分 一、微分的定义 二、微分的几何意义 三、基本初等函数的微分公式与微分运算 法则 四、微分形式不变性 五、微分在近似计算中的应用 六、小结.
Advertisements

2.8 函数的微分 1 微分的定义 2 微分的几何意义 3 微分公式与微分运算法则 4 微分在近似计算中的应用.
阻塞操作. 在 linux 里,一个等待队列由一个 wait_queue_head_t 类型的结构来描述 等待队列的初始化: static wait_queue_head_t testqueue; init_waitqueue_head(&testqueue);
护理学基础 第七章 医院与住院环境.
完善固定资产加速折旧 企业所得税政策.
2017年3月5日 单片机原理与应用 背景知识调查.
食品添加剂生产许可情况介绍 江苏省食品药品监督管理局 彭弘雷 2014年12月
中信信诚-淮安项目.
第三章 数据类型和数据操作 对海量数据进行有效的处理、存储和管理 3.1 数据类型 数据源 数据量 数据结构
实用操作系统概念 张惠娟 副教授 1.
BESIII离线数据处理软件系统 邓子艳 中科院高能所 2011年7月 四川成都.
基于解释性语言的手机跨平台架构 Sloan Yi. Qt MTK.
Oracle数据库 Oracle 子程序.
在PHP和MYSQL中实现完美的中文显示
Hadoop I/O By ShiChaojie.
学习前的准备工作 讲师:burning.
大学计算机基础 典型案例之一 构建FPT服务器.
管理信息结构SMI.
辅导课程六.
第11章:一些著名开源软件介绍 第12章:服务安装和配置 本章教学目标: 了解当前一些应用最广泛的开源软件项目 搭建一个网站服务器
大数据管理技术 --NoSQL数据库 HBase 陈 辉 大数据分析技术.
DM81X 视频采集处理 ——简单采集显示例程讲解 广州创龙电子科技有限公司
第一单元 初识C程序与C程序开发平台搭建 ---观其大略
Windows网络操作系统管理 ——Windows Server 2008 R2.
Windows网络操作系统管理 ——Windows Server 2008 R2.
第十章 IDL访问数据库 10.1 数据库与数据库访问 1、数据库 数据库中数据的组织由低到高分为四级:字段、记录、表、数据库四种。
第17章 网站发布.
What have we learned?.
第二章 Java语言基础.
本节内容 模拟线程切换 视频提供:昆山滴水信息技术有限公司 官网地址: 论坛地址: QQ交流 :
逆向工程-汇编语言
数据挖掘工具性能比较.
PaPaPa项目架构 By:Listen 我在这.
动态规划(Dynamic Programming)
CPU结构和功能.
中国科学技术大学计算机系 陈香兰(0551- ) Spring 2009
用event class 从input的root文件中,由DmpDataBuffer::ReadObject读取数据的问题
第4章 非线性规划 4.5 约束最优化方法 2019/4/6 山东大学 软件学院.
C++语言程序设计 C++语言程序设计 第七章 类与对象 第十一组 C++语言程序设计.
内容摘要 ■ 课程概述 ■ 教学安排 ■ 什么是操作系统? ■ 为什么学习操作系统? ■ 如何学习操作系统? ■ 操作系统实例
C语言程序设计 主讲教师:陆幼利.
简单介绍 用C++实现简单的模板数据结构 ArrayList(数组, 类似std::vector)
微机系统的组成.
$9 泛型基础.
本节内容 随机读取 视频提供:昆山爱达人信息技术有限公司.
VisComposer 2019/4/17.
实验四、TinyOS执行机制实验 一、实验目的 1、了解tinyos执行机制,实现程序异步处理的方法。
第二章 Java基本语法 讲师:复凡.
Cassandra应用及高性能客户端 董亚军 来自Newegg-NESC.
微机原理与接口技术 微机原理与接口技术 朱华贵 2015年11月13日.
实验七 安全FTP服务器实验 2019/4/28.
<编程达人入门课程> 本节内容 内存的使用 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群: ,
Lightweight Data-flow Analysis for Execution-driven Constraint Solving
信号量(Semaphore).
JSP实用教程 清华大学出版社 第2章 JSP运行环境和开发环境 教学目标 教学重点 教学过程 2019年5月7日.
第九节 赋值运算符和赋值表达式.
第二章 类型、对象、运算符和表达式.
LOGIX500软件入门 西安华光信息技术有限公司 2008年7月11日.
多层循环 Private Sub Command1_Click() Dim i As Integer, j As Integer
C++语言程序设计 C++语言程序设计 第六章 指针和引用 第十一组 C++语言程序设计.
魏新宇 MATLAB/Simulink 与控制系统仿真 魏新宇
GIS基本功能 数据存储 与管理 数据采集 数据处理 与编辑 空间查询 空间查询 GIS能做什么? 与分析 叠加分析 缓冲区分析 网络分析
滤波减速器的体积优化 仵凡 Advanced Design Group.
本节内容 动态链接库 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ: QQ交流群 : 联系电话:
本底对汞原子第一激发能测量的影响 钱振宇
第十七讲 密码执行(1).
FVX1100介绍 法视特(上海)图像科技有限公司 施 俊.
<编程达人入门课程> 本节内容 有符号数与无符号数 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ:
实验六、COM类型病毒分析实验 实验开发教师: 刘乃琦 谌黔燕.
学习目标 1、什么是列类型 2、列类型之数值类型.
Presentation transcript:

张晓梅 2011.7.4~2011.7.7 第十五届全国科学计算与信息化会议暨高能物理核物理信息化论坛 BESIII离线物理软件在64位升级中的若干问题 张晓梅 2011.7.4~2011.7.7 第十五届全国科学计算与信息化会议暨高能物理核物理信息化论坛

内容 BESIII离线物理软件 64位机的三种工作模式 BESIII离线软件的升级过程及遇到的主要问题 升级前后的软件性能比较 总结

BESIII实验 北京谱仪(BESIII)是北京正负电子对撞机(BEPCII) 上的大型通用谱仪 它主要用于τ-粲能区的物理研究如弱电相互作用研究,强相互作用和新物理的寻找等 BESIII离线软件(BOSS, BESIII Offline Software System)的主要任务是将BESIII探测器和模拟产生的原始数据进行处理,生成物理分析使用的DST数据,同时提供物理分析所需的工具 BESIII离线物理软件是 BESIII物理分析的前提和关键 它的精度和性能决定着 物理分析的结果和进程

BESIII离线软件(BOSS) 大型的高能物理软件系统 基于高能物理软件通用框架Gaudi,采用CMT配置管理工具 包含了sim, rec, ana, cal等数据处理模块 使用了30多个外部库 采用mysql, sqlite等数据库进行刻度和几何参数的读取 对于大型的物理软件来说,64位升级具有相当的难度 系统庞大且算法,外部支持软件系统复杂 精度要求高,测试和检查过程细致繁杂 30+ External Library(ROOT..) GAUDI BOSS CMT 几何DB 刻度DB Ana Rec Cal Gen Sim …

64位升级的意义和必要性 64位机已经是计算机发展的趋势 64位系统具有巨大的内存优势 升级到64位后将显著提升软件性能 高能物理实验的主流机型早已是x86-64 64位系统具有巨大的内存优势 32位寻址(232~4GB), 64位寻址(264~16EB) 计算中心Lustre服务在64位上成功解决死机问题 升级到64位后将显著提升软件性能 许多知名的高能物理软件移植后取得了很好的性能提升 ROOT升级后得到40%的性能提升, Pythia 21%的性能提升 对BESIII数据处理已经势在必行 系统软件,物理外部软件已经逐渐不再支持32位 32位的内存瓶颈日益凸显,高性能系统只能运行在64位 CERN farm已与2007年升至64位,意味着支持的高能物理软件库->64位

64位机的三种工作模式 传统模式(Legacy mode) 兼容模式(Compatibility mode) 32位应用程序运行在32位操作系统 64位CPU可以当成32位CPU使用 升级前IHEPCC farm工作结点的主要工作模式—传统模式 兼容模式(Compatibility mode) 32位应用程序运行在64位操作系统 32位应用程序无需重新编译就可以运行在该模式 兼容模式是传统模式与完全模式之间的过渡模式 完全模式(Native mode) 64位应用程序运行在64位操作系统 升级的目标模式,可充分发挥64位处理器的优势,包括内存和性能优势

BESIII离线软件的64位升级 第一阶段:传统模式 兼容模式(Compatibility mode) 同时不耽误系统升级64位,突破内存瓶颈 CERN实验在兼容模式上已有较长的时间(三年) 第二阶段:兼容模式完全模式(Native mode) 最终完成所有32位程序升级到64位 需要对32位程序做出调整和修改,重新编译 出现问题较多,升级时间长

BESIII离线软件的64位升级的五个步骤 以问题为导向,循环递进 分为五个步骤: 建立运行环境 编译BOSS Run-time检查 无现成规律可循 测试尽可能全面,尽量发现问题 分为五个步骤: 建立运行环境 编译BOSS Run-time检查 大规模压力测试检查 物理结果检查 性能评估和优化 内存和速率 运行环境 操作系统 编译工具 硬件 共享库和boss.exe 外部库 BOSS Run-time 物理结果 性能 编译 检查 优化 执行

升级过程的主要问题 编译错误 程序异常 结果差异 内存膨胀

编译错误 编译选项的改变 编译规则的改变 外库的改变: “m32” -- 兼容模式下GCC提供的32位应用程序的编译和链接选项 “fPIC” -- 64位要求共享库编译成”Position Independent Code” 由于各种库编译模式不同,容易产生遗漏 编译规则的改变 64位GCC比较32位GCC在编译规则更为严谨 特别表现在变量和函数声明、类型转化的情况 Eg. <cmath> “ some coding assumptions are not valid any more” 外库的改变: 外库的升级引起库的位置,函数的改变 CMT的升级造成policy的变化

程序异常(一) Segment fault, 程序不正常执行和结束 LP32到LP64的变化 Long, pointer类型长度从32位变为64位 Eg. std::string::npos=unsigned long, ≠ unsigned int,当值为-1,可能导致判断语句改变方向 LP32 LP64 char 8 int 4*8 long 8*8 pointer double long double 12*8 16*8

程序异常(二) 数组和指针越界 Gaudi升级 导致segment fault 典型原因: 程序对特殊的事例未作足够的保护,产生不合理数值,使得指针指向不合理内存位置; 数组没有做正确的定义,造成使用时越界 值得注意是这些问题在32位模式下没有发生程序异常,内存分配方式不同? Gaudi升级 基础函数的使用发生变化 Eg. 不能获得正确的服务指针,不能正常释放组件对象

结果差异(一) 在两个阶段升级的物理检查中,都看到了差异 传统模式到兼容模式的升级阶段 有些差异是错误引起的,可以避免 有些差异却是32位和64位系统本身的差异带来的精度变化,不可避免 统计差异和数值差异 统计差异是不允许的,这种差异可能导致物理结果的不一致 数值差异需要尽量避免 传统模式到兼容模式的升级阶段 理论上是物理结果可以保证无差异 错误引起的统计差异: 变量未做初始化,函数的返回值没有正确设定 数值差异:模拟的基础软件Geant4产生的差异 随着Geant4不断完善,差异将被消除

结果差异(二) 兼容模式到完全模式的升级阶段 LP32->LP64的变化引起的错误产生的差异 Eg. Geant4随机数产生函数产生的整数计算结果变化,原因是其中的long变量没有正确使用 浮点计算模式和ABI的变化使得浮点计算的精度发生改变,不可避免 由于浮点计算位数有限,中间寄存器的位数或者计算顺序的变化的细微差别,可能造成浮点计算结果的变化 32位采用x87指令集,64位采用SSE指令集

内存膨胀 64位BOSS与32位BOSS的内存比较: 64位BOSS的内存使用要比32位BOSS增长一倍 32位中不明显内存泄露在64位被放大 主要原因: LP32到LP64的转换,使得数据类型(long, pointer, size_t)占用空间增大 数据结构,共享库进行对齐和填充的空间增大 对堆内的对象管理所用的空间增加 优化BESIII离线软件内存使用和尽量减少内存泄露在64位上更显重要 RSS(MB) simu simu-reco real-reco 64-bit 605.8 534.8 456.0 32-bit 384.7 388.2 320.9 comparison ~57.5% ~37.8% ~42.1%

性能比较 模拟,重建和分析过程对于真实和模拟数据的事例处理率(Event/s) 传统模式和兼容模式: 没有差异 传统模式和完全模式 模拟提高了13%,重建和分析提高了50% 主要得益于64位更好的体系结构:更多更大的寄存器优势,内存优势,更为高效的函数调用机制,fPIC效率等 Application (sec/event) simu simu-reco real-reco simu-ana real-ana 64-bit 0.945466 0.214966 0.122502 0.008806 0.001074 32-bit 1.091518 0.431005 0.245715 0.017034 0.002753 improvement ~13% ~50% ~48% ~61%

总结 BESIII离线物理软件已经成功升级到64位 第一个64位官方版本BOSS6.6.0于今年5月正式发布 重建和分析的事例处理率提高了一倍 第一个64位官方版本BOSS6.6.0于今年5月正式发布 同时32位的BOSS版本将以兼容模式存在,与64位BOSS并存一段时间,保证不影响物理学家的分析进程 内存使用优化和性能优化将成为下一步研究的重点 在64位下BOSS内存使用成倍增加

Thank you!