Folding@home

Folding@home (FAH või F@H) on vabatahtlikkusel põhinev hajusarvutuse projekt, mis loodi molekulaardünaamika uuringuteks ja mille eesmärk on aidata teadlastel välja töötada uusi vahendeid haiguste raviks. See kasutab projektiga liitunud personaalarvutite keskprotsessorite ja graafikaprotsessorite arvutusvõimsust, kui arvutid neid parajasti ise ei vaja. Isiklikel arvutusseadmetel simuleeritakse, vabatahtlike abiga, valkude dünaamikat. 
Klient-server arhitektuuril põhinevas võrgus jagatakse vabatahtlike seadmetele simulatsiooni osake ("work unit"), teostatakse arvutused ja tagastatakse projekti andmebaasi serveritele, kus klientidelt saadetud osakestest koostatakse üleüldine simulatsioon. Vabatahtlikud saavad oma panust jälgida Folding@home kodulehelt. See tekitab võistlusmomendi ja julgustab järjepidevat panustamist. 
Algne eesmärk oli uurida valkude voltumist, kuid hiljem on keskendutud rohkem biomeditsiinialastele küsimustele (sh seoses Alzheimeri tõve, vähktõve, koroona ja Ebola viirushaigusega). 
Projekti käivitas 2000. aasta oktoobris Stanfordi ülikooli professor Vijay S. Pande ja 2020. aastatel juhib seda Dr. Greg Bowman Saint Louise Washingtoni ülikooli meditsiinikoolis.
Folding@home on üks maailma kiiremaid arvutisüsteeme. Seoses koroonapandeemiaga kaasnenud suurenenud huviga projekti vastu saavutati 2020. aasta märtsi lõpus kiiruseks umbes 1,22 eksaFLOP-i (ujukomatehteid iga sekundi kohta) ja 2,43 x86 eksaFLOP-i 12. aprilliks 2020. See tegi projektist esimese exaFLOP arvutussüsteemi. Sellega ületab projekt kaugelt ka kõige võimsamaid superarvuteid. Sellisest suuremahulisest süsteemist tulenev jõudlus on võimaldanud teadlastel simuleerida keerukaid aatomi tasemel valgu voltimise simulatsioone tuhandeid kordi kauem kui ükski teine süsteem on seda varem suutnud.
Alates projekti käivitamisest 1. oktoobril 2000 on Pande Lab välja andnud 224 teaduslikku uurimust otsese Folding@home tulemusena. Projekti simulatsioonidest pärit tulemused kattuvad ka päris maailmas läbi viidud eksperimentidega.
Tarkvara.
Folding@home tarkvara koosneb kasutaja poolel kolmest peamisest komponendist: tööüksused (work units), tuumad (cores) ja klient (client).
Tööüksused.
Tööüksus on valgu informatsioon, mida kliendil palutakse töödelda. Tööüksused moodustavad murdosa kogu simulatsioonist. Kui klient on vabatahtliku arvutisse alla laaditud ja täielikult töödeldud, siis saadetakse see tagasi Folding@home serveritesse, mis omakorda jagab tööüksuse esitanud kasutajale tehtud töö eest punkte. See tsükkel taaskäivitub automaatselt. Kõikide tööüksustega on seostatud tähtaeg. Kui enne tähtaja lõppu ei ole tööüksust lõpetatud, siis ei saa kasutaja selle eest punkte ja töö määratakse automaatselt järgmisele kasutajale. Kuna valkude voltimine toimub jadamisi ja paljud tööüksused genereeritakse eelnevatest üksustest, siis võimaldab tähtaja seadmine simulatsiooni lõpule viimisega tavapäraselt jätkata kui mõni klient tööd mõistliku aja jooksul ei esita. Tähtaegade seadmiseks on kehtestatud minimaalsed nõuded süsteemidele, millega tööüksusi töödeldakse. Projektis osalemiseks peab süsteemil olema protsessor, mis on võrdeline või parem kui Intel P4 1,4 GHz CPU ja graafikakaart, mis toetab OpenCL keelt. Suurema jõudlusega klientidele jagatakse tööüksusi, millel on palju lühem tähtaeg, sest suur osa teaduslikust kasutegurist sõltub kiirest simulatsioonide ärategemisest.
Enne seda kui tööüksused vabatahtlikele töötlemiseks avalikustatakse, siis läbivad need mitu kvaliteedi tagamise süsteemi, vältimaks probleemsete tööüksuste ringlusse sattumist. Iga üksus läbi vähemalt sisemise, beeta- ja täiustatud kvaliteedikontrolli enne, kui tarkvara avalikustatakse Folding@home serverites. Tööüksusi töödeldakse reeglina üks kord, välja arvatud juhul kui töötlemise või kontrolli käigus avaldub mõni viga. Kui tööüksusel avaldub viga juba kolme kliendi süsteemis, siis eemaldatakse konkreetne üksus jaotusest. 
Tuumad.
Spetsialiseeritud molekulaardünaamika programmid (ingl FahCores), sooritavad tööüksuse töötlemiseks vajalikke arvutusi taustprotsessina. Suurem enamus Folding@home tuumasid, ehk programme põhineb GROMACS paketil. GPU GROMACS on üks kiiremaid ja populaarsemaid molekulaardünaamika tarkvarapakette, mis koosneb manuaalselt optimeeritud assemblerkeeles koodist ja riistvaralistest optimeerimistest. Kuigi GROMACS on avatud lähtekoodiga tarkvara ja Pande Lab ning GROMACS arendajad teevad koostööd, sis Folding@home kasutab firmaomast lähtekoodi litsentsi, et aidata tagada andmete õigsust. Vähem aktiivsed tuumad on ProtoMol ja SHARPEN. Kasutatud on ka AMBER, CPMD, Desmond ja TINKER, aga need ei ole enam aktiivses kasutuses. Mõned tuumad kalkuleerivad lahusti (üldjuhul vesi) modelleerimist aatomi haaval, teised tuumad kohtlevad lahustit kui matemaatilist kontinuumit. Tuum on kliendist eraldatud, et võimaldada teaduslike meetodite automaatset uuendamist, klienti uuendamata. Tuumad loovad perioodiliselt arvutuslikke kontrollpunkte, kust hiljem tööd jätkata juhul, kui arvutused katkestatakse.
Klientrakendus.
Folding@home'i projektis osalemiseks installib vabatahtlik klientprogrammi oma arvutisse. Kasutaja haldab programmis sätteid kliendi kaudu, mis haldab teisi tarkvara taust-komponente. Kliendi kaudu saab peatada ja käivitada voltimise protsessi, avada sündmuste logi, kontrollida tööüksuse progressi või vaadata isiklikku statistikat. Kliendiprogramm töötab järjepidevalt väga madala prioriteetsusega taustaprogrammina, kasutades väga minimaalselt arvuti jõudlust, et mitte häirida tavapärast arvuti kasutamist. Maksimaalset CPU kasutust saab samuti kliendi seadete kaudu muuta. Klient loob ühenduse Folding@home serveriga ja laadib alla tööüksuse ning vajalikud tuumteenused, mis ühtivad kliendi seadete, operatsioonisüsteemi ja riistvara konfiguratsiooniga. Peale tööüksuse protsessimist tagastatakse see Folding@home serveritesse. Vabatahtlike riistvarakonfiguratsioonide erinevus võimaldab rakendada igale konfiguratsioonile sobiva tööülesande.
Folding@home serveri ja kliendi poolne tarkvara on arendatud Nvidia, ATI, Sony ja Cauldron Development programmeerijate abiga. Kliendiprogrammi saab alla laadida ainult ametlikelt Folding@home või selle kommertspartnerite veebilehtedelt ja liidestub ainult Folding@home'i failidega. Andmete alla- ja üleslaadimine serveritesse toimub pordi 8080 kaudu, alternatiivselt pordi 80 kaudu, ja kommunikatsioon verifitseeritakse 2048-bitise digitaalallkirjaga. Kuigi graafiline kasutajaliides (GUI) on avatud lähtekoodiga, siis klienditarkvara ise on firmaomase lähtekoodiga teadusliku tõepärasuse säilitamiseks ja turvakaalutlustel.
Folding@home kasutab võrgustamiseks Cosm tarkvara teeke.. Projekt käivitati 1. oktoober 2000 ja oli esimene omataoline hajusarvutuste projekt, mille eesmärgiks olid bio-molekulaarsed süsteemid. Esimene klient oli ekraanisäästja, mis kasutas arvuti riistvara hajusarvutusteks ainult siis, kui arvutit muul viisil ei kasutatud.
Graafikaprotsessorid.
Graafikaprotsessorite (GPU) spetsialiseeritud riistvara on disainitud kiirendama 3D-graafiliste programmide ja mängude jõudlust ja teostavad seda märgatavalt paremini kui protsessorid teatud tüüpi arvutuste puhul. GPU-d on ühed kõige suurema jõudlusega ja kiiremini arenevad arvutusplatvormid ja paljud teadlased püüdlevad graafikaprotsessoritel teostatavate üldotstarbeliste arvutuste (GPGPU) ära kasutamise poole. Graafikaprotsessorite riistvara on keeruline kasutada mittegraafiliste arvutuste jaoks ja vajab märgatavaid algoritmide reformuleerimisi ning edasijõudnud arusaama kaasnevast riistvara arhitektuurist. Sellist eritellimusel valmistatavat tarkvara on keeruline luua, eriti piiratud tarkvaraarendusvahenditega teadlastel. Golding@home kasutab avatud lähtekoodiga OpenMM teeki, mis võimaldab riistvara optimeerimisel simuleerida graafikaprotsessori jõudluse abil peaaegu sama jõudsalt kui käsitsi optimeeritud graafikaprotsessoritele mõeldud kood. OpenMM-il baseeruvad simulatsioonid vajavad vähe modifitseerimist, aga võimaldavad keskprotsessoritest kordi paremaid tulemusi graafikaprotsessoritel.
Esimene graafikaprotsessoritele tuginev Folding@home klientrakendus avaldati 2. oktoobril 2006, kiirendades mõningaid arvutusi 20–30 korda võrreldes keskprotsessoripõhiste GROMACS versioonidega. See oli esimene kord, kui graafikakaarte kasutati hajusarvutusteks ja suuremahulisteks molekulaardünaamika arvutusteks. GPU1 andis teadlastele teadmisi ja kogemusi GPGPU tarkvara arendamise kohta ja vastuseks teaduslikele ebatäpsustele DirectX-iga, avaldati 10. aprillil 2008 GPU2, kliendi teine generatsioon. Võrreldes GPU1-ga oli GPU2 teaduslikult usaldusväärne ja produktiivne, toimis nii ATI ja CUDA võimekusega Nvidia graafikaprotsessoritel ja toetas edasijõudnud algoritme, suuremaid valke ja reaalajalist valgu simulatsiooni visualiseerimist. Sellele järgnes GPU3, mis avaldati 25. mai 2010. Stabiilsem, tõhusam ja teaduslike rakenduste poolest paindlikum GPU3 oli tagasiühilduv GPU2 tuumaga. GPU3 kasutas OpenMM-i OpenCL raamistikus. Kuigi GPU3 ei toetanud ametlikult Linuxi ja macOS-i operatsioonisüsteeme, siis Nvidia graafikaprotsessoritega Linuxi kasutajad olid võimelised projekti panustama kasutades programmi Wine. 
Tugi Nvidia ja AMD graafikakaartidele Linux operatsioonisüsteemiga avalikustati koos FahTuumaga 17, mis kasutab CUDA asemel OpenCL-i.
PlayStation 3.
2007. aasta märtsist 2012. aasta novembrini oli võimalik Folding@home'i projekti võimalik toetada kasutades Mängukonsooli PlayStation 3 arvutusjõudlust. PlayStationi Celli tüüpi protsessor tõi endaga 20-kordse kiiruse suurenemise mõnede arvutuste puhul. Sellist jõudlust XboX 360 ei võimaldanud. Playstationi kiirus ja efektiivsus võimaldasid Amdahli seaduse järgi arvutusi optimeerida ja muutsid märgatavalt kompromissi arvutustõhususe ja täpsuse vahel, mis võimaldas kasutada palju komplekssemaid molekulaarmudeleid märgatava lisa arvutustööta. Kõik need tegurid võimaldasid Folding@home'i projektil käivitada biomeditsiinilisi kalkulatsioone, mis muidu oleksid olnud arvutuslikult võimatud.
PlayStation 3 klientrakendus arendati koostööna Sony ja Pande Labi vahel. Esimene klientrakendus avaldati 23.03.2007, mis tegi sellest esimese hajusarvutuste projekti, mis kasutas PlayStation 3 arvutusvõimekust. 18. septembril 2008, kui avaldati rakendus Life with PlayStation, sai Folding@home PS3 klientrakendus selle osaks. Erinevalt personaalarvutite klientrakendusest võimaldas PlayStationi klientrakendus konsooli kasutada muudeks tegevusteks samal ajal kui Folding@home oli käivitatud.. PlayStationi ühetaoline riist- ja tarkvarakonfiguratsioon lihtsustas tehnilist tuge ja tegi Folding@home'i projektis osalemise kasutajasõbralikumaks. Konsoolil oli ka võimekus andmeid graafikaprotsessorile voogedastada, mida kasutati aatomi tasemel valgudünaamika visualiseerimiseks.
Novembris 2012 lõpetas Sony Folding@home PS3 klientrakenduse toe koos teiste teenustega, mis olid saadaval läbi Life with PlayStationi rakenduse. Viie aasta ja seitsme kuu jooksul panustas projekti üle 15 miljoni kasutaja kokku üle 100 miljoni tunni arvutusi, andes sellega suure panuse uurimistöösse. Pande Labi peab PlayStation 3 klientrakendust pöördepunktiks projekti ajaloos.
Mitmetuumaline klientrakendus.
Folding@home on võimeline ära kasutama modernsete arvutite mitmetuumalisi keskprotsessoreid. Mitme CPU tuuma kasutamine kiirendab lõpliku simulatsiooni valmimist mitmeid kordi. See meetod on teaduslikult väärtuslik, sest see võimaldab palju pikemaid simulatsioone ja vähendab üldkulusid, mis seostusid suurte simulatsioonide mitme kliendi vahel jaotamist.
Novembris 2006 avalikustati esimese generatsiooni SMP client SMP1, mis oli ühtlasi ka esimene hajusarvutuste projekt, mis kasutas sümmeetrilist multitöötlust. SMP1 kasutas paralleelarvutusteks MPI kommunikatsiooni protokolli, sest sellel ajal ei olnud GROMACS tuumad disainitud kasutama mitut lõime. Kuigi SMP1 klientrakendus oli edukas UNIX-ipõhistel operatsioonisüsteemidel nagu Linux ja macOS, siis Windowsi operatsioonisüsteemil esines probleeme. 24.01.2007 avaldati teise generatsiooni SMP2 avatud beetaversioon, mis asendas keeruka MPI süsteemi töökindlama lõime põhise vastu.
SMP2 klientrakendus toetas "bigadv" tööüksusi, mis vajavad süsteemilt oluliselt rohkem ressursse, kuid hüvitavad panustajaid rohkemate punktidega. Minimaalselt pidi esialgselt "bigadv" tööüksuste töötlemiseks olema süsteemil 8-tuumaline CPU kuid hiljem tõusis miinimum 16 tuumani. "Bigadv" kategooria võimaldab Folding@home'i projektil töödelda eriti keerukaid ja nõudlike simulatsioone, mis varem vajasid superarvutite klastreid ja mida ei olnud võimalik kusagil mujal Folding@home võrgus töödelda. Paljud kasutajad, kes investeerisid riistvarasse, et saavutada võimekus "bigadv" tööüksusi töödelda väljendasid pahameelt kui nende süsteemid muutusid uute nõudluste järgi vananenuks. Selle tulemusena kuulutas Pande 2014. aasta jaanuaris, et "bigadv" programm lõpeb 31. jaanuaril 2015.
V7.
V7 on seitsmes ja uusim Folding@home klienditarkvara versioon. See on täielikult ümbertöötatud ja ühtlustatud versioon varasematest Windowsi, macOS-i ja Linuxi klientrakendustest. Nagu ta eelkäijad, võimaldas V7 Folding@home'i programmi käivitada väga madala prioriteetsusega taustaprogrammina. V7 disainiti eesmärgiga teha tarkvara paigaldamine, käivitamine ja kasutamine kasutajasõbralikumaks algajatele ja pakkuda suuremat teadusliku paindlikkust teadlastele.
V7 koosneb neljas integreeritud leemendist. Kasutaja suhtleb üldjuhul programmi avatud lähtekoodiga graafilise kasutajaliidesega FAHControl (GUI), mis võimaldab järgida, konfigureerida ja kontrollida mitut voltimise klientrakendust ühest arvutist. FAHControl juhendab FAHClienti, mis omakorda haldab igat FAHSloti. Slotid asendavad varasemaid Folding@home tuumasid nagu SMP või GPU. FAHSlot suudab alla laadida, töödelda ja üles laadida kõiki võimalike tööüksusi iseseisvalt. Klientrakendusel on ka FAHViewer, mis on PlayStation 3 klientrakenduse põhjal modelleeritud 3D-vaatur, mis kuvab parasjagu töös olevat valku, kui see on käesoleva tööüksuse puhul võimalik.
Google Chrome.
2014. aastal avaldati Google Chrome'i ja Chromiumi veebibrauseritel põhinev klientrakendus, mis andis kasutajatele võimaluse panustada Folding@home'i projekti oma arvutist. See klient kasutas Google'i kohaliku kliendi (Google Native Client) võimekust Chromiumi-põhistes brauserites, saavutades peaaegu sama suuri kiirusi V7 kohaliku kliendiga võrreldes. Mitmesuguste muudatuste tõttu Folding@home'i projektis ja järkjärgulise NaCl-i kaotamisele lülitati veebiklient jäädavalt välja juunis 2019.
Android.
Juulis 2015 avaldati klientrakendus Androidi-põhistele mobiiltelefonidele Google Play poes seadmetele, mis põhinesid Android 4.4 KitKat või uuemal versioonil.
16. veebruaril 2018 eemaldati ettevõttega Sony koostöös pakutud Androidi klientrakendus Google Play poest. Avalikustati plaanid tulevikus avatud lähtekoodiga Androidi klientrakenduse avaldamiseks.