NoNaMe :: Распределённые вычисления для чайников (F@H)
Часть 1 (теоретическая). Что это такое и как это работает.
Согласно определению в Википедии, распределённые вычисле́ния — это способ решения трудоёмких вычислительных задач с использованием двух и более компьютеров, объединённых в сеть.
Сейчас, в связи с развитием интернета, многие проекты задействуют для вычислений компьютеры простых пользователей, подключенные к интернету. Это связано с тем, что современные компьютеры используют менее 10% мощности для повседневной работы, а большую часть времени и вовсе простаивают (можете убедится сами, в “Диспетчере задач” 95% времени процессора отдано Бездействию системы Idle).
Задачи, решаемые в рамках этих проектов весьма разнообразны – от бессмысленного “спортивного” взлома шифров на скорость методом перебора, до проверки физических гипотез и моделирования структуры белка для поиска лекарств от пока неизлечимых болезней.
Я попробую наиболее просто объяснить общую схему участия в таких проектах.
----------------------<cut>----------------------
Знакомьтесь, это Василий Пупкин – начинающий учёный. Он занимается фундаментальными медицинскими исследованиями, но, к сожалению, ничего не понимает в математике.
В один прекрасный момент Василий столкнулся со сложной математической проблемой. Её было необходимо решить в короткие сроки для успешного продолжения исследований, но гуманитарный склад ума не позволял Василию этого сделать.
И тут на помощь Василию пришли коллеги. Оказалось, что задача может быть хорошо распараллелена, т.е. поделена на более простые подзадачи, которые можно решать отдельно и независимо друг от друга.
Поступив таким образом, Василий раздал части задания коллегам и стал ждать результатов.
Кто-то справлялся быстро и брал новый кусочек, кто-то медленно, но в результате Василий получил ответ, близкий к окончательному. Начислив каждому коллеге очки за решённые фрагменты, Василий по уже отработанной схеме раздал для решения новые кусочки, пообещав начислять за них в два раза больше очков, так как они сложнее предыдущих.
Завершив и этот этап, Василий уже самостоятельно с помощью сложения в столбик получил окончательный результат. Ура!
А как же точность? Где гарантия, что кто-нибудь из коллег не ошибся в одном фрагменте и не повлиял таким образом на всё решение?
Хитрый Василий всё предусмотрел заранее. Когда дробил задачу, он делал по три копии каждого фрагмента, да ещё и раздавал их коллегам в запечатанных конвертах для предотвращения случайной порчи данных. А когда они ему (также в конвертах) возвращали ответы, он сравнивал их между собой и легко обнаруживал ошибки.
Да, при этом коллеги выполняли лишнюю работу, но точный результат был важнее, да и очки за фрагменты коллеги получали независимо от того считал ли кто-нибудь этот фрагмент до них или нет.
Конечно, в реальности всё несколько сложнее, расчёты – не простое сложение чисел, да и считать будете не вы, а компьютер :) Поэтому перейдём к практической части.
Часть 2 (практическая). Folding@Home. Быстро устанавливаем клиент для видеокарт и начинаем считать!
Проект Folding@home (читается Folding At Home) проводится Стэнфордским Университетом. Цель проекта — с помощью моделирования процессов свёртывания/развёртывания молекул белка получить лучшее понимание причин возникновения болезней, вызываемых дефектными белками, таких как Альцгеймера, Паркинсона, диабет типа II, болезнь Крейтцфельдта — Якоба (коровье бешенство) и склероз. К настоящему времени проект Folding@home успешно смоделировал процесс свёртывания белковых молекул на протяжении 5—10 мкс — что в тысячи раз больше предыдущих попыток моделирования. По результатам эксперимента вышло несколько научных работ.
Один из результатов:
Помимо практической ценности участия в проекте, есть также и спортивный интерес, можно вступать в команды и бороться за попадание на верхние строчки статистики.
Россию в этом проекте представляет команда TSC! Russia (номер 47191), насчитывающая около 1500 активных участников. Команда занимает 7 место в общекомандном зачёте и пока не сдаётся, но и враги не дремлют. Итак, для участия в проекте созданы клиентские программы для одноядерных процессоров (CPU), многоядерных процессоров (SMP) и видеокарт (GPU), а также для Playstation3. Поддерживаются ОС Windows, Linux, Mac OS X.
Для начала установим клиент для видеокарт — самый простой в установке и использовании, также является одним из самых производительных. Требования:
— Видеокарта: не ниже GeForce 88xx (драйвера 177.35 и более новые) или Radeon 24xx (драйвера Catalyst 8.1 и более новые)
— .NET Framework 2.0 или выше.
Установка и настройка:
При установке нужно лишь согласиться с лицензионным соглашением и нажать Next. После запуска клиента он будет виден в трее и надо будет сразу изменить следующие настройки:
Имя: Для начала предлагаю использовать командное имя nnm.ru, если потом будет желание побороться в одиночку, в любой момент сможете сменить на что-нибудь типа nnm_ваш_ник_на_нонейме (без кириллицы) чтобы выделяться из толпы. Проверить не занят ли ник можно здесь.
Команда: 47191 – это номер команды TSC! Russia.
ОК.
Дополнительно регистрироваться нигде не нужно – имя появится в статистике сразу после первого успешно сданного WU (WU = work unit = job = жаба). Можно использовать одно и то же имя на любом количестве клиентов.
Осталось перезапустить клиент и он скачает из интернета ядро, задание и начнёт работать. На завершение одного WU может потребоваться от получаса до суток в зависимости от количества очков, начисляемых за его расчет и мощности видеокарты. Полученный результат будет автоматически отправлен на сервер, после этого будет закачан новый unit, итд. Траффик мизерный — до 200 килобайт на unit. Перед запуском игр клиент лучше остановить (результаты сохранятся).
Пока всё, в следующий раз напишу как установить клиент для многопроцессорных систем.
Много информации можно почерпнуть по следующим ссылкам:
PS: Термин PPD (points per day, очков в сутки) — среднее количество очков, которое можно получить за сутки при постоянно работающем клиенте. Зависит от типа клиента, производительности системы и заданий.