NVIDIA cuPhoton.xBeam переносит корреляцию данных интерферометрии чёрных дыр на GPU

  • PublicPublic
  • 14 Nov, 2026
NVIDIA cuPhoton.xBeam переносит корреляцию данных интерферометрии чёрных дыр на GPU

Чтобы снять чёрную дыру, нужно разглядеть крошечный объект: наблюдаемое кольцо M87* занимает всего 42 микросекунды дуги. Телескоп горизонта событий (EHT) объединяет 13 радиостанций, в том числе на Гавайях, в Чили, Испании, Мексике и на Южном полюсе, методом интерферометрии со сверхдлинными базами (VLBI). Каждая станция записывает две поляризации со скоростью до 64 Гбит/с, и в итоге набираются петабайты данных о напряжении. Корреляция пар телескопов даёт видности. Это разреженные фурье-выборки яркости неба вдоль треков, которые прочерчивает вращение Земли. По этим выборкам алгоритмы реконструкции решают обратную задачу. С переменными источниками вроде Sgr A*, которые меняются прямо во время сеанса наблюдений, задача становится ещё сложнее. В EHT следующего поколения (ngEHT) планируют добавить новые станции, чтобы улучшить качество изображений и следить за изменениями во времени.

Рисунок 2. Синтетический пример в духе EHT, показывающий выборку пространственных частот, амплитуды видностей, «грязное» изображение и модель в форме полумесяца
Рисунок 2. Синтетический пример в духе EHT, показывающий выборку пространственных частот, амплитуды видностей, «грязное» изображение и модель в форме полумесяца

NVIDIA cuPhoton.xBeam - это FX-коррелятор на GPU. Из сырых записей он получает по одной комплексной видности на каждую пару станций, частотный канал и короткий интервал времени. Коррелятор создан вместе с Гарвард-Смитсоновским центром астрофизики и обсерваторией MIT Haystack. На системе NVIDIA Vera Rubin NVL72 он обработал набор данных объёмом 10 ТБ за 70 секунд. Для этого понадобились 64 GPU и GPUDirect Storage в режиме совместимости. Это примерно в 460 раз быстрее, чем на x86-процессоре: там ушло 31 992 секунды, то есть 8,89 часа. Последующие калибровка и построение изображений, например трёхмерные модели газа на основе гауссова сплаттинга, в cuPhoton не входят. Задержки по координатам станций xBeam не вычисляет и пути света не трассирует. Результаты сверяются с открытым CPU-коррелятором DiFX, а на выходные данные рассчитаны такие инструменты, как HOPS, rPICARD и eht-imaging.

Рисунок 4. Ускорение cuPhoton.xBeam по сравнению с базовым вариантом на процессоре x86 (слева) и пропускная способность загрузки данных (справа) при разном числе GPU на NVIDIA Vera Rubin NVL72
Рисунок 4. Ускорение cuPhoton.xBeam по сравнению с базовым вариантом на процессоре x86 (слева) и пропускная способность загрузки данных (справа) при разном числе GPU на NVIDIA Vera Rubin NVL72

Конвейер состоит из пяти этапов. На этапе приёма каждый кадр VDIF ставится на своё место во времени. Рядом создаётся файл.vdix, который индексирует кадры по метке времени, потоку и физическому расположению, не копируя сами данные. Пропущенные и некорректные данные при этом явно отмечаются. На этапе коррекции задержки и фазы интерференции данные до FFT выравниваются с точностью до целого отсчёта, и к ним применяется вращение фазы интерференции. Оставшуюся дробную задержку компенсирует частотно-зависимая поправка фазы.

Задержка берётся из файла задания. Она складывается из геометрического полинома вокруг t0, смещения и дрейфа часов каждой станции и смещения часов для каждого диапазона. В пределах одного FFT задержка может быть постоянной, линейной или параболической: это задаёт параметр fringe_approximation_order (0, 1 или 2). На этапе разбиения на каналы для каждой станции выполняется FFT. На этапе перемножения с накоплением спектр одной станции умножается на комплексно-сопряжённый спектр другой. Некорректные входные данные маскируются, а результат нормируется по весам экспозиции. На выходе получается формат DiFX SWIN или xbeam-v1.

Версия 0.1.3 принимает нормализованное задание в JSON (версия схемы 1) или поддерживаемый файл DiFX.input. В нём перечислены станции, часы, частоты, потоки данных VDIF, базы и сканы. Выходной каталог должен быть новым. Команда cuphoton xbeam inspect-vdif RECORDING.vdif --json читает только заголовки. Команда build-vdif-sidecar с параметрами --index-dir, --backend cufile (или posix, если GPUDirect Storage нет) и --devices создаёт индексы для повторного использования, а исходные файлы не меняются. Команда cuphoton xbeam correlate JOB.json с --backend cupy запускает корреляцию на GPU. По умолчанию данные читаются через POSIX в закреплённую память хоста, а с --vdif-io cufile - через GPUDirect Storage. Среди параметров есть --scan, --first-integration и --integration-count. Из Python можно вызвать load_job и correlate с CorrelationWindow и получать записи по одной, но запись в SWIN доступна только из CLI.

Для записей с пропусками есть профиль --profile interop-real-usb-buffered-window-replay-v1. С ним отсчёты внутри сохранённого буфера продолжают считываться с прежней привязкой по времени, пока не появится новая опорная точка. Профиль также определяет, какие блоки FFT учитываются и как отображаются веса. Потерянные отсчёты он не восстанавливает, и полный вес не гарантирует полноту данных. Без профиля кадры выравниваются по меткам времени в заголовках, а пустые слоты помечаются как некорректные, поэтому видности и веса могут отличаться. При масштабировании скан делится по времени. На одном узле --devices 0,1,2,3 запускает по процессу на каждый GPU, пишет результаты в RUN/shards/ и объединяет их. На нескольких узлах каждый процесс получает --shard-count и --shard-index, например 64 и индексы 0-63, с одинаковыми настройками сканов и интеграций. Затем merge-shards собирает частичные результаты SWIN воедино.

Рисунок 1. Радиотелескопы регистрируют сигналы, которые коррелируются в видности для реконструкции изображения. Концептуальная иллюстрация
Рисунок 1. Радиотелескопы регистрируют сигналы, которые коррелируются в видности для реконструкции изображения. Концептуальная иллюстрация
Рисунок 3. cuPhoton.xBeam преобразует записи телескопов в видности для последующего построения изображений
Рисунок 3. cuPhoton.xBeam преобразует записи телескопов в видности для последующего построения изображений