射电干涉测量要把每台望远镜的电压流两两相关成 visibility,数据量达 PB 级,长期依赖 CPU 相关器。cuPhoton.xBeam 把 FX 相关器搬上 GPU:先建 .vdix 索引按时间戳定位 VDIF 帧,再做延迟与条纹改正、FFT 信道化、站对交叉相乘累加,并输出 DiFX SWIN 格式,配合 GPUDirect Storage 与按时间分片实现多卡扩展。Vera Rubin NVL72 上 64 卡处理 10 TB 记录用 70 秒,较 x86 CPU 基线 31,992 秒快约 460x,读带宽从 4 卡 20 GB/s 升到 64 卡 170 GB/s,说明瓶颈已转向数据搬运与分片合并。
为何值得关注:它示范了 IO 密集算子库的流水线化写法:索引解耦随机读取、FFT 与交叉相乘留在 GPU、时间分片做扩展,对其它大规模数据同构计算有直接借鉴价值。
核心问题 (Question)
为什么射电干涉成像的数据处理很难扩展?EHT 类观测每台站每秒产生数十 Gbit 电压流、总数据达 PB 级,CPU 软件相关器要把站对信号按信道逐个相乘并积分,耗时以小时计。能否通过把 FX 相关流程整体搬到 GPU,并用 GPUDirect Storage 与时间分片让 IO 与计算一起扩展,使相关这一步不再是端到端瓶颈?
核心发现 (What)
报告给出的实现是 cuPhoton.xBeam 这一 GPU FX 相关器:它先扫描 VDIF 帧头建立 .vdix 索引,使后续读取直接跳到目标时间片;随后在 GPU 上完成整数采样对齐与条纹旋转、FFT 信道化、按信道的交叉相乘与积分累加,最后按 DiFX SWIN 或自有 xbeam-v1 格式写出。Vera Rubin NVL72 上 64 张卡处理 10 TB 记录用时 70 秒,x86 CPU 基线为 31,992 秒,约 460x;GDS 读带宽随卡数从 4 卡 20 GB/s 增至 64 卡 170 GB/s,表明限制已从算力转向 IO 与分片合并。
创新点与贡献 (Why it matters)
过去相关器主要是 CPU 上的 DiFX,加站或加带宽就意味着线性增长的机时;已有 GPU 尝试多只加速单个 kernel,而这里把索引、IO、信道化与交叉相乘作为一条流水线设计。其价值在于可复用的算子组合范式:索引文件解耦随机读取、FFT 与相乘放 GPU、时间分片加 merge-shards 做扩展。证据限于 cuPhoton v0.1.3 的一份 10 TB 记录与 x86 基线,成像与定标不在范围内。
实际应用与启示 (So what)
若要迁移类似流水线,先做最小对照:固定同一份记录与 job 文件,只切换后端(posix 与 cuFile/cupy),记录读带宽、端到端时间与每卡扩展比;再测不同 shard 数与 merge-shards 开销,确认加速不是来自丢帧或权重重算。若数据无法走 GDS、或站对组合导致访存离散,应先解决 IO 与布局再谈 kernel 优化;merge 阶段头部校验失败就回退到单卡路径。