До пятидесятых контакты с пришельцами интересовали в основном фантастов и тех, кто читал их книги. Но как только человечество выглянуло за пределы атмосферы, это заинтересовало учёных.
Для начала вспомнили о старых проектах, направленных в основном на то, чтобы сразу было видно, что на этой планете есть разумная жизнь. Например, предлагалось выкопать гигантские канавы в виде правильных геометрических фигур в пустынях, заполнить их керосином и поджечь. Или вырубить в сибирской тайге гигантскую иллюстрацию к теореме Пифагора.
С развитием радиоастрономии стало понятно, что цивилизация, подобная земной, выглядит как вспышка сверхновой в некоторых диапазонах. Со временем аналогия стала более полной: за сто лет наша цивилизация сначала взорвала эфир мощными сигналами радиопередач, перемещаясь с каждым годом в область более высоких частот, а потом стала понемногу покидать старые участки спектра в том же порядке, в каком осваивала их, уходя в цифру.
Тогда же был выбран и диапазон, на котором должны обмениваться радиосигналами цивилизации, достигшие уровня развития 1950-х. Волна излучения водорода — это электромагнитное излучение, которое исходит от водородных атомов в космических облаках. Это излучение является наиболее ярким и широко распространённым излучением в наблюдаемой Вселенной. А ещё оно проходит сквозь земную атмосферу. Логично было бы предположить, что потенциальные цивилизации Великого Кольца воспользуются именно частотой 1420 МГц. Одни проекты были направлены на то, чтобы слушать эту частоту, другие — чтобы что-то на ней сказать другим. Подробности экспериментов можно найти по ключевым словам CETI (связь с внеземным разумом) или SETI (поиск внеземного разума), и ни один из них не увенчался успехом.
Со временем число публикаций превысило некую критическую массу, и учёные собрались на конференцию. Её отголоски мы слышим до сих пор. Песня Пугачёвой «Звёздное лето», которая обрела второе дыхание из-за игры «Atomic Heart», была написана к одноимённому фильму 1973 года, сюжет которого родился из того факта, что в 1971 году астрофизики с мировым именем съехались в Бюраканскую обсерваторию в Армении.
Другую песню написал Высоцкий. «У тау-китян вся внешность обман» — из-за того, что Тау Кита в семидесятых была выбрана, как одно из наиболее вероятных мест возникновения такой же жизни, как у нас.
Исследователи космоса тоже не отставали. В 1974 году был послан сигнал с Аресибо, а все космические аппараты, которые могли покинуть Солнечную систему, содержали так или иначе записанные данные о местоположении Земли. С точки зрения победившей ныне концепции Тёмного Леса это невиданная беспечность, но, вполне возможно, что с точки зрения менее воинственных концепций межгалактического права, земляне таким образом отметили сферу своего влияния. И теперь «Пионер 10», «Пионер 11» и два «Вояджера» — это пограничные столбы будущей Земной Федерации.
Но всё это произошло ещё до моего рождения. Я же, как и все советские школьники, просто посмотрел в детстве выпуск передачи «Очевидное—невероятное» про формулу Дрейка и фильм «Ангар 18». А ещё довольно рано прочитал «Войну миров» и «Туманность Андромеды». Заинтересовался темой. Стал читать журнал «Земля и Вселенная», сборники «Наука и человечество» с первыми результатами экспедиций к другим планетам и тогдашний научпоп.
В конце восьмидесятых и начале девяностых я собирал все газетные публикации про пришельцев, их технику и способы связи. В те годы фантастический вариант контакта казался делом нескольких недель. Тарелки, если верить газетам, летали над каждой деревней, но отчего-то всячески избегали встречи со мной. Никакой особой критики не было — наоборот, уфология считалась вполне достойным занятием для учёного. В конечном итоге учёные-уфологи открыли ракетный НЛО-эффект (выхлоп взлетающей ракеты с далёкого расстояния выглядит как типичная тарелка классической формы, если смотреть с хвоста) и смогли связать петрозаводские тарелки с запусками с космодрома Плесецк, но на этом их вклад в науку закончился.
В начале девяностых я узнал про книгу Шкловского и про конференцию по CETI в Бюракане в 1971, нашёл книгу и отчёт о конференции. Больше всего впечатлило, что в 1971 году, как раз в разгар лунной гонки, один из учёных произнёс «сто миллиардов долларов — не такая большая сумма». Речь шла как раз о постройке гигантского радиотелескопа для поиска сигналов извне. До сих пор не могу найти, кто это был. Возможно, память меня подводит, и фраза прозвучала не на первой, а на третьей (1991, Калифорния) конференции, уже по SETI.
После двадцати лет неудачных попыток связаться со мной антинаучными методами, пришельцы покинули нашу планету и больше не заглядывают.
Потом я прочитал про SETI@Home в «Компьютерре», и тут же присоединился к проекту распределённых вычислений.
Это был первый в мире глобальный проект распределённых вычислений и третий в мире большой проект распределённых вычислений вообще (другие два — Great Internet Mersenne Prime Search (GIMPS), 1996 и distributed.net, 1997).
Он возник в то время, когда сети только начинали опутывать Землю, и связывали в основном крупные университеты. Всемирной паутине было меньше десяти лет и она состояла на 90% из порносайтов. Большинство соединений тогда осуществлялось по телефонным проводам при помощи модема.
17 мая 1999 года был выпущен публичный клиент SETI@Home, который первоначально жил сам по себе и запускался как скринсейвер. Его создали несколько студентов и преподавателей Беркли (University of California, Berkeley). Пока сайт проекта не удалили, их можно увидеть здесь: https://setiathome.berkeley.edu/sah_about.php.
Руководителем был Эрик Корпела (Eric Korpela). Он же — главный скептик проекта, закрывший все известные человечеству сигналы из космоса. Пока все искали сигналы, Эрик находил им объяснение, не связанное с другими цивилизациями. Астроном, исследователь межзвёздной пыли и земной ионосферы, создатель приборов для некоторых спутников NASA, коллекционер старых компов и любитель рыбалки. SETI — его основная специализация.
Главным программистом был Дэвид Поуп Андерсон (David Pope Anderson). Специалист по виртуальной реальности, потоковому вещанию и распределённым вычислениям, а также альпинист. Дэвид создал не только клиентскую и серверную части SETI@Home, но и платформу BOINC, на которой могли разворачиваться любые другие распределённые вычисления.
Старшим учёным команды был Дэн Вертимер (Dan Werthimer). Участник одного из первых проектов по поискам внеземных сигналов — SERENDIP (Search for Extraterrestrial Radio Emissions from Nearby Developed Intelligent Populations). Ищет братьев по разуму с 1979 года. В свободное от пришельцев время играет джаз на пианино. Он определил, что и как нужно искать, а сейчас занимается проектом CASPER.
Осталось два сисадмина — Джефф Кобб (Jeff Cobb) и Мэтт Лебовский (Matt Lebofsky). Джефф создал систему получения обработанных данных, а Мэтт — систему распределения работы по компам в проекте. Оба суровых админа тоже любят ходить по горам, а Джефф ещё и профессиональный музыкант.
Команда всегда была относительно небольшой и напоминала коллектив из супергеройского кино. Величина проекта открыла две интересные проблемы, а его популярность привлекла учёных для их быстрого решения.
В жизни распределённые вычисления использовались с начала 1980-х годов при создании трёхмерных изображений. То, что сейчас делает любая видеокарта, тогда просчитывалось на фермах из нескольких персоналок Silicon Graphics.
Первой проблемой стал большой объём данных для обработки.
Телескоп в Аресибо в свободное от других задач время слушал 2.5-мегагерцовую полосу вокруг волны водорода и записывал около 35 гигабайт данных в день. Такой объём в эпоху телефонных модемов передать было невозможно, поэтому в Беркли данные шли обычной почтой на DLT-кассетах. В конце существования проекта, когда данные стали поступать с двух других телескопов, они шли уже по сети.
Кассета с данными попадала на сервер проекта, так называемый сплиттер. Там весь спектр разбивался на 256 частей по 10 килогерц (точнее, по 9766 Гц) с длительностью 100 секунд (точнее, 107с). Такие части назвали дольками (slice). По теореме Котельникова частота дискретизации в 10 килогерц требует потока минимум 20000 бит в секунду, поэтому размер дольки был 2 мегабита. Делим на 8, получаем 250 килобайт. Ещё 90 килобайт занимали служебные данные о блоке — координаты участка неба, точное время записи и так далее. Полученный кусок данных в 340 килобайт назывался рабочий юнит (workunit). По модему с максимальной скоростью в 56 килобит в секунду такой кусок мог быть передан примерно за минуту.
Со сплиттера данные попадали на сервер распределения данных, который решал, что и когда посылать, а оттуда — на сервер раздачи данных, с которым соединялись клиенты.
Участником проекта мог стать кто угодно. Для этого надо было скачать клиент проекта, который сначала работал как скринсейвер и показывал визуализацию обрабатываемых данных. Правда, сразу оказалось, что визуализация сама по себе требует ресурсов, поэтому скринсейвер обычно отключали.
https://seticlassic.ssl.berkeley.edu/screensaver/index.html
Основной работой клиента был расчёт плотности излучения при помощи быстрого преобразования Фурье. Фактически, клиент пытался распознать сигнал в космическом шуме. Кандидатом на сигнал считался любой мощный всплеск излучения. На визуализации он выглядел бы как чрезвычайно высокий столбик — spike. Кандидатов проверяли вручную и сверяли со всеми возможными источниками земных или естественных помех.
Проблема состояла в том, что рабочий юнит требовал несколько тысяч часов вычислений на слабой машине и несколько десятков часов на самой сильной (на тот момент). Или в десять раз дольше, если работает визуализация. Поэтому для обработки всех поступающих данных требовалось чрезвычайно много добровольцев. К счастью, они нашлись. В лучшие годы в проекте более-менее активно участвовало три миллиона человек, а по суммарной производительности все занятые в проекте SETI at Home машины в начале нулевых превосходили любой из существующих суперкомпьютеров.
Когда workunit просчитывался, клиент соединялся с сервером, если была возможность. В эпоху модемов организовать постоянное подключение к интернету было крайне дорого и, в большинстве мест на планете, физически невозможно. Поэтому клиент можно было настроить, чтобы он сам дозванивался до провайдера, отсылал результат вычислений одного юнита, получал следующий и отключался. Можно было разрешить клиенту обмениваться данными только тогда, когда связь с провайдером уже установлена. Можно было управлять всем в ручном режиме, когда участник сам решает, когда отправить данные и когда запросить.
Результаты попадали на сервер приёма данных, оттуда — снова в планировщик, а из планировщика — в научную базу.
Для надёжности раздаваемые куски данных перекрывали друг друга по времени. Когда стало понятно, что мощностей для расчёта достаточно, некоторые части записи для перепроверки просчитывались по второму разу.
Побочным результатом проекта почти сразу стал AstroPulse. Оказалось, что и собираемые в Аресибо данные, и способ их обработки прекрасно подходят для поиска новых пульсаров. С точки зрения клиента SETI at Home, пульсар — это повторяющийся через один и тот же участок времени пик излучения одной и той же мощности, которое исходит из одних и тех же координат. Надо только сгруппировать данные и сравнить с уже имеющимся списком пульсаров.
Следующим шагом в развитии стала BOINC — Berkeley Open Infrastructure for Network Computing. В 2001 году была создана бета-версия обёртки для клиента, которая скачивала пакет из нескольких рабочих юнитов, умела работать с постоянным подключением к интернету и с многопроцессорными системами (когда появились многоядерные процессоры, это очень пригодилось). Сначала предполагалось, что платформа BOINC будет использоваться только для SETI и AstroPulse. Затем Дэвид Андерсон понял, что BOINC может стать платформой для любых других проектов распределённых вычислений и сделал её открытым проектом.
10 апреля 2002 года проект заработал. С этого момента любой житель планеты, имеющий персоналку или смартфон, может внести свой вклад в реальную науку. Достаточно только скачать клиент, выбрать проекты, к которым хочешь присоединиться, и выделить под них часть своих вычислительных ресурсов. В нулевых пиковая вычислительная мощность платформы на всех проектах составляла 320 петафлопс, что в три раза превосходило мощность самого производительного на тот момент суперкомпьютера.
BOINC работает и на новейших, на самых слабых, давно устаревших машинах, которые в настоящее время уже ни на что не пригодны. Сам я ищу гравитационные волны и при помощи Pentium IV из 2002 года, и на Raspberry PI 2B.
Гибкие настройки BOINC позволяют использовать её для нагрузочного тестирования новых процессоров и для исследования особенностей их работы в разных режимах. Клиент BOINC включен по умолчанию в большинство существующих дистрибутивов Linux, а открытый код позволяет скомпилировать его для тех дистрибутивов, где его нет.
***
Вторую проблему, с которой столкнулись распределённые вычисления на раннем этапе, или даже набор проблем, породила сама добровольность участия в проекте.
Если сисадмин распределяет вычислительные мощности на несколько собственных машин, он заранее представляет, на что они способны, сколько займут вычисления, какова вероятность поломки каждой из них и в какой последовательности что считать.
Если работа распределяется на миллионы машин добровольцев, не известно ничего. Из шести миллионов участников программы только примерно четверть просчитала хотя бы один блок данных. На 2000 год статистика была получше — из миллиона участников довела дело до конца примерно треть.
У тех, кто просчитал хотя бы один рабочий юнит, это могло занять и несколько часов (позже — минут или даже секунд — на мощных видеокартах), и пару месяцев.
Кроме того, никто не гарантировал точность результата. Небольшая команда из Беркли физически не могла протестировать корректность работы клиента на всех комбинациях софта и железа. Данные могли исказиться во время обработки из-за неправильной компиляции или неучтённой особенности работы конкретного процессора.
Огромная популярность проекта привела к тому, что появились участники-спортсмены, работающие на результат и желающие выйти на первые места в рейтингах любой ценой.
Кто-то грузит все машины, чтобы побольше насчитать. Например, Gary Roberts, медиамагнат из Австралии, использует целую фабрику из серверов, чтобы оставаться на первой строчке в рейтинге участников Einstein at Home.
Кто-то читерит, генерируя результаты или используя облегчённый клиент.
В результате обработка результатов вычислений стала такой же проблемой, как и распределение исходных данных между участниками, а решил её Дэвид Молнар. В 1999 он был аспирантом в Гарварде и участником эхоконференции SCI.CRYPT. Потом стал мировым специалистом в области криптографии и компьютерной безопасности, участвовал в создании Windows Defender.
Его противниками были Olli и Microsoft. Вот что пишет сам Дэвид в статье «The SETI@Home Problem»:
«Olli — псевдо одного из подписчиков конференции SCI.ASTRO.SETI, который решил, что клиентская программа SETI@Home слишком медленная и нуждается в усовершенствовании. Olli выпустил патч к исходной программе из Беркли, добавляющий эти «усовершенствования». Тогда как Olli заявлял, что патч делает клиент быстрее, исследователи SETI@Home утверждали, что патч служит причиной тому, что клиент возвращает ответы, которые могут непредсказуемо отличаться от вычисленных с помощью оригинального непропатченного клиента.
Microsoft сообщил о своей собственной версии SETI, заточенной под аппаратуру с установленным Windows. Они хотели быстрее всех просчитывать рабочие юниты, чтобы доказать, насколько хорошо Windows работает. Персонал SETI обнаружил жульничество Microsoft и указал, что надо использовать оригинальное программное обеспечение SETI.
От результатов эксперимента чуть не остались одни руины. Проблема заключалась в том, что пропатченные и непропатченные клиенты отправляли свои результаты на один и тот же сервер SETI@Home, причем не было никакой возможности отличить одни от других».
Необходимо было организовать процесс, чтобы злонамеренные или невольные читеры не смогли нанести ущерб проекту.
Самым простым вариантом было посылать один юнит нескольким компьютерам. Если у большинства результат вычислений совпадает, распределяющий сервер повышает уровень доверия к ним и постепенно начинает выделять им более ответственные задания. Поэтому недавно подключенные к проекту компьютеры получают задания, идентичные трём другим, а работающие давно (и с хорошим результатом) — уникальные задания. Если результат не совпадает, его отбрасывают, а уровень доверия к компьютеру уменьшается. Если ошибочных результатов слишком много, компьютеру посылаются только задания, ранее просчитанные на других машинах, — до тех пор, пока не наберёт доверия правильными ответами. Способ работает только в том случае, если читеров или глючных машин среди участников гораздо меньше, чем честных или исправных.
Рассматривался также вариант убрать все рейтинги. Но отсутствие спортивного интереса лишило бы многих повода для участия в проекте.
Для борьбы с теми, кто скачивает задание и не просчитывает его, были введены ограничения по времени. Сейчас во всех проектах на просчёт даётся от недели до пары месяцев. Если за это время задание не сдано, оно посылается кому-нибудь ещё.
В файл результата был включен краткий лог выполнения вычислений — transcript of computation. Если последовательность вычислений отличалась от стандартной, клиент считался повреждённым. Затем для уменьшения размера отчётов стали высылать только хэш записанной клиентом последовательности.
Вместе с настоящими рабочими юнитами стали случайным образом высылаться тестовые, с заранее известным результатом. Сейчас серия тестовых юнитов обычно выдаётся участнику сразу после подключения к любому проекту. Это решает сразу две проблемы — общий результат не пострадает, если новый участник скачает задание и не досчитает его (а таких людей большинство), и первоначальный рейтинг доверия к компьютеру будет строиться на заведомо достоверных данных.
В результате сложилась система, когда ускорение работы клиентской программы путём внесения изменений в исходный код, в принципе, возможно. Но для того, чтобы результаты принимались сервером, пропатченная на скорость программа должна выдавать в большинстве случаев верные, совпадающие с эталоном и с соседними машинами, результаты. То есть — работать корректно.
До 2009 года распределённые вычисления оставались чисто научным явлением, а потом пришли криптовалюты. Математический аппарат и технологии, отработанные учёными и энтузиастами, легли в основу блокчейна.
В 2013 году у фанатов науки появилась своя криптовалюта — гридкойн (GRC). Её не майнят, а выдают за участие в распределённых вычислениях. Сначала гридкойн был привязан к платформе BOINC, потом стало возможно получать его и за проекты на других платформах. Большого успеха GRC никогда не имела, прибыльной тоже не была, и сейчас стоит в районе одного цента. Единственное, куда её можно сейчас потратить — это пожертвовать на какой-нибудь научный проект. Но во время первого бума криптовалют, на рубеже 2017 и 2018, она почти месяц продержалась в районе 20 центов. Популярностью гридкойн не пользуется ещё и потому, что для его получения надо вступать в пул или хотя бы в команду майнеров, то есть терять все старые рейтинги. Лучше уж по старинке бороться за честь своего института, предприятия или страны.
Появление криптовалют сильно ударило по распределённым вычислениям, но не уничтожило их. И в 2017, и в 2021 оставались люди, предпочитающие науку прибыли, а в начале эпидемии, когда биологи опубликовали призыв к участию в изучении нового вируса, в проекты пришло много новых участников.
Телескоп в Аресибо, который собирал данные, сломался в 2019, а 1 декабря 2020 года был разрушен. SETI@Home, с которого всё началось, остановил сплиттер 31 марта 2020 года. Последние юниты были разосланы участникам летом того же года.
С той самой статьи в «Компьютерре», и на любом новом процессоре, и на любом дешёвом или устаревшем, который попадал мне в руки, я в первую очередь пробовал запускать сначала клиент SETI at Home, а потом и другие BOINC-проекты. Благодаря фирме Selectel с 2017 по 2020 у меня была возможность тестировать таким образом топовую модель каждого свежего процессора, которые в то время выходили. Единственная неудача — Xeon Phi 7240p, интеловский сопроцессор архитектуры KNL c 68 ядрами и 272 потоками. На нём запустить BOINC не удалось. Если получу доступ к какому-нибудь «Эльбрусу», попробую на нём.
Благодаря платформе BOINC и миллионам добровольцев, распределённые вычисления стали удобным инструментом науки. С их помощью были открыты гравитационные волны. На BOINC-е считают параметры белков и действие новых лекарств, изучают ковид, предсказывают климат, создают трёхмерную карту нашей галактики, ищут экзопланеты и много чего ещё.