Neuronová síť odhadne rychlost kódu na procesoru

Na MITu přišli s nástrojem, který pomocí strojového učení dokáže stále lépe předvídat, jak rychle konkrétní kód poběží na konkrétním procesoru.

Vývojáři i kompilátory samozřejmě standardně používají modely, které umožňují odhadnout rychlost určitého kódu na dané platformě – prostě se konkrétní architektura softwarově simuluje. Kompilátor pak díky tomu dokáže kód celkově optimalizovat během překladu do strojového kódu, vývojář zase může zjistit, kde má jeho kód úzké hrdlo a zkusit ho přepsat. Problém, alespoň dle autorů nové práce na MITu, ale spočívá v tom, že simulační prostředí nebývají řádně prověřena. Tyto modely vytváří velmi omezená skupina odborníků a realitě odpovídají s různou přesností. Ruční tvorba takovým simulačních modelů je krajně pracná, jen dokumentace Intelu popisující pro tyto účely jeho procesory má přes 3 000 stran. Tyto dokumenty nejsou ani kompletní (zčásti i záměrně kvůli duševnímu vlastnictví), ani bezchybné. Michael Carbin z MITu uvádí, že zajistit optimální rychlost kódu je proto extrémně složité.

Vědci proto představili program Ithemal, který prostě porovnává určité typy kódu se skutečnou rychlostí po jeho spuštění a na tom základě si sám vytváří modely pro danou architekturu. Tato neuronová síť dokázala reálnou rychlost různého kódu na procesorech Intel předpovědět přesněji než model výkonu přímo z dílny Intelu. Pro srovnání: nástroj Intelu fungoval s nepřesností až 20 %, Ithermal do 10 %.

Stačí vyjít z reálných dat, bez dokumentace se lze obejít, uvádějí autoři výzkumu. Ať už je v dokumentaci něco záměrně skryto, vynecháno nebo popsáno nepřesně, neuronová síť se to naučí přímo z reálných dat (tj. z toho, jak rychle běží konkrétní programy). Ithermal vývojáře nijak nezatěžuje, za vstup bere prostý text programu, nevyžaduje od vývojáře další dodatečný popis. Výsledkem je jediné číslo, které odpovídá době předpokládaného provedení kódu (poznámka: absence nějaké „lidské“ analýzy zase ovšem ztěžuje možnost se z výstupu nějak poučit).

Co se týče budoucnosti, uvedené vylepšení výkonu pro architekturu Intelu odpovídá situaci, kdy existuje ještě relativně dost modelů architektury a lidí, kteří se jí zabývají a nějak jí rozumí. Pak jsou zde architektury dosti specifické, kde je odborníků úplné minimum, a zde může být přínos Ithermalu mnohem vyšší. Takovým TPU (tensor processing unit) Googlu nerozumí dnes mimo Goolgle zřejmě skoro nikdo, předpovídat rychlost kódu lze tedy nejspíš právě tak, že se na porozumění rezignuje a necháme strojové učení, aby se s černou skřínku vypořádalo samo.

Součástí práce výzkumníků je i návrh, jak by kompilátory mohly automaticky zvyšovat výkon při překladu. Použitý algoritmus Vemal má dávat lepší výsledky než dnešní oblíbený překladač LLVM (Low Level Virtual Machine, původně pro C/C++, ale nyní je k dispozici i pro překlad zdrojových kódů jiných jazyků); oba mají pracovat na stejném principu, převodu analyzovaného kódu na vektory. Další vývoj Ithermalu by měl vylepšit i Vermal.

 

Ithemal: Accurate, Portable and Fast Basic Block Throughput Estimation using Deep Neural Networks: proceedings.mlr.press/v97/mendis19a/mendis19a.pdf a další

Zdroj: MIT News/TechXplorer.com a další

Exit mobile version