Ли Дун был настолько возбужден мгновение назад, что только сейчас сообразил, будто сидит не на своем месте.
— Ой, прошу прощения. Я перепутал номер места.
Ли Дун быстро поднялся, уступив место «А» у окна и пересев на место «C» в проходе рядом с ним.
Заметив вежливое поведение Ли Дуна, молодой человек учтиво кивнул. Убрав багаж на верхнюю полку, он сел на место у окна.
Его звали Цинь Фэй, он был студентом третьего курса Пекинского политехнического института по специальности «Вычислительная техника и технологии».
Будучи студентом, который практически жил на четвертой линии столичного метро, Цинь Фэй испытывал огромное академическое давление. Особенно учитывая его специализацию: «Высокопроизводительные вычисления и оптимизация низкоуровневых алгоритмов».
Теперь, переходя с третьего курса на четвертый, Цинь Фэй находился на решающей финишной прямой подготовки к экзаменам в магистратуру.
Он изначально не планировал возвращаться домой на лето. Ему хотелось остаться в университетской лаборатории и продолжать корпеть над своим проектом по вычислительной мощности.
Однако он был настолько исключителен, что его подготовка опережала график. Обеспечить себе место в магистратуре для него было проще простого.
К тому же на Новый год он домой не ездил, поэтому решил съездить навестить родителей.
Теперь же, с началом нового семестра, вполне само собой наступило время возвращаться в университет.
Устроившись на своем месте, Цинь Фэй достал пару шумоподавляющих наушников, надел их и устремил взгляд на проносящийся за окном пейзаж.
Тем временем сидевший рядом Ли Дун уже вытащил из сумки ноутбук марки Леново и установил его на раскладном столике.
«Сегодня я сверну горы, но вычищу эту гору паршивого кода!»
Ли Дун открыл свой ноутбук.
Он решительно забросил свой прежний, неэффективный скрипт на Питоне и открыл интегрированную среду разработки на Си-плюс-плюс.
Проверка нетривиальных нулей дзета-функции Римана требовала низкоуровневого языка, а также библиотек точной арифметики для обеспечения точности вычислений.
«Мой показатель базовых характеристик доведен до максимума, и у меня есть пассивный навык Кодовая интуиция (базовая версия)».
«Чувствую себя просто пугающе сильным в этот момент...»
КЛАЦ-КЛАЦ... КЛАЦ-КЛАЦ...
Несмотря на шумоподавляющие наушники, внимание Цинь Фэя привлекли суетливые движения Ли Дуна рядом с ним.
Он слегка склонил голову и бросил взгляд в сторону.
«СинкБук?»
Цинь Фэй мысленно покачал головой (OK, устойч.).
«Использовать для написания кода ультрабук, созданный тонким, легким и предназначенным для офиса? Выдержит ли вообще система охлаждения? Парень явно попался на удочку маркетологов...»
С легким превосходством эксперта Цинь Фэй снова взглянул на экран Ли Дуна, после чего на мгновение замер.
Функция Римана-Зигеля Зет функция (...)
Переменная: мпфр_т тета_т.
— Хм?
Цинь Фэй приподнял бровь.
«Писать формулу Римана — Зигеля на Си-плюс-плюс? Этот парень проводит проверку нетривиальных нулей дзета-функции Римана?»
«Он из той же сферы? Какая неожиданность — встретить другого студента-программиста в скоростном поезде».
Однако он наблюдал за кодом Ли Дуна с высоты своего опыта и снисходительным видом бывалого ветерана.
Наконец, в лаборатории высокопроизводительных вычислений Пекинского политехнического института подобные проекты были сплошь и рядом.
При текущем уровне вычислительной мощности использование классических математических задач — вроде вычисления числа пи до десятков миллиардов знаков или поиска больших простых чисел — в качестве эталонов для проверки оптимизации низкоуровневых алгоритмов было обычным делом для таких студентов-вычислителей, как они.
К тому же, готовясь к собеседованиям в магистратуру и защите дипломного проекта, Цинь Фэй сам недавно написал с нуля программу для проверки нулей Римана.
«Идея неплохая, отличная практика».
Цинь Фэй покачал головой (OK, устойч.), и его взгляд упал на ноутбук, а на губах заиграла скептическая усмешка.
«Но с этим барахлом-ультрабуком, который ему впарили, докуда вообще дойдет его алгоритм?»
«До ста тысяч? Или до миллиона?»
«Готов поспорить, к тому моменту, как он доберется до миллиона нулей, фрагментация памяти и температура процессора устроят этой железке синий экран смерти».
Цинь Фэй был в этом уверен.
Когда он сам работал над этим проектом, он использовал кластер высокопроизводительных серверов университетской лаборатории.
Благодаря предельно жесткому контролю многопоточности и оптимизации попаданий в кэш третьего уровня ему удалось довести расчеты нулей до устрашающего масштаба в сотни миллионов!
Он даже чувствовал, что если бы потратил чуть больше времени на доработку сборщика мусора указателей памяти, то преодоление миллиардного порога не выглядело бы чем-то невозможным.
«Какая дилетантщина...»
Цинь Фэй с педантичным видом покачал головой (OK, устойч.). Забыв про пейзаж за окном, он с живым интересом уставился на экран Ли Дуна, решив, что это будет неплохим развлечением в дороге.
Ли Дун, не замечавший наблюдающего за ним эксперта, был полностью сосредоточен на оптимизации своего алгоритма.
Наблюдая за Ли Дуном, Цинь Фэй сначала поймал себя на том, что одобрительно кивает.
«Хм, неплохо».
«Он догадался отбросить исходную формулу произведения Эйлера и сразу перейти к формуле Римана — Зигеля».
«Цикл для слагаемого главного члена структурирован грамотно, да и тейлоровское усечение для разложения остаточного члена вполне разумно».
«Временная сложность составляет стандартную величину O(t^(1/2)). Для обычного студента его программная база очень крепка».
Мысленно Цинь Фэй выставил коду оценку «удовлетворительно».
Однако стоило Цинь Фэю ожидать, что Ли Дун логично продолжит писать код многопоточного ускорения...
Ли Дун внезапно остановился.
Затем он нажал клавишу возврата, стирая больше половины только что написанного стандартного для учебников цикла вычисления главного члена по формуле Римана — Зигеля!
Цинь Фэй замер.
«Что он делает? Ошибся и решил всё отменить?»
Но следующий набранный Ли Дуном код поверг Цинь Фэя в абсолютное замешательство.
Ли Дун не стал зацикливаться на том, как ускорить отдельное вычисление.
Обладая [Кодовой интуицией] и тем снижающим размерность математическим мышлением из «Последних слов Римана», он теперь начал находить идеальный мостик к фундаментальной логике современных компьютеров.
В самом начале кода он подключил заголовочный файл с именем быстрое преобразование фурье.
Это была известная библиотека с открытым исходным кодом для быстрого преобразования Фурье.
Затем он задал в коде плотную сетку вычислений.
Функция мульти-точечной сетки (...)
Построив локальные полиномы, он насильственно преобразил дзета-функцию Римана, требовавшую грубого расчета путем подстановки значения t точка за точкой, в разложение в ряд Тейлора по узлам сетки.
После этого Ли Дун задействовал алгоритм быстрого преобразования Фурье, позволив этим полиномам с огромной скоростью перемножаться в частотной области.
Цинь Фэй уже снял шумоподавляющие наушники. Его глаза были прикованы к экрану Ли Дуна, а дыхание стало частым.
«Погодите... какого черта он творит?»
Цинь Фэй попытался с помощью собственных знаний разобрать скрытую за кодом логику.
«Ты же вычисляешь дзета-функцию Римана, так какого хрена приплетаешь сюда быстрое преобразование Фурье? Между ними вообще нет ничего общего!»
«И эта матрица многоточечной оценки? Он закинул разложение Тейлора на сетку...»
Внезапно его озарила догадка.
«Он... он ведь считает не по одной точке! Он использует свойство эффективной свертки быстрого преобразования Фурье, чтобы насильственно объединить вычисление всех нулей на огромном интервале в единую параллельную полиномиальную операцию!»
«Использует многоточечную оценку, чтобы свести к минимуму чудовищные вычислительные затраты главного члена формулы Римана — Зигеля?»
На самом деле именно такой подход к вычислению нулей Риман изложил в своей рукописи — подход, оставшийся незамеченным позднейшими исследователями.
Он опередил опубликованный позже алгоритм Одлизко — Шенхеге почти на полтора столетия. На фундаментальном математическом уровне он даже снижал временную сложность последнего на целый порядок.
Но Цинь Фэй никак не мог этого знать!
В его реальности сложность O(t^(1/2)) формулы Римана — Зигеля была теоретическим пределом снизу для вычисления отдельного нуля.
Даже самый быстрый алгоритм в этой области, алгоритм ОС, был лишь крайнюю инженерную оптимизацию; выйти за рамки этой математической структуры принципиально не представлялось возможным.
Но этот парень перед ним... что он вообще вытворял? Неужели он пытался сокрушить всю вычислительную архитектуру целиком?
«Да как такое вообще возможно?!»
Цинь Фэй решил, что этот тип сошел с ума.
«Развертывание главного члена в матричную операцию теоретически способно снизить среднюю сложность, но как сдерживать погрешность? При таком раскладе ошибка усечения чисел с плавающей запятой гарантированно взлетит по экспоненте!»
Однако прежде чем Цинь Фэй успел мысленно завершить свое возражение...
Ли Дун принялся вплетать между узлами многоточечной оценки несколько фрагментов кода интерполяционной фильтрации для функции с ограниченной полосой частот, безупречно удерживая ошибку усечения пути интегрирования в строжайших математических рамках!
Каждый обход по указателям, каждое повторное использование памяти выполнялись с изяществом.
«Да быть не может... Даже алгоритм ОС невозможно воплотить с таким мизерным объемом кода и столь ничтожными накладными расходами на память!»
«Его логика интерполяции вообще не имеет ничего общего с современным численным анализом... Откуда, черт возьми, взялся этот алгоритм?!»
Цинь Фэй был полностью ошеломлен.
Хотя он узнавал синтаксис Си-плюс-плюс, он уже совсем не поспевал за той алгоритмической логикой, которую они формировали в совокупности.
«Он ведь не просто так чушь порояливает, верно?»
«С таким написанием... оно вообще запустится?»
Цинь Фэй погрузился в пучину глубоких сомнений в собственных силах.
Настройки чтения
Размер
18
Шрифт
Выравнивание
Тема
Интервал
1.7
Ширина
Оригинал текста
Отметки прогресса
Мой учебный чат полон настоящих небожителей — Главы
Список глав загрузится при открытии.
Комментарии
Войдите, чтобы оставить комментарий.