Folding@Home: суперкомпьютер дома

Николай Довгий, команда Ukraine (2164), www.distributed.org.ua

Вычислительные ресурсы современных домашних компьютеров используются в лучшем случае на 10–20%, если ПК включается не только для того, чтобы поиграть. При работе в интернет- и офисных приложениях задействуются считаные проценты процессорного времени даже одноядерных CPU, а 3D-акселераторы так и вовсе простаивают, если не использовать Windows Vista с графическим интерфейсом Aero. Соответственно, вложенные в домашний ПК средства оправдывают себя лишь с появлением хорошей игры или при желании заняться творчеством. В поисках того, чем бы загрузить компьютер в свободное от тяжелых задач время, мы обратили внимание на проект Стэнфордского университета Folding@Home. В фундаментальных исследованиях рассчитываются сложнейшие математические модели, что дает отличную возможность в полной мере реализовать излишки вычислительного потенциала персональных компьютеров. Причем не из одного желания заставить ПК трудиться на благо человечества – дополнительное моральное удовлетворение можно получить от участия в национальной команде, укрепляющей престиж родной страны на мировой вычислительной арене. В этом материале мы не только расскажем о том, как сделать свой домаший ПК частью глобального суперкомпьютера, но и постараемся ответить на вопрос, стоит ли тратить электроэнергию на Folding@Home с точки зрения научной ценности результатов данного проекта.

Распределенные вычисления (РВ) – метод решения ресурсоемких задач с помощью множества персональных компьютеров, объединенных в вычислительную сеть. Каждый ПК, участвующий в проекте РВ, получает небольшое задание, обрабатывает его и отправляет результат в исследовательский центр в автоматическом режиме. При такой организации расчетов становится возможным объединенными ресурсами значительного числа обычных домашних или офисных ПК достичь вычислительной мощности суперкомпьютеров. В частности, суммарная производительность более 180 000 процессоров, задействованных в Folding@Home, на текущий момент превышает 210 терафлопс, что выводит данную вычислительную сеть на лидирующие позиции среди мощнейших суперкомпьютеров мира. Конечно, напрямую сравнивать распределенные и централизованные вычислительные «фермы» нельзя, но у Folding@Home в любом случае остается неоспоримое преимущество: стоимость использования 180 000-процессорного суперкомпьютера также распределяется между десятками и сотнями тысяч пользователей, выражаясь в незначительном увеличении счетов за электроэнергию. Сами программы РВ (так называемые клиенты) написаны таким образом, чтобы работать с наиболее низким приоритетом – т. е. они не «мешают» ни пользователю, ни программам и, по сути, подменяют собой процесс System Idle Process («Бездействие системы»).

Если вспомнить историю, первые проекты распределенных вычислений появились около десяти лет назад. Это были SETI@Home (поиск внеземных цивилизаций) и Distributed.net (участники пытаются доказать ненадежность криптоалгоритма RC5 путем прочтения зашифрованного им послания). Позднее возникли более общественно полезные проекты в разных областях науки – математике, физике, биологии. Folding@Home стартовал 1 октября 2000 года, и на сегодня это один из самых популярных (количество участников уже перевалило за 550 тыс.) и прогрессивных проектов распределенных вычислений, о котором немало говорят как специализированные, так и общественные средства массовой информации. Большой интерес вызывает он и у производителей аппаратного обеспечения – ATI и NVIDIA с их графическими процессорами и Sony с ее приставкой PlayStation 3 считают делом чести обеспечить возможность использования своих продуктов в Folding@Home.

Подключится за 5 минут

На сайте folding.stanford.edu/download.html следует выбрать версию клиента для Windows XP или Vista для центрального или графического процессора. Чтобы настроить систему с двумя видеокартами Radeon, необходимо внимательно изучить инструкции по адресу fahinfo.org/gpu/multi_gpu_howto.html. Для обычных клиентов процесс установки консольной версии приведен ниже.

После загрузки клиента копируем файл FAH50х-Console.exe в папку, которая в дальнейшем станет рабочей (например, C:Program FilesFolding). Затем запускаем клиент и отвечаем на вопросы:

  1. Username – указываем имя пользователя, с которым будет автоматически создан профиль в базе данных Folding@Home (регистр букв имеет значение).
  2. Team – номер команды (0 по умолчанию, 2164 – Ukraine). Очки, набранные в одной команде, при переходе участника в другую остаются за старой.
  3. Launch automatically at startup, installing this as a service? Если ответить «Yes» – клиент сможет работать в полностью фоновом режиме, иначе – будет кнопка на панели задач.
  4. Ask before fetching/sending work? Ответ «Yes» означает, что клиент будет выдавать запрос пользователю при получении задания или же отправлении результата.
  5. Use Internet Explorer settings? При ответе «Yes» для доступа в Интернет будут применяться настройки прокси-сервера, заданные в Internet Explorer.
  6. Allow receipt of work assignments and return of work result greater than 5 MB in size – означает согласие пользователя на получение больших, до 5 МВ и выше, заданий, которые требуют значительных объемов памяти для выполнения. За них будут начислены бонусные очки в статистике.
  7. Change advanced options? Чтобы перейти к следующим настройкам, следует ответить «Yes».
  8. Core priority (idle/low) (приоритет процесса). По умолчанию – «idle», так и следует оставить.
  9. CPU usage requested (5–100). По умолчанию используется 100% ресурсов процессора, но можно уменьшить нагрузку до другого уровня, например если система работает нестабильно.
  10. Disable highly optimized assembly code – оставляем по умолчанию «No», так как этот параметр был актуален для прошлых поколений процессоров.
  11. Pause if battery power is being used – приостановить работу, пока устройство питается от батарей. Актуально для ноутбуков и при подключении к ИБП.
  12. Interval, in minutes, beetween checkpoints (3–30) – здесь задается время между сохранениями состояния задания. Следует учитывать, что в момент записи новые данные пишутся просто поверх старых, и если в это время произойдет сбой системы, то все результаты будут утеряны и придется начинать с нуля.
  13. Memory, in MB, to indicate – количество памяти, которое может быть задействовано клиентом. Параметр актуален для так называемых big units. Рекомендовано 64 MB для обычных заданий и 256 MB для больших, если в системе менее 1 GB памяти.
  14. Request work units without deadlines – принимать задания без конечной даты отправки результата. Этот пункт был актуален до 2007 г., сейчас такие задания просто не выдаются.
  15. Set -advmethods flag always, requesting new advanced scientific cores and/or work units if available – принимать новые исследовательские ядра и задания, если они доступны. Рекомендуется ответить «Yes» при желании улучшить статистику за счет экспериментальных заданий.
  16. Ignore any deadline information (mainly useful if system clock frequently has errors) – при ответе «Yes» работа над заданием будет продолжаться даже после назначенной для него конечной даты. Имеет смысл только когда таймер компьютера сбился или переводился. Стоит учесть, что если задание действительно просроченное, то за него не будут начислены очки.
  17. Maсhine ID (1–8) (может принимать значения от 1 до 8). Актуально для многопроцессорных станций и двухъядерных процессоров. Каждый клиент, работающий на одном и том же компьютере, должен иметь разные Maсhine ID. Чтобы запустить несколько клиентов на одной машине, их следует поместить в разные папки (например, C:Program FilesFAH1 и c:Program FilesFAH2) и указать разные Maсhine ID, сконфигурировав каждый клиент отдельно. Для изменения Machine ID в ярлыке запуска клиента стоит добавить ключ -config. Список других настроек доступен по адресу folding.stanford.edu/FAQ-settings.html.

«Разом нас багато!»: команда 2164 – Ukraine

Кроме научной ценности Folding@Home, существует еще и «спортивный» интерес для участников данного проекта: за каждое обработанное задание начисляются очки (см. сайты folding.stanford.edu/stats.html и folding.extremeoverclocking.com). Соответственно, чем выше суммарный балл – тем выше место в команде и в проекте в целом. Украинцы присоединились к Folding@Home в 2002 году, а сейчас команда Ukraine (2164) насчитывает полтысячи пользователей, принявших участие в проекте за четыре года, и входит в тридцатку сильнейших по вычислительной мощности среди 2000 команд, по которым ведется статистика.

Если говорить о текущем положении команды Ukraine (2164) в мировой вычислительной табели о рангах, в последние месяцы мы стремительно прогрессируем: войдя в сотню команд по общему количеству заработанных баллов (за всю историю Folding@Home), мы продолжаем уверенно двигаться вперед и сейчас приближаемся к 70-му месту. По среднесуточной производительности уже остались позади команды Польши, Латвии, Литвы, Дании, Норвегии, Греции, Китая, Малайзии, Бразилии, Китая, компаний MSI, AMD, ATI, разработчиков Google, Firefox, Mozilla, Futuremark, Web-сайтов Sharky Extreme, Toms Hardware, XtremeSystems.org, Macrumors.com и многие другие. Впереди – Россия, Португалия, Голландия, ну а на недосягаемой высоте – австралийцы, если говорить о национальных командах. Впрочем, почему недосягаемой? Все возможно, ежели поднапрячься: у самых успешных команд порядка 1000 активных участников, в то время как в нашей таких пока чуть более 150. Учитывая то, что «Домашний ПК» читают свыше 100 тыс. украинцев, можно только представить, как много вычислительных ресурсов у нас остаются незадействованными. Кстати, самый простой способ увеличить результативность – подключить максимум компьютеров – свой домашний, рабочий, ПК друзей. Конечно, можно это сделать и незаметно для пользователей (администраторы сетей поймут, о чем речь), но злоупотреблять служебным положением мы не рекомендуем даже на благо человечества и ради укрепления престижа родной державы.

Помимо альтруизма и патриотизма, есть и другой мотив для участия в Folding@Home: пользователи соревнуются в PPD (количество баллов в сутки), полученных с одной машины. Это очень похоже на состязания в разного рода 3DMark’ах, и «Домашнему ПК» не чужд азарт: редактору хардверного раздела Максиму Потапову удалось установить рекорд – впервые на просторах СНГ преодолеть барьер в 3000 PPD с одной машины на случайно выбранных заданиях. Для этого потребовалось немного разогнать редакционную тестовую систему на базе четырехъядерного Intel Core 2 Extreme QX6700 с видеокартой Sapphire Radeon X1950 XTX и дождаться благоприятного стечения обстоятельств – получения заданий, которые бы быстро просчитывались и щедро вознаграждались. И мы не собираемся останавливаться на достигнутом – вскоре будет добавлена «фреоновая» система охлаждения, и мы, по-видимому, снова обойдем россиян.

Поделиться о своих достижениях на поприще научных вычислений и познакомиться с участниками «национальной сборной» можно на форуме www.distributed.org.ua. Там же опытные «кранчеры» ответят на любые вопросы, касающиеся Folding@Home и других проектов распределенных вычислений.

Программные ядра Folding@Home и процессорные архитектуры

Несмотря на схожесть вычислительных алгоритмов, время расчетов может существенно отличаться как для разнообразных программных ядер, так и для разных процессоров. В связи с этим нельзя говорить, что какая-то одна архитектура (Pentium 4/Netburst, Pentium M/Core или Athlon XP/64) является наилучшей для Folding@Home в целом – все зависит от конкретного задания. Впрочем, с появлением Core 2 большинство заданий быстрее всего выполняются именно на таких процессорах.

Эффективность выполнения заданий выражается прежде всего в результативности с точки зрения самого проекта – т. е. быстрый просчет отдельных заданий позволяет в кратчайшие сроки построить общую модель сворачивания белка. Кроме того, участники зарабатывают очки для себя и своей команды, однако эти две цели (научная и спортивная) могут конфликтовать: например, при одновременном запуске двух задач на одноядерном процессоре с технологией HyperThreading на 10–30% возрастает показатель PPD (Points Per Day). Но для всего проекта это означает снижение производительности, так как задания вернутся с бoльшей задержкой. С другой стороны, участники, которые выполняют задачи с повышенными требованиями к оперативной памяти и сетевому трафику, получают бонусные баллы.

Влияние кэш-памяти

Размер кэш-памяти не оказывает существенного влияния на скорость выполнения заданий. Так, различие между процессорами Athlon (XP или 64) и аналогичными Sempron с урезанным кэшем не превышает 1–2%. Единственным исключением являются большие задания, которые занимают 100–200 MB в памяти. Не в последнюю очередь именно благодаря своему емкому кэшу в этих задачах весьма хорошо себя зарекомендовали процессоры Pentium M/Core/Core 2. Архитектура Athlon 64 также позволяет быстро справиться с такими заданиями вследствие очень низкой латентности доступу к памяти.

Влияние потоковых оптимизаций

Ядро Gromacs поддерживает оптимизации 3DNow!, SSE, а DGromacs – еще и SSE2, потому процессоры с реализацией этих технологий показывают довольно высокую производительность в Folding@Home. Поскольку эталонная конфигурация, по которой назначаются баллы для заданий, не использует SSE2, то аналогичная машина с SSE2 дает почти двукратный прирост быстродействия.

Многоядерность

Большинство владельцев многопроцессорных или многоядерных машин одновременно запускают несколько копий консольного клиента, которые работают независимо друг от друга (по одному клиенту на ядро, используя разные директории).

Запуск N клиентов Folding@Home не обязательно приводит к N-кратному приросту производительности. Так, на двухъядерном Core Duo T2300@1660 MHz с 1 GB памяти DDR2 533 MHz один клиент способен выдавать до 563 баллов в день на заданиях серии 1495 (очень большие, сверх 100 MB в оперативной памяти), тогда как два таких клиента дают до 686 баллов. Для заданий малого калибра, например 2124 (около 4 MB), прирост практически 100% – со 102 до 202 PPD.

Строительство белков: как это работает?

Основной целью проекта Folding@Home является моделирование фолдинга – процесса сворачивания белка в трехмерную пространственную структуру. Вспомним школьный курс биологии: все начинается с рибосом – клеточных фабрик по сборке длинных молекул белков из аминокислот в соответствии с «программой», считываемой из ДНК. Для того чтобы такая протеиновая «заготовка» стала функциональным белком, должен произойти процесс сворачивания молекулы в определенную пространственную форму (конформацию).

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

Научный коллектив Folding@Home постоянно совершенствует методы моделирования фолдинга и благодаря вычислительным ресурсам участников проекта занимается непосредственным изучением закономерностей сворачивания белков человеческого организма. Особое внимание уделяется выявлению причин нарушений этого процесса, вызывающих многие тяжелые заболевания. Данные исследования являются фундаментом для разработки новых лекарств и способов лечения многих форм рака, болезней Альцгеймера и Паркинсона, склероза, диабета и др.

Проекту удалось достичь определенных успехов, замеченных и по достоинству оцененных мировым научным сообществом. Успешно завершены эксперименты по изучению влияния молекул воды на сворачиваемость белков. Получены практические результаты в исследовании гена р53, мутации которого вызывают около половины всех известных раковых заболеваний. На счету проекта десятки публикаций в ведущих специализированных журналах (Science, Chemical Physics, Biophysical Journal, Computational Chemistry и др.). Виджай Панде, руководитель проекта, отмечен в 2006 г. престижной наградой Ирвинга Сигала от Protein Society.

Перед проектом Folding@Home стоит еще одна важная задача – разработка усовершенствованных аналогов естественных белков, а также принципиально новых структур – так называемых искусственных «самосборных» протеинов с запрограммированной функциональностью. Появление подобных «протеиновых роботов» приведет к настоящей революции в медицине. Первый шаг в этом направлении сделан проектом в содружестве с Медицинским институтом Ховарда Хьюза при университете Вашингтона, где впервые в истории получен полностью искусственный белок Top7. Вначале была разработана компьютерная модель Top7, просчитанная участниками Folding@Home, которая затем успешно воплотилась в синтетический протеин в лабораторных условиях.

В 2006 г. команда Folding@Home начала изучать сворачиваемость протеинов и пептидов в ограниченном пространстве. Было опубликовано несколько научных статей, и первая из них была посвящена моделированию поведения пептидов в нанотрубках. Исследователи пришли к неожиданному результату: вода, заключенная в ограниченном пространстве, ведет себя иначе, чем ожидалось, и изменяет естественные свойства протеинов. Подробнее об этом и других результатах проекта Folding@Home – на сайте folding.stanford.edu/results.html