Superpočítač na kancelářském stole

Martin Tůma  |  
Superpočítač na kancelářském stole

Počítače ani superpočítače nejsou (zatím) inteligentnější než člověk, nemají představivost, ale jednu věc umějí dokonale – počítat.

Dříve potřebovali hvězdáři práci celého týmu matematiků, aby ze svých pozorování odvodili dráhy nebeských těles. Díky počítačovým modelům odpadají drahé a časově náročné výroby prototypů strojů a zařízení pro jejich testy, ať už jsou to testy aut a letadel ve větrném tunelu, nebo třeba dílů zařízení na jejich maximální zatížení atd. Počítače dokážou zpracovat obrovské množství dat a začlenit je do kontextu – odhalit mezi nimi nové, častokrát netušené souvislosti, třeba v oblasti astronomie, geofyziky, chemie, biologie.

První bylo SETI@home

Ty nejtěžší úlohy vyžadují ty nejvýkonnější počítače, superpočítače s těžko představitelným výkonem. Ale zatímco superpočítačů po světě je jenom pár, úloh, které by je plně zaměstnaly, je mnohem více. A takový superpočítač má kromě vysoké pořizovací ceny i vysoké provozní náklady – jeho čas se tedy musí zaplatit.

Některé organizace si místo superpočítačů pořizují jejich levnější náhradu – tzv. cluster z víceméně obyčejných počítačů, který sice není tak výkonný jako superpočítač, ale je podstatně levnější jak na pořízení, tak na provoz. Nicméně celkový výpočetní výkon všech superpočítačů je pořád menší než výkon starých dobrých PC po celém světě připojených k internetu. A tyhle tzv. desktopy nebo též pracovní stanice po většinu času odpočívají, v průměru jsou aktivní pouze zlomek času, po který jsou zapnuté.

Zřejmě tímto směrem se ubíraly myšlenky nadšenců z univerzity v Berkeley. V roce 1999 měli v ruce velké množství dat z obřího radioteleskopu v Arecibo, ale žádný volný počítačový čas na univerzitních serverech, který by mohli využít pro jejich vyhodnocení. A tak 17. května roku 1999 spatřil světlo světa první program pro distribuované výpočty na domácích nebo firemních počítačích – SETI@ home.

Do projektu se připojilo a volný čas na svých počítačích poskytlo nepřeberné množství lidí z celého světa, v různých zemích vznikaly národní týmy, které mezi sebou soupeřily v počtu zpracovaných jednotek. Popularita byla tak velká, až to vedlo ke škodě, v honbě za výsledky docházelo k falšování dat a projekt to poškodilo – dost velký objem výsledků se potom musel přepočítávat.

Druhá generace

Zatímco SETI@home bylo a je velké síto, prosívající tuny hlušiny v naději, že jednou nalezne pravý diamant signálu od mimozemské civilizace, dnešní generace softwaru opustila jednoúčelovost a stala se z ní obecná platforma pro distribuované výpočty – ze SETI@home se stal BOINC neboli Berkeley Open Infrastructure for Network Computing – otevřená platforma pro distribuované výpočty.

Systém BOINC sestává ze serveru, který se stará o rozdělování úkolů připojeným počítačům, sbírá od nich vyřešené úlohy, ověřuje jejich validitu a zařazuje je do celkového souboru řešení. Kromě toho je zde samozřejmě rozhraní pro administraci jak serveru, tak jím spravovaných projektů. Druhou částí jsou nástroje pro tvorbu vlastních projektů distribuovaného výpočtu.

Celosvětovou síť dobrovolníků tak má šanci se svým projektem oslovit každý, jehož projekt projde výběrem správců serverů BOINC v Berkeley. Otevřenost platformy umožňuje komukoli založit si vlastní BOINC síť. Zatímco univerzitám je poskytována zdarma podpora formou projektu Virtual Campus Supercomputing Center – VCSC, ostatní se musí spolehnout na svoje vlastní síly a na (podotýkám, že dobře a detailně) zpracovanou dokumentaci od autorů BOINC.

Superpočítač, cluster, nebo distribuovaný výpočet?

Podívejme se nyní na použitelnost jednotlivých řešení – superpočítače, clusteru nebo distribuovaného výpočtu. Pokud řešíte úkoly s vysokou prioritou, s pevně danými termíny řešení a máte hodně peněz, v řádech milionů dolarů na nákup superpočítače, třeba Blue Gene od IBM, máte velký klimatizovaný sál na jeho umístění a rozpočet na jeho provoz a údržbu, je to pro vás dobrá volba.

Navíc můžete prodávat nevyužitý strojový čas méně movitým subjektům. Jsou-li ale vaše možnosti omezené, je dobré se pokusit o clusterové řešení – podobné řešení používají třeba naše univerzity nebo Akademie věd. Cluster je levnější než superpočítač, lépe škálovatelný (když se najdou peníze, nakoupí se další technika a připojí se do clusteru), ale na provoz je to náročnější, především kvůli vyšší spotřebě energie. Totéž platí o údržbě, obzvláště pokud se jedná o směsku různých strojů.

A konečně – máte-li opravdu složitou úlohu, ale skoro žádné prostředky, je distribuovaný výpočet dobrou (a vlastně jedinou možnou) volbou. Sice nejste schopni říci, kdy bude úloha vyřešena, ale kromě pořízení stroje pro instalaci BOINC serveru prakticky nepotřebujete žádné další prostředky, pomineme-li nutnost naprogramovat svoji úlohu jako BOINC projekt a vytvořit instalační program pro klientské počítače.

Podobné řešení v současnosti používá třeba Maďarská akademie věd pod názvem SZTAKI Desktop Grid. S výhodou lze využít i to, že projekty BOINC nemusí být jednoúčelové, ale mohou řešit v rámci jednoho projektu řadu úloh. Jeden instalovaný program na klientském počítači potom může provádět různé výpočty bez nutnosti přidávání dalších projektů a instalace dalšího softwaru.

Postavte si superpočítač ze Sony PSX

Použití již existujícího hardwaru v podobě počítačů organizace má tu výhodu, že nepotřebuje žádnou investici, ale na druhou stranu je poměrně nevyzpytatelný, co se týče času a objemu spočítaných výsledků. Samozřejmě si lze pořídit i cluster (skupinu spolupracujících počítačů) z klasických desktopů, a tak prodloužit životnost třeba již vysloužilých počítačů – díky použití jednoúčelových distribucí Linuxu s minimálními nároky na hardware (pouze textový režim, žádná grafická nadstavba a ořezání dalších zbytečností).

Nicméně zde bývá problémem obvykle velká různorodost poskládaných strojů a tím i velké nároky na úpravy instalací, shánění náhradních dílů. Existuje ale rovněž jiná možnost – přitom cenově dostupná – a tou je postavení clusterů z herních konzolí třeba ze Sony PlayStation 3. Tyto stroje mají velký výpočetní výkon především v oblasti grafiky, který lze využít k distribuovaným výpočtům a ve verzi 3 už umožňuje bootování z Linuxu.

Konkrétní projekt, který představili na University of Massachusetts, je postaven na distribuci Fedora Core a používá pro komunikaci v rámci clusteru rozhraní MPI (Message Passing Interface) – konkrétně Cell SDK od IBM. Celý projekt je koncipován jako open source, jeho domovská stránka se nachází na www.ps3cluster.umassd.edu/index.html.

SETI@home a další

SETI @home – byl první projekt využívající distribuovaných výpočtů k vyhledávání mimozemských civilizací. I když za deset let trvání projektu žádného mimozemšťana nenašli, na poli propagace distribuovaných výpočtů a získávání dobrovolníků odvedli neocenitelnou práci. Einstein@home – tento projekt je zaměřen na pátrání po gravitačních vlnách a tím i potvrzení nebo vyvrácení obecné teorie relativity.

Program pátrá po dvojicích neutronových hvězd velmi blízko u sebe a jejich gravitačních projevech. Rosetta@home, Proteins@home – dva projekty zaměřené na výpočet 3D tvarů proteinů; může se tím napomoci při hledání léku na nejzávažnější choroby. LHC@home – v současnosti bohužel nefunguje – je to projekt, který má pomáhat při vyhodnocování výsledků experimentů v Large Hadron Collider. Po loňské nehodě je toto zařízení zatím stále mimo provoz. World Community Grid, Lattice – dva projekty, umožňující provádění různých výpočtů v rámci výzkumu malárie, AIDS a podobně.

Climate Prediction a BBC Climate Change – dva projekty pro výzkum klimatu a jeho změn. Ovšem BOINC není jediný produkt v této oblasti. Asi nejzdařilejší je Nimbus (odkaz na to, že tato oblast výpočtů se označuje též jako cloud computing). I zde se jedná o open source projekt, primárně určený pro řešení úloh s velkým množstvím dat. Virtuální stroj je obdobou serveru BOINC, ale na rozdíl od poměrně složitého zprovoznění serveru BOINC je zde možno nakonfigurovat si vlastní clusterový systém, jak říkají autoři projektu, „jedním kliknutím“. Pro více informací doporučuji navštívit domovskou stránku projektu: http://workspace.globus.org.

SETI@home a další

Začínáme se serverem BOINC

Základem používání distribuovaných výpočtů je server BOINC, který se stará o rozdělování úkolů, přijímá a vyhodnocuje zpracované úlohy a zařazuje je do výsledku počítaného projektu. Dále poskytuje rozhraní pro administrace serveru. BOINC server je distribuován jako aplikace pro Linux. Zdrojový kód serveru je ke stažení na adrese http://boinc.berkeley.edu/…i/SourceCode. Proto, aby bylo možno server na vašem stroji rozběhnout, potřebujete: Subversion – pro přístup do SVN repository projektu BOINC-server GNU tools – pro zkompilování Apache s PHP 5 a vyšší verzí a s mod_ssl Python a MySQL databázi PHP 5 a vyšší, OpenSSL, Pkg-config

Podrobný výčet požadovaného softwaru naleznete zde: http://boinc.berkeley.edu/…ePrereqsUnix. Posledním krokem před samotnou instalací BOINC serveru je přidání uživatele BOINC s oprávněním pro zápis do adresářů, které si vytvoří uživatel, pod kterým běží web server Apache, typicky jako user boinc:x:566:apache. Po instalaci všeho potřebného můžeme přikročit k instalaci samotného BOINC serveru. Podrobný návod a kuchařku, jak instalovat BOINC server na Debian, naleznete na stránkách http://boinc.berkeley.edu/…/ServerIntro.

Začínáme se serverem BOINC

Nejčtenější