Nacházíme se ve věku vícejádrových procesorů. Před několika měsíci zaplavili výrobci trh čtyřjádrovými procesory, ty dvoujádrové jsou již v počítačích zcela běžnou záležitostí. Pro uživatele to znamená další zvýšení výkonu, softwarovým vývojářům to spíše přidává vrásky. Aby software tohoto výkonu dokázal využít, musí pro to být přizpůsoben. A to se snadněji říká, než uskutečňuje.
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í.