Slo-Tech

» »

Kako na procesorjih AMD Ryzen trikratno pospešiti Matlab

Kako na procesorjih AMD Ryzen trikratno pospešiti Matlab

Slo-Tech - Današnje procesorsko obarvane vesti zaključujemo z vestjo, kako niti najbolj optimizirani in najhitrejši procesorji nič ne pomagajo, če jih programska oprema ne zna izkoristiti. Priljubljeni program za matematične izračune in modeliranje Matlab na primer ob zagonu preveri, kateri procesor ima računalnik nameščen, in temu primerno kliče ukaze. Toda včasih to ni najpametneje. Če Matlab zazna AMD-jeve procesorje Ryzen, uporablja starejši nabor ukazov SSE1. A v resnici imajo AMD-jevi procesorji že od arhitekture Excavator vgrajene tudi ukaze SIMD, in sicer AVX2. Zato so modri ljudje interneta spisali popravek, ki Matlab prisili v uporabo teh ukazov.

Rezultat je osupljiv. Pri manipulacijah z matrikami je pospešek 258-odstoten, v ostalih primeri pa od 20 do 250 odstotkov. Za ta pospešek tako ni potrebno niti šariti po izvorni kodi ali kakorkoli spreminjati programa. Zadostuje, da ga poženemo s skripto

@echo off
set MKL_DEBUG_CPU_TYPE=5
call "%MKLROOT%\bin\mklvars.bat" MKL_DEBUG_CPU_TYPE=5
matlab.exe
in pospešek bo očiten. Podobno lahko storimo tudi v Linuxu, kjer moramo zgolj ustvariti ustrezno okoljsko spremenljivko
export MKL_DEBUG_CPU_TYPE=5.

8 komentarjev

pegasus ::

Torej je spodaj mkl, intlova knjižnica. Figures.
Matlab na splošno ni nekaj, kar bi blestelo pri izkoristku hardvera. R je še hujši pacient. A sta oba kar dobra v izkoristku programerjevega časa. In kdor hoče oboje, bo posegel po Juliji.

          ::

Ko sem se sam ukvarjal z Matlabom, sem uporabljal ene dodatke, da so se izračuni izvajali v GPU-ju. Pohitritev mojega konkretnega problema je bila 15-kratna!

FireSnake ::

A, Matlab.
Lepi spomini, ko sem to še uporabljal.

Na začetku odvratno, ko se pa navadiš pa prav luštno.
"In The Sound Of Silence Time Is Standing Still"
Poglej, in se nasmej ----> www.vicmaher.si ;)

Bwaze6 ::

Zanimivo, da imajo tudi priljubljeni programi z ogromno uporabniki takšne kikse, ki pogosto kar ostanejo nepopravljene, kljub javni objavi.

Adobe ima tudi polno raznih cvetk, kot je na primer ta, da v Lightroom ne zna uporabljati Intelovega hyperthreadinga in AMDjevega SMT - če ju izklopiš, se opravilo pospeši - pri nekaterih Intelih tudi za 90%! Kar seveda ne more biti rešitev, saj ostali deli taistega programa, in seveda ves preostali softver s tem normalno deluje. In glede na to, da je napaka prisotna že dve leti, lahko zaključiš le, da se Adobu za PC fučka in so vsi programerji zaposleni s portanjem programov na Apple iPad Pro...

D3m ::

Matlab na primer ob zagonu preveri, kateri procesor ima računalnik nameščen, in temu primerno kliče ukaze.


Zato, ker uporablja Intel knjižico in če Intel knjižica zazna NON GeniuneIntel CPU uporabi najslabši možen nabor ukazov.

Temu primerno je bil Intel tudi finančno kaznovan, ker omejuje konkurenco.
|HP ProBook|R5 3500U|
|Lenovo A10|Mediatek MT8121|

Zgodovina sprememb…

  • spremenil: D3m ()

Ahim ::

Bwaze6 je izjavil:

Zanimivo, da imajo tudi priljubljeni programi z ogromno uporabniki takšne kikse, ki pogosto kar ostanejo nepopravljene, kljub javni objavi.

Ne bi bilo prevec presenetljivo, ce gre za enak fail, kot je bil omenjen zadnjic v temi o Zen procesorjih na tem forumu - narobe procesiran rezultat CPUID, ki predpostavlja, da bo neka vrednost vedno samo 4-bitna (zakaj pa ne, saj smo v zdaj v 4insestdesetbitnih casih ... 4 ... geddit? :)) ), pripelje do neoptimalnega code patha.

Stara jajca od softvera pac, precej bolj verjetno kot pa namerna sabotaza enega ponudnika procesorjev.

PH03N1X ::

          je izjavil:

Ko sem se sam ukvarjal z Matlabom, sem uporabljal ene dodatke, da so se izračuni izvajali v GPU-ju. Pohitritev mojega konkretnega problema je bila 15-kratna!

Kateri dodatki pa so to?

Parallel Toolbox slučajno?

Zgodovina sprememb…

  • spremenilo: PH03N1X ()

          ::

Ker je bilo to pred 10 leti, se ne spominjam več podrobnosti.


Vredno ogleda ...

TemaSporočilaOglediZadnje sporočilo
TemaSporočilaOglediZadnje sporočilo
»

Kako na procesorjih AMD Ryzen trikratno pospešiti Matlab

Oddelek: Novice / Procesorji
82915 (227)          
»

Matrix multiplication program Pycuda in Mathlab

Oddelek: Programiranje
291380 (955) Senitel
»

PC za premlevnje večjih količin podatkov

Oddelek: Kaj kupiti
8970 (834) primozsu
»

Kakšno moč rabimo

Oddelek: Znanost in tehnologija
101055 (689) snow
»

Plošča QDI KinetiZ-da ali ne?

Oddelek: Kaj kupiti
8938 (802) Jux

Več podobnih tem