在分布式科学计算领域,SETI@home 项目以其独特的射电天文学信号处理架构开创了志愿者计算在海量科学数据处理中的先河。该项目于 1999 年启动,至 2020 年累计处理了约 1 拍字节(1 PB)的原始观测数据,峰值计算吞吐量达到 600 太拉浮点运算每秒(600 teraFLOPS)。本文将从工程实现角度,深入解析其数据采集_pipeline 的核心架构与技术决策。
望远镜前端数据采集系统
SETI@home 项目的主要数据源为波多黎各阿雷西博天文台的 ALFA(L-band Feed Array)七波束接收阵列。该阵列于 2006 年安装,每个接收器提供两个线极化输出,因此项目共获取 14 路模拟信号流。这些信号在 1.42 GHz 附近(氢原子超精细结构跃迁频率)进行下变频,形成 2.5 MHz 带宽的复基带信号,随后以 2.5 Msps(每秒百万样本)的速率进行数字化采样。
值得注意的是,项目采用了 2 比特复数量化(2-bit complex quantization)策略。这一设计选择源于数据存储与网络传输带宽的严格限制 —— 在 1990 年代末的家庭互联网环境下,向全球数万台志愿者分发数据必须尽可能压缩数据体积。2 比特量化(实部与虚部各 1 比特)可将数据量降低至 16 比特浮点格式的八分之一,尽管会引入约 1.5 dB 的量化噪声,但相较于大幅降低的存储与传输成本,这一取舍在工程上极为合理。
阿雷西博天文台周围存在多个强功率雷达站,雷达干扰(RFI)是该频段观测的主要挑战。SETI@home 实现了硬件与软件双重雷达静默(radar blanking)机制:硬件层面由专用的监测天线检测雷达信号,在雷达发射期间将科学数据替换为匹配接收机噪声谱的成形随机噪声;软件层面则通过将实时数据与五种已知雷达脉冲模板进行互相关检测,相关值超过阈值时同样执行噪声替换。该方案将雷达干扰导致的数据损失控制在 2.5% 以内。
频率分割与工作单元生成
原始 2.5 MHz 带宽的数据需要进一步分割为更小的处理单元才能分发给志愿者客户端。splitter 程序执行两项关键处理:首先是基于多相滤波器组(polyphase filter bank)的频率分割,将 2.5 MHz 带宽划分为 256 个子带,每个子带宽度约 9.8 kHz;其次是时间分割,将连续数据切分为固定长度的数据块。
每个子带的时间分割长度为 2^20 个复样本,约为 107.37 秒。项目选择 2^20 作为样本数量的原因在于其刚好等于 1,048,576,是 2 的整数次幂,便于后续离散傅里叶变换(DFT)的计算优化。相邻工作单元之间存在约 20 秒的时间重叠,这一设计确保持续时间约 13 秒的典型天体信号(即望远镜波束以恒星时 rate 扫过源所需的时间)始终完整包含在至少一个工作单元内。
每个工作单元头部包含丰富的元数据:望远镜标识与地理位置、接收机参数(中心频率、带宽)、分割参数(子带编号、采样率、样本数)、观测时间(儒略日期)以及波束中心在整个工作单元持续期间的天球坐标。这些信息对于后续的信号检测与候选体验证至关重要。
志愿者客户端信号处理流水线
SETI@home 客户端运行在志愿者提供的计算设备上,涵盖 CPU 与 GPU 版本。该客户端的核心任务是在每个工作单元中搜索五种类型的信号检测体(detections):尖峰(spike)、高斯(gaussian)、脉冲(pulse)、三重态(triplet)与自相关(autocorrelation)。
针对窄带连续信号,项目采用了相干积分(coherent integration)技术。由于地球自转与公转产生的多普勒效应,以及可能的发射源运动(如行星自转或轨道运动),接收信号的频率会发生漂移。SETI@home 在 ±100 Hz/s 的范围内搜索多达 123,000 个多普勒漂移率(drift rates),在每个漂移率上执行去频率漂移校正后进行离散傅里叶变换。这一设计使其能够检测到频率稳定度较低的发射源信号,灵敏度较传统非相干方法提高数倍。
客户端使用 15 种不同的 DFT 长度进行分析,频率分辨率从 0.075 Hz(对应 13.4 秒积分时间)到 1221 Hz(对应 8.1 毫秒)不等。这种多分辨率方法增强了对不同带宽信号的检测能力 —— 窄带连续信号在低分辨率下具有更高灵敏度,而脉冲信号则需较高时间分辨率。
数据规模与计算资源
SETI@home 的数据处理规模极为可观:阿雷西博观测期间共积累约 1 拍字节原始数据,存储于劳伦斯伯克利国家实验室的国家能源研究科学计算中心(NERSC)。志愿者计算资源的峰值达到约 600 teraFLOPS,参与计算机数量从 2006 年的 35 万台逐渐下降至 2020 年的 14 万台,但单台设备的平均计算能力因 CPU 与 GPU 性能提升而持续增长。
项目的数据分发采用 BOINC(Berkeley Open Infrastructure for Network Computing)平台。该平台提供了任务调度、结果验证、客户端自动更新等关键功能。结果验证机制通过在两台不同计算机上重复执行同一任务、比对其输出来检测错误计算 —— 这对于志愿者计算环境尤为重要,因为硬件错误、超频、不正确的软件版本均可能导致错误的计算结果。
工程启示
SETI@home 的成功为大规模分布式科学计算提供了宝贵的工程经验。在数据采集层面,低比特量化与窄带频率分割的组合使海量数据得以通过有限带宽分发;在信号处理层面,多分辨率分析与宽范围多普勒漂移搜索实现了对多种信号类型的灵敏检测;在计算调度层面,基于 BOINC 的志愿者计算模式有效规避了专用超级计算机的资源瓶颈。
该项目展示了一种将前沿科学研究与分布式大众参与相结合的可行路径 —— 通过合理的数据压缩策略、灵活的计算任务划分以及健壮的结果验证机制,即使在 1990 年代末的家用网络与计算条件下,也能完成过去只能由专用大型设施完成的科学数据处理任务。
资料来源:本文技术细节主要参考 arXiv 预印本《SETI@home: Data Acquisition and Front-End Processing》(Korpela et al., 2025),该论文详细描述了项目的数据采集系统、前端处理算法与志愿者计算架构。