Massachusettský technologický institut (MIT) teď ovšem uvedl nový programovací jazyk, který má být lékem na tento problém. V této chvíli už je jisté, že u běžných algoritmů zvládá čtyřnásobný nárůst rychlosti.
Ve většině počítačových čipů dnes paměťový management (či chcete-li řízení paměti) ovládá princip lokality, což znamená, že když nějaký program potřebuje kus dat uložených v nějaké paměťové lokaci, obecně se předpokládá, že bude potřebovat i sousední kusy. Ve velkých datech to však vždycky neplatí. Namísto toho musejí programy často pracovat s jen pár datovými položkami roztroušenými ve velkých datových souborech.
Sběr dat z hlavní paměti je nejslabším článkem výkonu dnešních čipů. Častější sběr pak logicky vede k podstatnému snížení rychlosti.
Podle Vladimíra Kirianského, postgraduálního studenta MIT, je to podobné, jako byste pokaždé, když si chcete nabrat lžičku cereálií, otevřeli ledničku, pak i krabici s mlékem, nalili si mléko na lžičku s cereáliemi, zavřeli krabici a vrátili ji do ledničky. A pak znova.
Kiriansky společně s kolegy tak vytvořil Milk, nový programovací jazyk, který vývojářům aplikací umožňuje efektivnější řízení paměti v programech, které nakládají s malými kousky dat ve velkých datových souborech.
Milk v podstatě přidá několik příkazů do OpenMP, API pro jazyky, jako jsou C či Fortran, které zjednodušuje psaní kódu pro vícejádrové procesory. S jeho využitím programátoři vloží pár řádků kódu okolo jakékoliv instrukce, která prochází obrovské množství dat a hledá v něm relativně malý počet položek. Kompilátor Milku pak zjišťuje, jakým způsobem je v konkrétním případě třeba řídit paměť.
Když jádro – u programu napsaného v Milku – zjistí, že potřebuje kus dat, nepožaduje jej – ani přidružená data okolo – z hlavní paměti. Namísto toho přidá adresu datové položky do seznamu lokálně uložených adres. Jakmile je tento seznam dostatečně dlouhý, všechna jádra čipu své seznamy zkombinují, spojí adresy, které jsou blízko sebe, do skupin, a pak jsou nově zkompilované seznamy rozdistribuovány do jader. Takto každé jádro požaduje pouze ty datové položky, o nichž ví, že je potřebuje, a které mohou být získány efektivně.
Zdroj: CIO.com