Вторник, 29 ноября, 2022

Задание на дом: как работают распределенные вычисления

Время на чтение 5 мин.

Как выполнить очень сложное вычисление? В голове сразу всплывает какой-нибудь суперкомпьютер. Монструозное сооружение, занимающее огромные площади, совсем как ЭВМ на заре развития вычислительной техники. Однако есть и другой путь, которые не требует большого помещения, невероятного потребления электричества и сложнейшей системы охлаждения (и денег, денег, денег). Речь о системе распределенных вычислений, когда задач решается на множестве обычных компьютеров, расположенных по всему миру.

Распределяй и вычисляй

Как же это работает? Схема довольно проста: компьютеры получают по локальной или глобальной сети задание на вычисление от центрального сервера, производят расчеты и отправляют результат обратно на сервер. А там уже все результаты обрабатываются, сводятся воедино и получается итоговое решение.

На практике эта схема реализуется следующим образом. На компьютер устанавливается специальная программа для обмена данными с сервером (весит она обычно до 15 мегабайт). Далее эта программа будет самостоятельно (или, в зависимости от настроек, с минимальным участием пользователя) связываться с центром. Когда присылаются задание, программа задействует неиспользуемые мощности процессора (или даже видеокарты). И это важный момент: распределенные вычисления не затормаживают выполнение основных заданий на компьютере. Поскольку процессор, как правило, не задействует большую часть своих мощностей, то для пользователя «побочные» вычисления проходят незаметно (разве что компьютер чуть громче шумит и греется).

Когда расчет сделан, программа отсылает результат на сервер и ждет новое задание. Таким образом участие в системе распределенных вычислений проходит практически незаметно для пользователя.

Вместо тысячи рук

Система распределенных вычислений была применена еще в XVIII веке — разумеется, пока без участия компьютеров. Тогда Франция решила наконец перейти на метрическую систему, а для этого требовалось уточнить логарифмические и тригонометрические таблицы. Эту работу поручили математику, члену Парижской академии наук барону Гаспару де Прони. Он оценил масштабы грандиозного труда и придумал систему, которая позволила оптимизировать работу.

Все исполнители-счетчики были разделены на три уровня. На первом, самом низком, работали вычислители, которые проводили непосредственно все расчеты. На втором трудились люди, которые организовывали распределение задач и обрабатывали результаты от счетчиков. И на третьем, высшем, уровне находились высококвалифицированные математики, которые обобщали результаты и представляли их в итоговой форме.

К сожалению, этот труд не был завершен — этому помешала французская революция. Но идея, которую Гаспар де Прони положил в основу работы, натолкнула английского математика и изобретателя Чарльза Бэббиджа к созданию аналитической машины. Она считается прообразом компьютера, хотя из-за несовершенства технологий XIX века построить ее было невозможно.

В 1966 году советские математики Эдуард Евреинов и Юрий Косарев из Новосибирска опубликовали статью (pdf) «Однородные универсальные вычислительные системы высокой производительности», в которой описали модель коллективных вычислений, основанную на параллельном выполнении операций. В 1977 году на кафедре вычислительной техники Новосибирского государственного технического университета объединили в систему распределенных вычислений три ЭВМ «Минск-32», находившихся в разных местах. Связь между ними держали по радио.

Параллельно с ними в 1973 году Джон Шох и Джон Хапп из Xerox PARC создали программу, которая по ночам, когда компьютеры центра простаивали, подключались к ним по локальной сети и раздавали вычислительные задания.

Работа найдется для каждого

С появлением интернета в систему распределенных вычислений стало возможно включать миллионы компьютеров по всему миру. В 1996 году стартовал проект GIMPS, целью которого стал поиск простых чисел Мерсенна, а по сути, поиск СБПЧ. На данный момент самым большим простым числом, найденным при помощи GIMPS, стало вычисленное в 2018 году 282589933 – 1, которое содержит 24862048 десятичных цифр. Зачем это? Во-первых, числа Мерсенна нужны для решения проблем из области теории чисел. Во-вторых, они используются в генераторах псевдо-случайных чисел. Кстати, GIMPS до сих пор работает, получая ежедневно около сотни вычислительных результатов. Внутри проекта существует целое соревнование между участниками за то, кто первым обнаружит следующее число. По оценкам, есть еще четыре числа Мерсенна, состоящие из менее чем ста миллионов цифр. Следующее должно насчитывать 26 миллионов цифр.

В 2002 году калифорнийский университет Беркли опубликовал первую версию своей платформы BOINC, предназначенной для добровольных распределенных вычислений, на сегодняшний день объединяющую множество компьютеров по всему миру для выполнения операций для различных проектов.

Первоначально BOINC разрабатывался для проекта SETI@Home, который был запущен в 1999 году. Его задачей был анализ данных, полученных с радиотелескопов, объединенных в рамках проекта SETI, для поиска сигналов искусственного происхождения, возможно, посланных внеземными цивилизациями. Правда, за более чем 20 лет не удалось обнаружить сигнал, стопроцентно принадлежащих инопланетному разуму. В 2020 году SETI@Home перестал посылать пользователям новые задания.

Но в BOINC есть много других проектов, которые приносят вполне ощутимую пользу всему человечеству. В частности, к ним относятся «молекулярные проекты», которые строят биологические модели. Они исследуют свойства белков, расшифровывают геномы и создают новые лекарства. В частности, проекты CommunityTSC и Find-a-Drug ищут средства от рака, туберозного склероза, ВИЧ, малярии и других заболеваний.

Технология распределенных вычислений позволяет задействовать огромные мощности. Например, пиковая мощность BOINC составила 320 петафлопс (флопс — количество операций в секунду), а мощность самого производительного суперкомпьютера только в 2022 году достигла эксафлопс, то есть на порядок выше.

С помощью распределенных вычислений мы все можем поучаствовать в решении глобальных проблем человечества — и это всего в несколько кликов.

В превью использована иллюстрация Cyberspace vector created by rawpixel.com — www.freepik.com

Оставьте ответ

Пожалуйста, введите свой комментарий!
Пожалуйста, введите ваше имя здесь

Enter Captcha Here : *

Reload Image

Последнее на сайте

Читайте также