MATLAB po 3 letech stížností opravil 10 řádků kódu, které snižovaly výkon Zenů
MATLAB (matrix laboratory) je interaktivní programové prostředí a skriptovací programovací jazyk čtvrté generace. Program MATLAB je vyvíjen společností MathWorks a […] je k dispozici pro operační systémy Linux (32-bit, 64-bit), Windows (32-bit, 64-bit), Mac OS X (64-bit). MATLAB umožňuje počítání s maticemi, vykreslování 2D i 3D grafů funkcí, implementaci algoritmů, počítačovou simulaci, analýzu a prezentaci dat i vytváření aplikací včetně uživatelského rozhraní. Původně byl jazyk určen pro matematické účely, ale časem byl upraven, byly přidány nové funkce a rozšíření, rozrostl se různými směry a dnes je využitelný v široké paletě aplikací. V roce 2004 měl MATLAB přes milión uživatelů a to především z řad vědeckotechnických pracovníků, studentů a zaměstnanců vysokých škol. MATLAB je využíván pro vědecké a výzkumné účely a to jak v soukromém sektoru, tak i v akademických řadách. Hlavní oblastí využití jsou technické obory a ekonomie. Wikipedie: Otevřená encyklopedie: MATLAB [online]. c2020 [citováno 2. 04. 2020]. Dostupný z WWW |
Definici MATLABu máme za sebou (raději ji nechávám na Wikipedii, neboť sám jsem toto prostředí viděl naposledy léta před tím, než vůbec první článek na téma MATLAB na Wikipedii vznikl) a můžeme přejít rovnou k jádru věci. Od vydání Zenu uživatelé MATLABu poukazovali na nečekaně nízký výkon těchto procesorů ve srovnání s výkonem v jiných aplikacích, ovšem bez reakce ze strany výrobce, který software prodává za €2000, případně pronajímá za €800 ročně. Přitom nejde o jednotky ani desítky procent, jde o 2-5× nižší výkon, než by bylo možné očekávat.
Loni v listopadu se na Redditu ozval uživatel nedflanders1976, který přišel na zdroj problémů a předložil i konkrétní řešení. Zádrhel spočíval v knihovně Intel MKL (Math Kernel Library), která detekovala procesor na principu „jde o procesor Intelu -> použijeme moderní instrukční sady včetně AVX2“ / „nejde o procesor Intelu -> použijeme pouze SSE z roku 1999“). Knihovna zkrátka nezjišťovala, co procesor reálně umí a pokud CPUID string neodpovídalo hodnotě „GenuineIntel“, měl procesor a tedy i uživatel smůlu, zůstalo u SSE a tedy instrukční výbavy z doby Pentia III.
Listopadové zveřejnění tohoto přístupu ze strany autora knihovny i liknavost ze strany autora €2000 softwaru vyvolala značnou mediální odezvu. S reakcí společnosti MathWorks to ale bylo výrazně vlažnější. Řešení, které má podle zmíněných diskuzí deset řádků kódu, do svého softwaru implementovala až téměř pět měsíců poté, co jej nedflanders1976 publikoval, což je zároveň 3 roky od vydání prvního Zenu a bezmála dekádu od vydání AVX-kompatibilních procesorů AMD.
Tabulka uvádí časy potřebné k provedení různých operací - nahoře s dosavadní verzí softwaru, dole s opravenou (aktuální) verzí. Protože jde o časy, znamená nižší číslo lepší výsledek.
ExtremeTech, nedflanders1976 (1, 2)