Для организации такого количества параллельных вычислений нам придется призвать на помощь всю теоретическую информатику. Как научить компьютер распределять вычисления по нескольким ядрам и серверам, добиваясь при этом наилучшей производительности? Вероятно, нам следует модифицировать основные языки программирования, чтобы из программы можно было обращаться к разным ядрам? Но тогда как это сделать лучше всего?
К проблеме равенства P и NP тоже пытались применить распараллеливание. Помните Веруку Солт? Девочку из книги «Чарли и шоколадная фабрика», о которой мы говорили в первой главе? Верука очень хотела найти золотой билет, а все билеты были спрятаны в шоколадных плитках. Ее отец – владелец ореховой фабрики – распараллелил задачу, разделив шоколадки между всеми своими рабочими, которых у него было более ста. Так почему бы не сделать то же самое с задачами из класса NP? Например, распределить все потенциальные клики между разными ядрами и даже компьютерами? Иногда время перебора действительно может заметно сократиться – например, с нескольких недель до нескольких часов, однако некоторые NP-задачи и после распараллеливания останутся такими же неприступными. Будь у нас даже миллион компьютеров с триллионом ядер, каждое из которых выполняет квинтиллион операций в секунду, – для поиска клики размера 50 среди 20000 жителей Королевства все равно потребовалось бы в гугол раз больше лет, чем живет наша вселенная (а гугол, как уже говорилось, – это единица и сто нулей). В мире, где можно распараллелить любой процесс, вопрос о равенстве P и NP по-прежнему актуален.
А как обстоит дело с задачами из P? С теми, которые можно решить эффективно? Сумеем ли мы в полной мере воспользоваться всеми преимуществами распараллеливания? Как правило, эффективные алгоритмы действительно удается модифицировать, идет ли речь о простых арифметических задачах или о поиске кратчайшего пути и максимального числа паросочетаний; для всех этих задач вычисления с успехом распределяются по большому количеству ядер.
Класс задач, которые можно быстро решить в параллельном режиме, тоже получил обозначение: его назвали NC, или Nick’s Class , – в честь пионера параллелизации алгоритмов Николаса Пиппенджера. Если P = NP (так ли это, мы пока не знаем), то задачи, для которых существует эффективный алгоритм, в параллельном режиме решаются в разы быстрее. А если NP = NC (что, опять-таки, пока находится под большим вопросом), то и любую переборную задачу из NP тоже можно решить практически мгновенно, распараллелив вычисления по разным машинам и ядрам, – т. е. мир, где NP = NC, еще более совершенен, чем тот, где P = NP. И хотя классы NC и NP вряд ли окажутся равны, отношения между ними не менее загадочны, чем отношения между P и NP.
Каждую секунду мы загружаем 35 минут видеоматериала на YouTube , создаем 1600 сообщений в Twitter , 11000 постов в Facebook , 50000 поисковых запросов в Google и отправляем 3000000 электронных писем (из которых 90 процентов – это спам).
Телескоп «Хаббл» вращается на околоземной орбите и фотографирует космос, отсылая на Землю 200000 байт информации в секунду (один байт – это примерно один символ алфавита). На смену «Хабблу» планируется запустить «Джеймс Уэбб» с огромным параболическим зеркалом, который будет отправлять уже 3500000 байт в секунду.
Большой адронный коллайдер – самый крупный ускоритель частиц на планете – разместился близ границы Швейцарии и Франции. Каждую секунду он создает примерно полмиллиарда байт информации – и так изо дня в день, из года в год, а в году, между прочим, 31 миллион секунд!
Коллайдер построили в Европейском центре ядерных исследований (ЦЕРН). В пару к нему была создана сверхмощная вычислительная сеть, которая распределяет потоки генерируемых коллайдром данных по серверам в тридцати четырех странах; обработкой и анализом этих данных занимаются ученые по всему миру.
Описание ДНК человека занимает примерно 55 миллионов байт. Для хранения ДНК всех жителей Земли, т. е. семи миллиардов человек, потребуется что-то около 400 квадриллионов байт. А если считать не только людей?
Мы умеем быстро и довольно дешево создавать самые разнообразные датчики, которые могут измерить все, что угодно, – температуру, звук, движение, уровень радиации. Каждый датчик постоянно генерирует какую-то информацию, а в одной системе их может быть несколько тысяч – как в американской армии, которая буквально «тонет в датчиках и захлебывается мощными потоками данных».
Читать дальше
Конец ознакомительного отрывка
Купить книгу