资源描述:
《python多核并行计算在海量星表交叉证认中的应用》由会员上传分享,免费在线阅读,更多相关内容在学术论文-天天文库。
1、中国科学:物理学力学天文学2011年第41卷第1期:102~107《中国科学》杂志社SCIENTIASINICAPhys,Mech&Astronwww.scichina.comphys.scichina.comSCIENCECHINAPRESS论文Python多核并行计算在海量星表交叉证认中的应用**裴彤,张彦霞,彭南博,赵永恒中国科学院国家天文台,北京100012*E-mail:ptptptptptpt@163.com;zyx@lamost.org收稿日期:2009-12-23;接受日期:2010-02-0
2、1国家自然科学基金(批准号:10778724,10778616,11033001)和国家高技术研究发展计划(编号:2006AA01A120)资助项目摘要天文学研究中经常需要通过交叉证认将来自多波段多项目天文数据联系起来统一考虑.当前天文数据急剧增长,必然导致交叉证认的速度过慢.针对这一问题,提出一种在多核环境下使用Python语言进行高效并行计算的方法,与以往的研究结果相比,速度提高了若干倍.这为下一步的多波段数据统计研究和数据挖掘打下了良好的基础.关键词天文星表,巡天,数据库,交叉证认,并行计算,Pytho
3、nPACS:95.75.-z,95.75.Pq,95.80.+p天文学中的交叉证认是指将来自不同星表的源,Terabyte、甚至Petabyte来计量.面对如此规模庞大根据其某些属性(如:位置、星名、星等等信息)的相的数据集,交叉证认遇到了前所未有的困难.内存容关性,相互联系起来.通过交叉证认,可以将同一目量不够、证认计算量过大等问题都凸显出来.过去常标源在多个星表中的观测信息融合在一起,从而加用的工具(如Vizier,Simbad,Topcat和Aladin等)不再[1,2][1,2]深对该天体的认识.如果
4、是来自不同波段的数据,交适用.为实现海量星表交叉证认,高丹等人在叉证认后可以获得天体的多波段信息,促进新天体总结国内外研究状况的基础上,研究比较了多级三或新现象发现的机会,也为进一步的多波段数据统角划分法(HierarchicalTriangularMesh,简称HTM,计分析和数据挖掘打下基础.天体多波段交叉证认主页:http://www.skyserver.org/HTM/)和多级等面积是LAMOST科学目标的三大核心子课题之一,也是同纬度划分法(HierarchicalEqualAreaisoLatit
5、ude虚拟天文台数据融合的必由之路,有重要的现实意Pixelisation,简称HEALPix,主页:http://healpix.jpl.义和科学价值.nasa.gov/),于2008年6月提出“基于HTM索引分区近年来,随着科技的进步,无论地面的还是空间与kd-tree找最近邻算法的交叉证认”方法,并开发出的天文观测设备都在不断增加、改进和升级,观测能相应的交叉证认工具用于实际工作,收到了很好的力越来越强,获得的数据量也越来越大.尤其是巡天效果.其优点是:(ⅰ)通过HTM索引将大星表分成星表,很多都已达到
6、亿行以上.在未来几年内出现千多个小表分别证认,解决了内存限制问题,降低了计亿、万亿行的星表是极有可能的.天文数据正以算量;(ⅱ)证认时利用kd-tree找最近邻,提高了速度.引用格式:裴彤,张彦霞,彭南博,等.Python多核并行计算在海量星表交叉证认中的应用.中国科学:物理学力学天文学,2011,41:102~107,doi:10.1360/132009-1163中国科学:物理学力学天文学2011年第41卷第1期同时也存在以下不足:(ⅰ)程序完全采用Java语言3分割星表数据编写,性能受限;(ⅱ)程序流程有
7、待进一步优化;HTM是一种多层次的、递归的球面分割方法,(ⅲ)不支持并行计算.本文在高丹等人[1,2]的工作基础上,选用Python可将天球分成多级三角网格,每个网格都有一个编号,称为pcode.利用HTM可以将一个大星表从逻辑和C语言改写了交叉证认程序,采用HTM划分方法上分割为多个小星表,具体做法如下:分割星表数据,并利用Python的subprocess模块发起对天球进行N级HTM划分.将星表存入数据库,多个子进程来实现并行计算,在获得较高灵活性的转化为一个数据库表,每条表记录对应星表中一个同时,大幅提
8、升了程序性能.源,每个表字段对应星表的一个属性列.入库时,给星表增添一个名为pcode_htmN的属性列(具体到数1编程语言的选择据库则是增加一个表字段),对于星表中任一源,Python(http://www.python.org/)是一种面向对象pcode_htmN属性的值为该源在天球上所处的N级的、解释型的程序设计语言,开源、免费,语法简明,HTM网格的pcode.这样,就可以根据pcode_h