Paralelní vesmír

Když Anwar Ghuloum v roce 2002 přišel do Intelu pracovat, byla společnost špičkou mezi výrobci čipů, hlavně proto, že dodávala procesory, které běžely stále vyšší rychlostí. Už jsme byli na třech gigahertzech s Pentiem 4 a plán počítal s budoucími rychlostmi 10 gigahertzů a více, vzpomíná Ghuloum, který má doktorát z Carnegie Mellon a nyní je jedním z hlavních inženýrů společnosti. Ve stejném roce na vývojářské konferenci společnosti Intel řekl technologický ředitel Pat Gelsinger: „Do roku 2010 jsme na dobré cestě pro 30gigahertzová zařízení, 10 nanometrů nebo méně, což přináší tera-instrukce výkonu. To je jeden bilion počítačových instrukcí za sekundu.





Gelsinger se ale mýlil. Intel a jeho konkurenti stále vyrábějí procesory, které dosahují maximální rychlosti pod čtyři gigahertz, a něco kolem pěti gigahertzů začalo být považováno, alespoň prozatím, za maximální možnou rychlost pro křemíkovou technologii.

Záchranné lano pro obnovitelnou energii

Tento příběh byl součástí našeho vydání z ledna 2009

  • Viz zbytek čísla
  • předplatit

Není to tak, že by byl zrušen Moorův zákon – myšlenka, že počet tranzistorů na čipu se každé dva roky zdvojnásobí. Neočekávané problémy s tvorbou tepla a spotřebou energie spíše omezily rychlost hodin procesorů nebo rychlost, jakou mohou provádět instrukce. Nové technologie, jako je spintronika (která využívá směr otáčení jediného elektronu ke kódování dat) a kvantové (neboli tunelovací) tranzistory, mohou nakonec umožnit počítačům běžet mnohonásobně rychleji než nyní a přitom spotřebovávat mnohem méně energie. Ale tyto technologie jsou nejméně deset let od toho, aby se dostaly na trh, a vyžadovaly by výměnu výrobních linek polovodičů, jejichž výstavba stála mnoho desítek miliard dolarů.



Aby výrobci čipů využili co nejvíce dostupných technologií, zvolili jiný přístup. Další tranzistory předpokládané Moorovým zákonem se nepoužívají k tomu, aby jednotlivé procesory běžely rychleji, ale ke zvýšení počtu procesorů uvnitř čipu. Čipy se dvěma procesory – neboli jádry – jsou nyní stolním standardem a čtyřjádrové čipy jsou stále běžnější. Z dlouhodobého hlediska Intel počítá se stovkami jader na zařízení.

Ale jde o to: zatímco hardwarový problém přehřívání čipů se hodí k hardwarovému řešení vícejádrových počítačů, toto řešení zase vede k záludnému softwarovému problému. Jak programujete pro více procesorů? Je úkolem Anwara Ghulouma, aby to zjistil, s pomocí programovacích skupin, které řídí ve Spojených státech a Číně.

Mikroprocesorové společnosti podstupují obrovské riziko při přijímání vícejádrové strategie. Pokud nenajdou snadné způsoby, jak napsat software pro nové čipy, mohou ztratit podporu vývojářů softwaru. To je důvod, proč byl vícejádrový herní stroj Sony PlayStation 3 uveden na trh pozdě a stále má méně herních titulů než jeho konkurenti.



Problém s křemíkem
Prvních 30 let vývoje mikroprocesorů bylo cestou ke zvýšení výkonu vyrábět čipy, které měly stále menší funkce a běžely stále vyššími a vyššími takty. Původní počítač Apple II z roku 1977 používal osmibitový procesor, který běžel na jeden megahertz. Dnešním PC standardem je 64bitový čip běžící na 3,6 GHz – efektivně, 28 800krát rychleji. Ale tím se zdá, že tato trajektorie končí. Kolem roku 2002 se nejmenší prvky, které bylo možné vyleptat na čip pomocí fotolitografie, zmenšily na 90 nanometrů – měřítko, při kterém nepředvídatelné efekty způsobily, že velká část elektřiny napumpované do každého čipu jednoduše unikla ven, čímž se vytvořilo teplo, ale nefungovalo vůbec nic. . Mezitím byly tranzistory na čipech nacpané tak těsně, že teplo, které generovaly, nemohlo být absorbováno a odváděno pryč. Když rychlost hodin dosáhla pěti gigahertzů, uvědomili si výrobci čipů, čipy se zahřejí tak, že bez propracovaných chladicích systémů by se křemík, ze kterého byly vyrobeny, roztavil. Průmysl potřeboval jiný způsob, jak zlepšit výkon.

Vzhledem ke složitým konstrukcím, které nyní vyžadují vysokorychlostní jednojádrové čipy, může více jader dodávat stejné množství výpočetního výkonu a přitom spotřebovávat méně elektřiny. Méně elektřiny generuje méně tepla. A co víc, použití více jader šíří jakékoli teplo.

Většina počítačových programů však nebyla navržena s ohledem na více jader. Jejich instrukce se provádějí v lineární sekvenci, přičemž se nic neděje paralelně. Pokud se zdá, že váš počítač dělá více věcí najednou, je to proto, že procesor přepíná mezi aktivitami rychleji, než dokážete pochopit. Nejjednodušší způsob, jak používat více jader, je tedy dělba práce – například spuštění operačního systému na jednom jádru a aplikace na druhém. To nevyžaduje úplně nový programovací model a může to fungovat pro dnešní čipy, které mají dvě nebo čtyři jádra. Ale co zítřejší, které může mít 64 nebo více jader?



Opětovná návštěva staré práce
Naštěstí, říká Leslie Valiant, profesor informatiky a aplikované matematiky na Harvardské univerzitě, základy paralelismu byly vypracovány před desítkami let v oblasti vysoce výkonných počítačů – tedy se superpočítači. Nyní je úkolem, říká Valiant, najít způsob, jak tuto starou práci učinit užitečnou.

Superpočítače, které inspirovaly vícejádrové výpočty, byla zařízení druhé generace z 80. let, vyráběná společnostmi jako Thinking Machines a Kendall Square Research. Tyto počítače používaly běžně dostupné procesory po stovkách nebo dokonce tisících, které je provozovaly paralelně. Některé byly objednány americkou Agenturou pro pokročilé obranné výzkumné projekty jako levnější alternativa k superpočítačům Cray. Lekce získané při programování těchto počítačů jsou vodítkem k tomu, aby dnes vícejádrové programování fungovalo. Grand Theft Auto by tedy mohlo brzy těžit ze softwarového výzkumu provedeného před dvěma desetiletími na pomoc při konstrukci vodíkových bomb.

V 80. letech se ukázalo, že klíčový problém paralelních výpočtů je tento: je těžké roztrhat software na kusy, aby ho mohly paralelně zpracovávat stovky procesorů, a pak ho znovu sestavit ve správném pořadí, aniž by to umožnilo zamýšlený výsledek bude poškozen nebo ztracen. Počítačoví vědci zjistili, že zatímco některé problémy lze snadno paralelizovat, jiné nikoli. I když by mohly být problémy paralelní, výsledky mohou být stále vráceny mimo pořadí, v tom, co se nazývalo závodní podmínky. Představte si dvě operace běžící paralelně, z nichž jedna musí skončit dříve než druhá, aby byl celkový výsledek správný. Jak zajistíte, že závod vyhraje ten pravý? Nyní si představte dva tisíce nebo dva miliony takových procesů.



Z této dřívější práce v oblasti vysoce výkonných počítačů jsme se naučili, že existují problémy, které se hodí k paralelismu, ale že není snadné psát paralelní aplikace, říká Marc Snir, spoluředitel Universal Parallel Computing Research Center (UPCRC) v University of Illinois v Urbana-Champaign. Normálně programátoři používají specializované programovací jazyky a nástroje k psaní instrukcí pro počítač v termínech, které jsou pro lidi srozumitelnější než 1s a 0s binárního kódu. Ale tyto jazyky byly navrženy tak, aby reprezentovaly lineární sekvence operací; je těžké organizovat tisíce paralelních procesů pomocí lineární řady příkazů. K vytvoření paralelních programů od nuly jsou potřeba jazyky, které umožní programátorům psát kód bez přemýšlení o tom, jak to udělat paralelně – s programem jako obvykle, zatímco software vymyslí, jak efektivně distribuovat instrukce mezi procesory. Zatím neexistují dobré nástroje, které by skryly paralelismus nebo aby bylo zřejmé [jak toho dosáhnout], říká Snir.

Jasná světla: V roce 1987 vydal Thinking Machines svůj superpočítač CM-2 (výše), ve kterém běželo paralelně 64 000 procesorů. Společnost vyhlásila bankrot v roce 1994, ale její dopad na výpočetní techniku ​​byl významný.

Aby společnosti pomohly vyřešit tyto problémy, povolaly zpět do servisu některé šedovousy superpočítačů z 80. let. David Kuck je například emeritním profesorem z University of Illinois, který je známý jako vývojář nástrojů pro paralelní programování. Nyní pracuje na vícejádrovém programování pro Intel. Stejně tak celý tým najatý z bývalé Digital Equipment Corporation; v předchozím profesním životě vyvinula Digital’s implementaci rozhraní pro předávání zpráv (MPI), což je dnes dominantní softwarový standard pro multimachine supercomputing.

V jistém smyslu to mají tito staří hráči jednodušší než minule. Je to proto, že mnoho dnešních vícejádrových aplikací se velmi liší od těch, které si představoval legendární konstruktér sálových počítačů Gene Amdahl, který teoretizoval, že nárůst rychlosti dosažitelný pomocí více procesorů je omezen mírou, do jaké lze daný program paralelizovat.

Počítače zpracovávají větší objemy dat než kdykoli předtím, ale jejich úlohy zpracování jsou tak ideálně vhodné pro paralelizaci, že omezení Amdahlova zákona – popsaného v roce 1967 – začínají pociťovat jako žádná omezení. Nejjednodušším příkladem masivně paralelního úkolu je hrubou silou určení neznámého hesla vyzkoušením všech možných kombinací znaků. Rozdělení potenciálních řešení mezi 1 000 procesorů nemůže pomoci, ale bude 1 000krát rychlejší. Totéž platí pro dnešní procesorově náročné aplikace pro kódování obrazových a zvukových dat. Paralelní komprese filmových snímků je téměř dokonale efektivní. Ale pokud je dnes pro paralelní zpracování snazší najít využití, nemusí to být nutně mnohem jednodušší. Usnadnění bude vyžadovat společné úsilí výrobců čipů, vývojářů softwaru a akademických počítačových vědců. Illinoisský UPCRC je skutečně financován Microsoftem a Intelem – dvěma společnostmi, které mohou nejvíce získat, pokud bude vícejádrový výpočetní systém úspěšný, a nejvíce ztratit, pokud selže.

Vymýšlení nových nástrojů
Pokud je software stále složitější, není to jen proto, že do něj přibývají další funkce; je to také proto, že kód je postaven na stále více vrstvách abstrakce, které skrývají složitost toho, co programátoři skutečně dělají. Nejde o pouhou nafoukanost: programátoři potřebují abstrakce, aby základní binární kód mohl dělat stále pokročilejší práci, kterou od něj chceme. Když dojde na psaní pro paralelní procesory, programátoři používají nástroje tak rudimentární, že James Larus, ředitel softwarové architektury pro projekt Data Center Futures ve společnosti Microsoft Research, je přirovnává k nejnižší úrovni a nejobtížnějšímu jazyku, který může programátor použít. .

Nedokázali jsme si představit, že bychom dnešní software psali v assembleru, říká. Ale z nějakého důvodu si myslíme, že můžeme napsat paralelní software stejně propracovaný jako nové a kritické kusy napsané v tom, co se rovná paralelnímu assembleru. nemůžeme.

To je důvod, proč Microsoft vydává nástroje pro paralelní programování tak rychle, jak jen může. F# je například paralelní verze univerzálního programovacího jazyka ML od společnosti Microsoft. Nejen, že paralelizuje určité funkce, ale zabraňuje jim v nesprávné interakci, takže zápis paralelního softwaru je snazší.

Intel mezitím posílá Ghulouma jeden týden měsíčně do zahraničí, aby promluvil s vývojáři softwaru o vícejádrové architektuře a modelech paralelního programování. Přijali jsme filozofii, že „problém“ s paralelním programováním nebude vyřešen během příštího roku nebo dvou a bude vyžadovat mnoho postupných vylepšení – a malý počet skoků – do stávajících jazyků, říká Ghuloum. Také mám tendenci si myslet, že to nemůžeme udělat ve vzduchoprázdnu; to znamená, že bez významné zpětné vazby od programátorů nepochybně skončíme nějakým způsobem se špatnou věcí.

Na komerčních i open source trzích využívají další nové jazyky a nástroje sílu vícejádrového zpracování nebo maskují jeho složitost. Patří mezi ně rámec MapReduce od Google, který usnadňuje spouštění paralelních výpočtů na klastrech počítačů, a Hadoop, open source implementace MapReduce, která dokáže distribuovat aplikace mezi tisíce uzlů. Nové programovací jazyky jako Clojure a Erlang byly od základu navrženy pro paralelní výpočty. Populární chatovací aplikace na Facebooku byla napsána částečně v Erlangu.

Mezitím MIT spinoff Cilk Arts dokáže rozdělit programy napsané v zavedeném jazyce C++ do vláken, která lze spouštět paralelně na více jádrech. A Appistry se sídlem v St. Louis tvrdí, že její Enterprise Application Fabric automaticky distribuuje aplikace pro programovací framework Microsoft .Net na tisíce serverů, aniž by programátoři museli změnit jediný řádek svého původního kódu.

Limity vícejádrových počítačů

Stejně jako sen Intelu o 10- a 30-gigahertzových čipech ustoupil snaze o vícejádrové výpočty, nicméně vícejádro samo o sobě může existovat spíše roky než desetiletí. Efektivita paralelních systémů klesá s každým přidaným procesorem, protože jádra soupeří o stejná data; přijde bod, kdy přidání dalšího jádra k čipu jej ve skutečnosti zpomalí. To může stanovit praktický limit pro vícejádrovou strategii dlouho předtím, než začneme kupovat stojádrové počítače.

Záleží na tom však? I když mohou existovat aplikace, které vyžadují výkon mnoha jader, většina lidí tyto aplikace nepoužívá. Kromě zarytých hráčů si jen málo lidí stěžuje, že jejich počítače jsou příliš pomalé. Microsoft ve skutečnosti zdůraznil, že Windows 7, nástupce problémového Windows Vista, bude spotřebovávat méně výpočetního výkonu a paměti než Vista – což je krok nezbytný kvůli popularitě méně výkonných mobilních počítačových platforem a očekávané migraci počítačových aplikací na Internetové servery. Cynik by mohl říci, že hledání stále rostoucího výpočetního výkonu je přísně komerční – že polovodičové a počítačové společnosti, prodejci softwaru a výrobci mobilních telefonů nás potřebují k nákupu nových věcí.

Jaká je tedy nevýhoda, pokud selže vícejádrový výpočetní systém? Jaký je pravděpodobný dopad na naši kulturu, pokud uděláme technický krok, který by měl být zag, a najednou nebudeme schopni využít všech 64 procesorových jader v našich budoucích noteboocích?

Nemůžu se dočkat! říká Steve Wozniak, vynálezce Apple II. Zrušení Moorova zákona by podle něj vyvolalo renesanci vývoje softwaru. Jedině tak budeme konečně schopni vytvořit software, který poběží na stabilní a trvalé platformě.

Ve školách, říká Woz, je životnost stolu 25 let, učebnice 10 let a počítače tři roky. Které z těchto zařízení stojí nejvíce na nákup a provoz? Proč, PC, samozřejmě. Která má zůstatkovou hodnotu, když její životnost skončí? Ne PC – jeho likvidace stojí peníze. Knihy lze alespoň spálit na teplo. Dokud se technologie nezpomalí natolik, aby výpočetní platformy vydržely dostatečně dlouho na to, aby byly ekonomicky životaschopné, nebudou skutečně neodmyslitelnou součástí vzdělávání. Takže konec Moorova zákona, i když to může vypadat špatně, by byl ve skutečnosti velmi dobrý.

Robert X. Cringely psal o technologii již 30 let. Je autorem Náhodná říše: Jak si chlapci ze Silicon Valley vydělávají miliony, bojují se zahraniční konkurencí a stále nemohou dostat rande .

skrýt