Kako na procesorjih AMD Ryzen trikratno pospešiti Matlab

Matej Huš

19. nov 2019 ob 23:16:44

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.