Vícejádrové procesory představují novou výzvu pro vývojáře


Nástup vícejádrových procesorů byl jen otázkou času. Přes dvacet let dokázali výrobci jako Intel či AMD zrychlovat procesory pouhým navyšováním jejich frekvence. Pak však dosáhli bariér v podobě přehřívání a energetických nároků a vydali se tedy cestou zvyšování počtu jader. Zřejmě tedy mají opět na nějakou dobu vystaráno, totéž však nemohou říct vývojáři.
Vývojáři se musí přizpůsobit
Vícejádrové procesory pracují jinak, než ty jednojádrové. Zpracovávají totiž jednotlivé instrukce paralelně a software si s tím musí umět poradit. A břímě přizpůsobení aplikací padá pochopitelně na jejich vývojáře.
„Pokud máte vícejádrový procesor, váš program musí umět využít všech těchto jader,“ říká Ben Chelf, Chief Technical Officer společnosti Coverity, která se zabývá asistencí v oblasti paralelního zpracování. „To pochopitelně pro vývojáře představuje obrovskou výzvu, protože něco takového dříve nebylo potřeba. Vše zpracovávalo jedno jádro.“ To je sice možné i dnes, ale za cenu výrazného snížení výkonu.
Podle posledního výzkumu společnosti IDC už více než 70 procent výrobců vyvíjí svůj software tak, aby dokázal vícejádrových procesorů využít. Podle některých však tuto výzvu dokážou naplnit jen elitní programátoři. Například Dave Lounsbery z asociace Open Group tp přirovnává k olympijské gymnastice, kde jen pár vyvolených dosáhne požadovaných výkonů. Řada programátorů však tyto ambice nemá a pro zvládnutí této situace potřebují vývojářské nástroje a operační systémy, které část práce zvládnou za ně.
Vše je jen otázkou přizpůsobení se a důvtipu
Společnosti jako Intel, Microsoft či Sun Microsystems již poskytují pomoc při adaptaci v oblasti paralelního zpracování. Intel například nabízí open-source C++ knihovny pro vícevláknový vývoj Threading Building Blocks. Microsoft nabízí podobnou knihovnu Concurrency and Coordination Runtime, která bude součástí také připravovaného Visual Studia 2010.
Mezi další společnosti, které nabízejí nástroje a podporu pro zvládnutí přechodu na paralelní zpracování, patří například Cilk Arts, Coverity, Fortify, RapidMind a SureLogic.
Problémem však také zůstává, že ne všechen software, už ze své podstaty, dokáže vícejádrových procesorů využít. Aplikace zpracovávající obrázky, grafiku, video, podobně jako ty, které analyzují rozsáhlé datové bloky, mohou řadu svých úlohy rozdělit do více větví zpracovávaných samostatně a z vícejádrových procesorů vytěží maximu. Některé aplikace, jako třeba textový editor, se však něčím podobným nevyznačují, protože instrukce na sebe musejí s výsledky čekat. Pak už záleží na vývojářích a jejich důvtipu, jak se s danou situací vypořádají.
Komentáře

Aplikace čekají na procesor? Když se podíváme na vytížení počítače, většinou přijdeme na to, že úzké hrdlo je harddisk a paměť a procesor má svou práci už dávno hotovu. Takže po této stránce není potřeba další jádro.
Potom samotný vývoj. Můžeme tady diskutovat o tom, jestli je programátor šikovný, nebo ne, ale i šikovnému programátorovi dá vláknová aplikace víc práce. A co znamená víc práce programátora? Buď se zvýší cena, nebo uberou jiné funkčnosti, aby programátor zůstal ohodnocen stejně.
Úplně jinou kategorií jsou speciální aplikace náročné na výkon procesoru. Tam má vláknění smysl. Kvůli 10% aplikací tu ale nebudeme podléhat lobbingu výrobců, kteří chtějí dokázat, že touto nepotřebnou vlastností jsou před konkurencí.