Folding@Home і навіщо воно мені

Інформація для тих, хто хоче приєднатись


Автор статті: Роман Ковбасюк aka romko (авторські права cc-by-2.5)


   Запрошую всіх небайдужих до розвитку науки і боротьби зі смертельними хворобами приєднуватися до проекту розподілених обчислень, що проводиться під егідою Стенфордського університету і носить назву Folding@home. Суть проекту полягає в моделюванні згортання білків з метою виявлення можливих проблем згортання, які призводять до хвороб Альцгеймера, Паркінсона, діабету типу II, коров'ячого сказу, склерозу і деяких типів раку. Поглиблене розуміння цих процесів допоможе з'ясувати точну картину виникнення захворювання і розробити методи продидії.
   Подібно до інших відомих проектів (SETI@Home, distributed.net, Finad-a-Drug), в Folding@Home приймають участь сотні тисяч власників персональних комп'ютерів, на яких виконуються невеличкі порції-завдання. Обчислення проводяться в фоновому режимі з мінімальним приоритетом, тому не заважають нормальній роботі з комп'ютером. Інтернет потрібен лише для отримання завдань і відправки результатів в автоматичному режимі без участі користувача. Типові завдання мають розмір порядка 100 КБ, а результати - до 1 МБ на один білок, при тому, що на обрахування одного білка в Folding@Home йде від 2 до 10 робочих днів. Вимоги до ПК - Duron/Celeron або вище, 10-20 МБ пам'яті для роботи.
   Ведеться статистика для кожного учасника. Учасники можуть об'єднуватися в команди за країнами, містами чи спільними уподобаннями. Команда України зараз (15.10.2005 13:00) посідає 543 місце з 40500: офіційна статистика або розширена статистика. Це не дуже престижне місце для країни, де сотні тисяч гігагерцових процесорів ганяє порожні цикли в офісах чи приватних помешканнях. :(
   Тому ласкаво прошу на http://folding.stanford.edu/, викачуйте клієнтське програмне забезпечення, читайте інструкції тут або на сайті проекту і записуйтесь в команду 2164. Зробіть свій посильний внесок в подолання хвороб! Якщо є якісь питання, можете їх задавати і консультуватись з учасниками команди України в цьому форумі.

   Навіщо задіювати сотні тисяч комп'ютерів, якщо пожна скористатись одним суперкомп'ютером і досягнути потрібного результату значно швидше?
   Відповідь:
   Сучасні суперкомп'ютери складаються з сотень або тисяч процесорів, іноді ця кількість сягає 10000 процесорів (які окремо взяті часто повільніші від сучасних десктопних процесорів), поєднаних швидкісними з'єднаннями. Саме ці з'єднання роблять суперкомп'ютер єдиним комп'ютером, а не кластером з окремих комп'ютерів, і є чи не найдорожчими його компонентами.
   Так от, специфіка обчислювальних алгоритмів, які використовуються Folding@Home в тому, що швидкісні з'єднання між процесорами не потрібні, а потрібна максимізація швидкості кожного процесора. Тому навіть якби в розпорядженні проекту був суперкомп'ютер з 1000 процесорів, то він би видавав результати не швидше, ніж 1000 окремих комп'ютерів з такими ж процесорами.
   Але для отримання вагомих результатів в Folding@Home потрібні не тисячі процесорів, а сотні тисяч. Тому розразунки, які проводять учасники проекту, неможливі будь-якими іншими засобами на даному етапі розвитку обчислювальної техніки, і ще довго не будуть можливі.
   Для довідки, станом на 15.10.2005 активними є 182206 процесорів: http://vspx27.stanford.edu/cgi-bin/main.py?qtype=osstats. Це робить кластер, який формують учасники проекту, одним з найбільших в світі, здатним виконувати приблизно 175 ТераФлопс.

   Де можна дізнатись про результати роботи проекту і кому вони належать?
   Відповідь:
   На відміну від інших проектів розподілених обчислень, Folding@Home працює під егідою академічного установи, Pande Group, яка входить до кафедри хімії Стенфордського університету. Pande Group є неприбутковою організацією, яка не продає дані, отримані в результаті обчислень, здійснюваних в рамках даного проекту, і не отримує за них гроші в якийсь інший спосіб.
   Ці дані робляться доступними для інших дослідників на сайті проекту по мірі завершення обрахунку окремих симуляцій згортання білків. Аналіз симуляцій членами Pande Group публікується в наукових журналах і також робиться доступним на сайті проекту.

   Що вже зроблено, які досягнення Folding@Home?
   Відповідь:
   Завершено симуляції процесу згортання кількох білків тривалістю 5-10 мікросекунд. Ці результати підтверджено лабораторними дослідами. Наукові праці, які докладно представляють результати, можна подивитись: http://folding.stanford.edu/papers.html. Багато з цих статей пройшли розгляд іншими науковцями і були опубліковані в провідних наукових журналах (Science, Nature, Nature Structural Biology). Кількість таких статей на даний момент перевищує кількість публікацій за результатами всіх інших проектів розподілених обчислень разом взятих.

   Вимоги до комп'ютера для участі в Folding@Home
   Будь-який персональний комп'ютер підходить для участі в проекті, але якщо він випущений більш, ніж 3-4 роки тому і його процесор має частоту менше 1 ГГц, то є імовірність, що він не встигатиме повертати завдання до встановленого крайнього терміну. В такому випадку можна налаштувати клієнтську програму приймати лише завдання, які не мають визначеного кінцевого терміну.
   Таким чином, підходить будь-який процесор Pentium, Athlon, Duron, Sempron, Celeron, Power PC. Клієнтські програми існують для Windows, Linux, Mac OS. Також можуть приймати участь комп'ютери з FreeBSD або OpenBSD.
   При роботі програма використовує типово 10-20 МБ пам'яті, в залежності від розміру білкової молекули і складності розрахунків. Є завдання, які потребують значно більше пам'яті, але їх отримують лише ті учасники, які спеціально цього захотіли.
   При роботі клієнтської програми використовуються 100% ресурсів процесора, але оскільки пріоритет даного процесу є найнижчим можливим, то на нормальній роботі з комп'ютером це не позначається, і ніякого уповільнення реакції на натиснення клавіш чи чогось подібного не спостерігається. Проте можна і зменшити навантаження на процесор до іншого відсотку (задається в конфігурації), якщо, наприклад, процесор перегрівається або працює нестабільно з таким навантаженням.
   Взагалі, машини, які працюють нестабільно при повному завантаженні процесора (причинами можуть бути надмірний розгон або неякісні компоненти, передусім пам'ять) краще до проекту не підключати, поки не будуть виправлені всі несправності і не буде доведена здатнсть роботи при повному навантаженні.
   Ще однією обов'язковою умовою участі в проекті є використання комп'ютерів, які належать особисто Вам, або Ви маєте згоду власника на запуск програм Folding@Home на них. Це оговорено в ліцензійній угоді на програми Folding@Home. А так ці програми є безкоштовними, більше того, компоненти, які виконують безпосередні розрахунки, базуються на відкритому коді.

   Компонети клієнтського програмного забезпечення Folding@Home
   Клієнт Folding@Home може бути реалізований у вигляді консольної програми (Windows, Linux, Mac OS X), графічного клієнта (Windows, Mac OS X) або скрінсейвера (Windows, Mac OS X). Завантажити їх можна тут: http://folding.stanford.edu/download.html.
   Графічний клієнт може згортатись в трей, і при автоматичному старті він запускається у згорнутому стані. Графічний клієнт і скрінсейвер при роботі показують тривимірну динамічну модель молекули білка, який обраховується. Для відображення використовується OpenGL-ядро, і на це витрачається 3-5% ресурсів процесора.
   Консольний клієнт при роботі у Windows займає місце на панелі задач і не може бути згорнутим в трей. Під Windows 2000/XP консольний клієнт може запускатись як сервіс, щоб не займати місце в треї чи панелі задач і не залежати від авторизації користувача (запускається при старті системи). Якщо комп'ютер має кілька процесорів, або його єдиний процесор має кілька ядер, то можна запустити кілька консольних клієнтів для одночасного виконання кількох завдань. При цьому вони повинні бути встановлені в різні папки.
   Всі клієнти є невеликими програмами (розмір інсталяції 300-500 КБ). Різниця між ними лежить лише в способі запуску і показу результатів. Отримання завдань і відправка результатів здійснюються ними однаково, а для виконання розрахункових завдань використовуються ядра. При отриманні завдання клієнт перевіряє, чи є в його каталозі потрібне для обрахунків цього завдання ядро, і якщо воно відсутнє або застаріле, то здійснюється завантаження з сервера. Ядра, як і завдання, передаються в стисненому вигляді, і розмір завантаження складає порядка 500-700 КБ. Цілісність завантажених даних підтверджується цифровим підписом.
   В один каталог можна встановити і графічний, і консольний клієнт, і довільно переключатись між ними без втрати проміжних результатів обрахунку завдання. При цьому повинні виконуватись дві умови: версії клієнтів повинні бути сумісні (один клієнт не повинен бути набагато старший від іншого) і клієнти повинні запускатись по одному.

   Типи завдань
   На даний момент завдання в проекті бувають 4 основних типів. Взнати тип завдання можна або за назвою ядра, яка показується у вікні клієнта, або в журналі його роботи, або за номером проекту на сторінці проектів: http://vspx27.stanford.edu/psummary.html. Там вказано розмір завдання в атомах, кількість днів на виконання (бажана і крайня), кількість балів, які будуть нараховані за виконання. З цієї ж сторінки можна перейти до детального опису проекту, де вказано, згортання якого білка досліджується і з якою метою.
Отже, типи завдань і ядер:

   На даний момент завдання, що виконуються ядром QMD, є найвигіднішими з точки зору кількості очок, які за них нараховуються. Машина, яка постійно обраховує QMD-блоки, здатна принести своєму господарю понад 400 очок в день. Такий стан обумовлений тим, що такі блоки потребують значних обчислювальних ресурсів, передусім швидкої пам'яті, і є експериментальними (протягом принаймні 2005 р.). Учасники, які їх добровільно отримують і обробляють, мають, за задумом Pande Group, бути додатково винагороджені. Тому половина очок, нарахованих за кожен обрахований QMD-блок, є бонусними.
(*) Для отримання QMD-блоків потрібно виконати наступні умови:


   Конфігурація клієнта
   Після встановлення клієнта на комп'ютер з допомогою програми інсталяції рекомендується відразу налаштувати його конфігурацію.
   Можна це робити в діалоговому вікні графічного клієнта, можна запустити консольний клієнт з параметром "-config" в командному рядку і ввести відповіді на запити, можна відредагувати файл конфігурації "client.cfg" з допомогою текстового редактора. Останнє можна робити і під час роботи клієнта, тільки треба пам'ятати, що зміни вступлять в силу після перезапуску клієнта.
   Можна комбінувати ці підходи: запустити графічний клієнт, зробити всі потрібні налаштування, натиснути ОК, дочекатись отримання ядра і успішного старту розрахунків. Потім завершити роботу графічного клієнта, запустити консольний, і надалі користуватись ним, вносячи при потребі зміни в конфігурацію ручною правкою файлу "client.cfg". Вручну можна змінювати будь-які параметри, окрім "proxy_passwd", який зберігається в закодованому вигляді, і може бути записаний тільки самою клієнтською програмою.
   Якщо запустити консольний клієнт на комп'ютері, де ніколи не використовувались програми Folding@Home і відсутні файли завдань і конфігурації, то він відразу запуститься в режимі конфігурування, після чого файл конфігурації буде створено і заповнено введеними значеннями.
   Крім файлу конфігурації, Windows-клієнти Folding@Home зберігають деякі параметри в реєстрі. Єдиним значимим з них є "UserID" - унікальний ідентифікатор комп'ютера в проекті, за яким визначається, з якою машиною виконано завдання, і рахується, скільки машин використовує користувач.

   Параметри конфігурації клієнта

   Загальні установки (секція http).

   Установки ядра (секція core).

   Тип клієнта (секція clienttype).


   Контрольні точки, вибір оптимального інтервалу
   Контрольні точки - це моменти в обрахунку завдання, коли відбувається збереження проміжних результатів на диск. Якщо після цього відбувається збій живлення, чи зупиняється клієнт, то при його повторному запуску розрахунок буде продовжений саме з контрольної точки. Контрольні точки бувають природні і примусові. Природні контрольні точки встановлюються авторами проекту в самому завданні, і збереження стану приїх досягненні відбувається автоматично. Більшість завдань умовно містять 100 або 400 фреймів, деякі завдання мають іншу кількість фреймів. Кількість фреймів і визначає кількість автоматичних проміжних збережень результатів. Кількість фреймів однакова для всіх завдань в межах одного проекту; її можна дізнатись на сторінці проектів.
   Деякі завдання є дуже великими, або комп'ютер є дуже повільним. Тому інтервали між фреймами є великими, і збій в роботі комп'ютера призводить до втрати значної кількості часу. Щоб зменшити потенційні втрати в таких ситуаціях, клієнт Folding@Home може здійснювати запис проміжних результатів в примусових контрольних точках, які трапляються кожних N хвилин, незалежно від прогресу поточного фрейма. Більшість сучасних розрахункових ядер Folding@Home (крім Tinker'а) підтримують запис в примусових контрольних точках.
   Інтервал між контрольними точками встановлюється в конфігурації клієнта. Вибір оптимального значення інтервалу залежить від конфігурації комп'ютера і імовірності його зависання або раптового перезавантаження. На середніх за швидкодією (Sempron, Celeron, старіші Athlon i Pentium) краще встановити 5-10 хв., на повільних і швидких - ліпшим був би більшй час, 15-20 хв. Повільні і швидкі машини не даремно згруповані - і на тих, і на тих короткі контрольні інтервали є недоцільними, хоч і з різних причин. На повільних - тому що сам процес зберігання займає багато часу. На швидких - тому що природні контрольні точки (границі фреймів) і так трапляються досить часто, тому і потреба в примусових контрольних точках виникатиме тільки при обрахунку найбільш важких завдань.

   Як клієнт відноситься до частих перезапусків?
   Відповідь:
   Дивлячись що мається на увазі під "частими" перезапусками. Раз на годину - це часто, 2 рази на добу - ні.
   Я б не рекомендував часто перезапускати без потреби. Взагалі нічого страшного статись не повинно, але раз чи два за рік я втрачав наполовину розраховані завдання коли зупиняв клієнт відразу після запуску розрахункової фази. Та й не всі типи завдань можуть записуватись в довільних точках, тому при перезапуску може втрачатись робота за останні кілька хвилин, які минули з початку поточного фрейма (для Tinker-завдань) або останньої контрольної точки.
   Саме значна втрата часу при частих перезапусках є причиною низької популярності клієнта-скрінсейвера серед серйозних фолдерів.

   Чому мені знову видано завдання, яке я вже обрахував?
   Відповідь:
   Таке питання часто задається новачками, комп'ютер яких щойно обрахував завдання pNNN, і знову почав обрахунок завдання pNNN. Такі ситуації цілком можливі, але вони не означають, що повторно рахується те саме завдання. Насправді, це різні завдання одного проекту, оскільки pNNN означає лишн номер проекту, який в свою чергу може містити тисячі або десятки тисяч блоків-завдань. Щоб переконатись в тому, що це справді інше завдання, треба подивитись до протоколу (в файлі "FAHlog.txt") і звернути увагу на числа на зразок (Run 33, Clone 82, Gen 3) після "Project: NNN" в одному з рядків, що відповідають фазі початку розрахунків. Номери після "Run", "Clone", "Gen" будуть різними в кожному випадку.
   Існують різні погляди на те, що саме означають ці "Run", "Clone" і "Gen". Але як заявив професор Панде в дописі на форумі проекту, значення цих параметрів може відрізнятись в залежності від проекту і типу розрахунків. Але в найбільш узагальненому вигляді можна вважати, що в межах одного проекту виконується кілька симуляцій згортання білків, і ці симуляції ієрархічно пов'язані одна з одною. Для одного "Run" (прогон) всі атоми симуляції мають однакові початкові координати, і в окремих "Clone" відрізняються лише швидкостями. "Gen" (покоління) відповідає різним відрізкам часу симуляції і тому, щоб перейти до наступного значення "Gen" для певного "Run" проект має завершити обрахунки всіх його клонів. Типово, одне покоління завдань симуляції відповідає 100-400 пікосекунд.

   За яким принципом нараховуються очки за виконані завдання?
   Відповідь:
   Кожен проект має визначену кількість очок, які нараховуються учасникам за успішне виконання його завдань. Кількість очок залежить від часу, який витрачається на обрахунки еталонною машиною. Еталонна машина має процесор Pentium 4 2.8ГГц з вимкненими SSE2, і виконує лише консольний Linux-клієнт Folding@Home. Після визначення часу виконання завдання, кількість очок, яка буде нараховуватись за нього, обчислюється за формулою:
   points = 110 * (daysPerWU), де daysPerWU - кількість днів, що зайняли обрахунки.
   Час, який йде на розрахунки на інших конфігураціях, може відрізнятись в тут чи іншу сторону, але для однієї і тієї ж конфігурації за тих самих умов виконання час розрахунку всіх завдань одного проекту є однаковим. Цим Folding@Home відрізняється від деяких інших проектів розподілених обчислень, де однотипні завдання можуть мати різний час розрахунку в залежності від досягнення певних умов. В зв'язку з цим, учасники проекту для порівнянні швидкодії своїх комп'ютерів використовують кількість очок за день (ppd) або за годину (pph), які заробляє їх комп'ютер в певному проекті. Як випливає з описання типів завдань і ядер, один і той же комп'ютер може давати суттєво відмінний виход очок за одиницю часу, в залежності від типу завдань.
   Крім очок, які нараховуються за витрачений час, деякі проекти мають ще так звані "бонусні" очки. Вони призначаються тим проектам, завдання в яких є експериментальними або вимагають дуже багато ресурсів, порівняно з нормальними завданнями, і тому висувають жорсткіші вимоги до конфігурації. За задумом авторів проекту, бонусні очки є винагородою тим учасникам, які підключають до проекту досконаліші комп'ютери, витрачаються на придбання додаткової пам'яті. Станом на листопад 2005, додаткові очки даються за завдання, виконувані ядром QMD і великі Gromacs-завдання, які видаються учасникам, які встановили в конфігурації опцію "Отримувати великі завдання".
   На сторінці проектів вказано, скільки очок дається за завдання певного проекту. Бонусні очки окремо не відзначені, показується лише загальна кількість.
   За неповністю обраховані завдання нараховується лише частина очок, яка пропорційно відповідає виконаній частині завдання. Такі завдання потім можуть призначатись для повторних обрахунків іншим учасникам проекту.

   Як зробити, щоб результати з кількох комп'ютерів зараховувались на одне ім'я?
   Відповідь:
   Достатньо вказати в конфігурації всіх комп'ютерів одне і те ж ім'я користувача (username), наприклад, "romko". Все. Ніяких додаткових установок. Чесно :) Треба лише мати на увазі, що імена є чутливими до регістру, і тому "Romko" і "romko" - це різні імена.
   Один і той самий користувач може бути членом кількох команд одночасно, якщо він підключив до проекту кілька комп'ютерів. Для цього достатньо вказати різні номери команд в конфігурації його різних комп'ютерів.