GPU based online noise filtering algorithm in LHASSO-WCDA 黄德智 2017/07/05
报告大纲 介绍LHAASO,LHAASO-WCDA 介绍WCDA的触发率,和数据量 介绍快速遍举法 介绍基于GPU的相关算法 总结
LHAASO WCDA: 3个水池; 3120个探测 单元; KM2A: 5195EDs; 1171MDs; WFCTA: 12台望远镜
LHAASO-WCDA WCDA: LHAASO-WCDA 3个水池; 3120个探测单元; 4米的有效水深; 每个单元用隔光帘分开; 总面积78,000平方米; 350,000吨的净化水。
WCDA触发率 LHAASO-WCDA触发率计算: 通过模拟直接计算得到的触发率约为60kHz; 另外一种方法就是通过跟踪Crab数据,对宇宙线背景中26 种粒子的有效面积分别进行计算,得到的触发率为: 62.6kHz.
WCDA的实验数据量 单路高本底噪声率,给LHAASO-WCDA实验带来了巨大 挑战。一方面造成了数据重建的难度,另一方面还造成了 数据传输和存储的瓶颈。 通过电子学输出得到hit的数据量大小为128bit/hit; 其中包括了hit的头信息,通道号,电荷,时间,标识符号等; 128bit ℎ𝑖𝑡 ×3120ℎ𝑖𝑡×35𝑘𝐻𝑧=14𝐺𝑏𝑝𝑠, 每年约55Pb的数据量; 经过分天区触发后考虑2000ns的触发窗口,平均噪声218个, 根据模拟来自簇射真实信号平均数为70个,由此得到: 128bit ℎ𝑖𝑡 × 218+70 ×63𝑘𝐻𝑧=2.3𝐺𝑏𝑝𝑠, 每年近10PB的数据量。
快速遍举法 LHAASO-WCDA数据处理的挑战: 经过分天区触发后,WCDA任然可以达到每年近10PB的数 据量。如果把这些数据全部存储下来,花费是非常巨大的 同时,要把这么大的数据从海子山的站点传输回北京的计 算中心其传输的通信线路的租金也超出了实验的预算。 同时考虑到LHAASO-WCDA很高的噪声率WCDA需要发 展一套技术方法来实现在线压缩数据量,同时减小高噪声 率对数据分析带来的影响。
快速遍举法 经过细致研究,WCDA发展了一套被称为快速遍举法 的全新方法,可以在线对原始实验数据进行预处理, 完成对大部分噪声信号的过滤。下面我们对快速遍举 法进行简单介绍。 WCDA快速遍举法: 可是天区分为很多等立体角的单元,每个单元代表一个特 定的方向; 对任意一个探测到的事例,对每个天区代表的方向进行遍 历,把着火探测器的位置和时间转换到垂直于此天区方向 为z轴的一个坐标系上;
快速遍举法 WCDA快速遍举法: 在此坐标系下计算着火时间排序后平台区域的宽度,此宽 度由时间基本保持不变的着火点的个数来衡量。 在此坐标系下计算着火时间排序后平台区域的宽度,此宽 度由时间基本保持不变的着火点的个数来衡量。 原则上越靠近准确簇射方向,平台区域就会越大。通过整 个天区的遍历我们就可以找到最可几的天区位置。 天区分区示意图
GPU的应用 WCDA快速遍举法: 进一步的需求: 通过对快速遍举法的调试我们发现程序运行的绝大部 分时间都用在了对每个天区时间信号的排序上,所以 要进一步优化程序最容易想到的就是对天区进行并行; 进一步的需求: 同时为了提高WCDA对瞬态源的监测能力,我们也需要进 一步提高程序的运行效率。 所以我们考虑到把最耗费时间的部分让GPU来承担,加快 程序的运行时间,同时减小在站集群的建设规模。
GPU排序算法的研究 排序算法选择: GPU快速排序: 在CPU运行的程序中,我们使用了root的Tmath sort,一 种基于快速排序的排序算法。 快速排序一直以低的时间复制度作为很多程序的首选,基 于Nvidia的CUDA技术的优化,快速排序得以在GPU上实 现。 GPU快速排序: 首先我们定义一个最大的递归深度为32,当超过这个深度 时数组已经被划分为很小的部分,为了提高效率当到达这 个深度或者需要排序的个数小于16个时采用简单的选择排 序完成最后的排序,而其他时候则像传统的快速排序,选 择一个值把比它大的与比它小的放在它两边,然后对分好 的两面继续调用快速排序。
GPU排序算法的研究 天区并行的实现: 结果分析: 首先我们在kernel上完成坐标的转换; 然后有多少个天区我们就分为多少个线程; 每个线程启用快速排序进行运算; 将结果传回CPU进行后续的数据的筛选。 结果分析: 天区的个数我们划分为数千个; 同时我们全阵列一共有3120个探测器单元; 加上数据传输的延迟,对数千个小数组的排序并不能 显示出GPU在处理数据方面的优势。
GPU排序算法的研究 算法的改进: I/O优化: 首先对I/O的优化; 其次对排序算法的优化。 如果我们所有的探测单元全部着火,则有3120个时 间信号需要排序; 对于48kb每个线程块的shared memory来说我们完 全可以把需要排序的时间信号放进shared memory中, 以减少内存访问的时间。
GPU排序算法的研究 排序算法: 优化后的方法: 在GPU上使用快排主要是针对很长的数组进行排序; 所以我们考虑首先排序简单话; 其次数组划分更细。 优化后的方法: 首先我们有多少个天区就启用多少的线程块; 把每个天区对应的时间序列放在线程块的shared memory中; 按照hits数/20把数组进一步细分,让线程块内部的 每个线程负责20个元素的排序; 由于20个元素是一个非常小的元素我们采用插入排 序完成最后的排序过程。
GPU排序算法的研究 结果对比: 经过初步测试,我们采用了i7 6700的CPU和Tesla K40c分 别测试了CPU和GPU的运行速率。 固定天区个数,不同探测器着火 固定hits数,采用不同天区划分
总结: 通过GPU的使用改善了快速遍举法中CPU运行最耗 时部分程序的效率; 通过后续工作希望能提高WCDA对瞬态源的检测 能力;
谢谢!!