一种基于Ray并行框架的单脉冲搜索方法
文献发布时间:2023-06-19 18:58:26
技术领域
本发明涉及脉冲星数据处理技术领域,具体为一种基于Ray并行框架的单脉冲搜索方法。
背景技术
脉冲星是一类特殊的中子星,具有极强的磁场以及极其稳定的旋转周期。基于脉冲星稳定的周期性,目前脉冲星探测主要使用快速傅里叶变换和快速折叠算法在时域上周期性搜索。然而,在实际探测研究过程中发现,有一些脉冲星并没有呈现出明显周期性,如零脉冲星、间歇性脉冲星,以及Lorimer等发现的特殊天文脉冲信号快速射电暴与McLaughlin等发现的旋转射电暂现源,这一类天体不能使用上述周期性搜索方法搜寻,需要通过单脉冲搜索进行搜寻。
目前常用单脉冲搜索工具有PRESTO加速的单脉冲搜索专用软件HEIMDALL。PRESTO是由ScottRansom开发的大型脉冲星搜索和分析软件套件,是开展脉冲星搜索最常用软件之一,该软件已参与发现超过700颗脉冲星。FAST观测数据主要使用PRESTO进行脉冲星搜索,但PRESTO开发历史较早,搜索流程大多采用单核串行方式,面对海量脉冲星观测数据,PRESTO搜索速度仍有所欠缺的问题,为此,我们提出一种实用性更高的基于Ray并行框架的单脉冲搜索方法。
发明内容
本发明的目的在于提供一种基于Ray并行框架的单脉冲搜索方法,解决了现有的问题。
为实现上述目的,本发明提供如下技术方案:
一种基于Ray并行框架的单脉冲搜索方法,包括以下步骤:
步骤S1、对脉冲星时间序列数据文件进行读取;
步骤S2、创建DM列表、candlist列表以及num_v_DMstr列表;
步骤S3、创建局部调度器并根据CPU进程状态分配单脉冲搜索任务;
步骤S4、在各个CPU上生成Worker进程进行单脉冲搜索任务;
步骤S5、将各个CPU上搜索得到的脉冲星候选体信息记录保存。
一种基于Ray并行框架的单脉冲搜索方法,具体包括以下步骤:
步骤S1、对脉冲星时间序列数据文件进行读取:
将消色散之后得到的脉冲星时间序列数据dat文件及不同dat数据文件所对应的参数信息读取保存作为args参数;
步骤S2、创建DM列表、candlist列表以及num_v_DMstr列表:
创建DM列表用来记录不同dat数据文件消色散时所对应使用的色散值,创建candlist列表用来记录保存最后单脉冲搜索得到的候选体信息,创建num_v_DMstr列表用来记录不同DM值下所对应搜索得到的候选体数量;
步骤S3、创建局部调度器并根据CPU进程状态分配单脉冲搜索任务:
按照当前平台中CPU的数目及各CPU进程状态,均衡分配单脉冲搜索任务;
步骤S4、在各个CPU上生成Worker进程进行单脉冲搜索任务;
步骤S5、将各个CPU上搜索得到的脉冲星候选体信息记录保存:
接收各进程中单脉冲搜索任务得到的候选体信息并保存在singlepulse文件。
与现有技术相比,本发明的有益效果如下:
本发明并行策略仅基于CPU,无需依赖CUDA和GPU,无需修改代码,即可实现在CPU环境下高性能单脉冲搜索。
本发明相较于原PRESTO单脉冲搜索中去趋势算法,本发明重新设计的优化去趋势算法能有效提升原程序去趋势算法性能。
本发明相较于原PRESTO单脉冲搜索程序,本发明通过使用Ray并行框架对PRESTO中原单脉冲搜索程序进行优化,显著提高了单脉冲搜索程序性能。
本发明首先对PRESTO单脉冲搜索中的去趋势算法进行优化,之后结合结合单脉冲搜索算法在对不同dat数据文件进行搜索时,不存在数据耦合情况的特点,使用Ray并行框架对PRESTO中原单脉冲搜索程序进行优化,在保证搜索效果的基础上,显著提高了单脉冲搜索程序性能。
本发明中算法优化及并行化的工作都是基于纯CPU环境,无需依赖CUDA和GPU,无需修改代码,即可实现在CPU环境下高性能单脉冲搜索,极大提高对脉冲星数据处理的速度。
附图说明
图1为本发明优化后去趋势算法流程图;
图2为本发明单脉冲搜索并行化示意图;
图3为本发明优化去趋势算法后与原程序加速情况对比图;
图4为本发明单脉冲搜索并行化后与原程序加速情况对比图;
图5为本发明优化去趋势算法后、单脉冲搜索并行化后与原程序得到的搜索结果对比图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。
如图1和图2所示,一种基于Ray并行框架的单脉冲搜索方法,用于加快脉冲星数据处理速度,首先提出了一种优化的去趋势算法,将望远镜接收到的原始array类型的时间序列数据转换成list类型,接着通过最小二乘法方式对list类型的数据进行去趋势;然后,采用高性能的并行框架Ray实现单脉冲搜索的并行化;最后,在真实的FAST脉冲星数据上,验证本方法的有效性;
一种基于Ray并行框架的单脉冲搜索方法,包括以下步骤:
步骤S1、对脉冲星时间序列数据文件进行读取:
将消色散之后得到的脉冲星时间序列数据dat文件及不同dat数据文件所对应的参数信息读取保存作为args参数;
步骤S2、创建DM列表、candlist列表以及num_v_DMstr列表:
创建DM列表用来记录不同dat数据文件消色散时所对应使用的色散值,创建candlist列表用来记录保存最后单脉冲搜索得到的候选体信息,创建num_v_DMstr列表用来记录不同DM值下所对应搜索得到的候选体数量;
步骤S3、创建局部调度器并根据CPU进程状态分配单脉冲搜索任务:
按照当前平台中CPU的数目及各CPU进程状态,均衡分配单脉冲搜索任务;
步骤S4、在各个CPU上生成Worker进程进行单脉冲搜索任务;
步骤S5、将各个CPU上搜索得到的脉冲星候选体信息记录保存:
接收各进程中单脉冲搜索任务得到的候选体信息并保存在singlepulse文件。
本发明首先使用FAST观测数据文件FH20201014_00C10.fits对PRESTO中单脉冲搜索程序single_pulse_search.py进行性能分析,可以发现去趋势算法部分约占single_pulse_search.py程序总时间开销的60%左右。single_pulse_search.py程序各部分耗时情况如表1所示。
表1
去趋势就是抑制信号在采集过程中由于长时间观测导致的功率谱波动,以得到最佳检测效果。原程序中去趋势算法是调用Python数学计算库Scipy中信号处理模块signal中的detrend方法来实现的,该方法的核心是使用最小二乘法计算求得拟合直线的参数,但在该方法的运算流程中,存在着对数据形状的重构以及复原,以及对多余参数的计算。本文对该方法进行优化,重新设计去趋势的运算流程,移除原方法中冗余计算,减少不必要开销,优化后去趋势算法流程如图1所示:
1、原方法中对数据形状重构及类型转换是为了得到适合计算的数据类型,在优化的算法中,直接将时间序列数据转换为Cython支持的list类型,减少数据形状重构及类型转换带来的运算开销;
2、原方法中最小二乘法分别计算了回归系数(coef)、残差平方和(resids)、自变量秩(rank)及自变量奇异值(s),而对于拟合直线来说,只需要对回归系数计算即可,在优化的算法中,重新设计最小二乘法只计算回归系数(coef),并基于Cython编程方式实现最小二乘法,减少其它参数计算带来的开销。
本发明结合单脉冲搜索程序在对不同dat文件进行搜索时,不存在数据耦合的情况,使用不同进程各自进行搜索就可以实现单脉冲搜索并行化。使用Ray对单脉冲搜索并行化示意图如图2所示,主进程执行时创建全局调度器及局部调度器,全局调度器在集群部署模式下才会启用,在此不赘述。当主进程调用remote函数时,便会向局部调度器提交任务,再由局部调度器向本地机器中的worker进程分配任务,由worker进程完成计算并将结果返回。
如图3和图4所示,为了验证本发明中去趋势算法及单脉冲搜索并行化在真实脉冲星数据中加快单脉冲搜索速度的有效性,选取FAST观测数据文件FH20201014_00C10进行单脉冲搜索加速情况对比。
在相同的实验环境以及相同的实验数据下,分别运行优化去趋势算法前后的单脉冲搜索程序10次,记录每次运行时间,得到图3的实验结果,横轴为运行次数,纵轴为耗时(单位:秒),single_pulse_search_raw为原程序耗时情况折线图,single_pulse_search_Cy_rm_rad为重新设计优化去趋势算法并使用Cython编程优化后耗时情况折线图。
在优化去趋势算法基础上,使用Ray框架实现并行化,分别运行原单脉冲搜索程序及基于Ray并行化程序10次,记录每次运行时间,得到图4的实验结果,横轴为运行次数,纵轴为耗时(单位:秒),raw为原程序耗时情况折线图,Ray为基于去趋势算法优化并使用Ray框架对程序CPU并行化后耗时情况折线图。
从图3可以分析得出,重新设计优化去趋势算法并使用Cython编程优化,相比于原程序性能提升约1.8倍。
从图4可以分析得出,本发明中使用Ray框架对单脉冲搜索程序并行化后,数据处理耗时相比原单脉冲搜索程序有极大提升,加速比约10倍。
通过图3和图4可以看出,本发明使用优化后的去趋势算法及基于Ray框架的并行化单脉冲搜索方法,能有效提高单脉冲搜索程序的性能,显著缩短数据处理时间。这验证了本发明在真实脉冲星数据中加快单脉冲搜索速度的有效性。
同时对比优化前后生成的搜索结果图,可以看出本发明提出的一种基于去趋势算法优化的并行化单脉冲搜索算法能够很好保持串行算法的搜索效果,没有因算法优化及并行化而产生搜索结果不一致的情况。程序优化前后的搜索结果图如图5所示,左图为原程序串行生成的搜索结果图,中图为优化去趋势算法后生成的搜索结果图,右图为使用Ray框架并行化生成的搜索结果图。
- 一种并行码相位搜索装置及实现并行码相位搜索的方法
- 一种并行码相位搜索装置及实现并行码相位搜索的方法