Hogyan van a modern matlab?
A MATLAB egy könnyen megtanulható nyelvet ötvözi a nagysebességű számításokkal. Mi az eredménye az ilyen sebességnek? Mit kell tennem ahhoz, hogy egy nagyon gyors programot írjak a MATLAB-ra? Végül, van-e méltó alternatíva a MATLAB-nak a szabad szoftverek között? Most megpróbálunk válaszolni ezekre a kérdésekre.
A MATLAB az 1970-es évek végén forgatónyelvként és a LINPACK és az EISPACK lineáris algebrai könyvtárak funkcióit átfedő csomagolásként jelent meg. A MATLAB sajátossága az, hogy az alap (és abban az időben az egyetlen) adat típusa mátrix, nem szám. Ennek köszönhetően sikerült menteni a mátrix műveletek rekordját a ciklusoktól, kompaktabbá és matematikusabbá téve. Másrészt a legmodernebb könyvtárak használata akkoriban biztosította a számítások nagy sebességét. Mindez hozzájárult a MATLAB népszerűségének gyors növekedéséhez.
A mátrix szorzása különböző módon írt számmal
Azóta több mint harminc év telt el. Az évek során a MATLAB több tucat könyvet írt, így a tudományos és műszaki számítások egyik szabványos nyelvévé vált. A nyelv viszonylagos egyszerűsége és vele végzett számítások nagy sebességével megmaradtak, és továbbra is vonzó részei maradtak a csomagnak. De miért érte el ezt? Milyen a modern MATLAB?
Mint korábban, a MATLAB "a motorháztető alatt" rendelkezik a legmodernebb matematikai könyvtárakkal. Jelenleg az Intel Math Kernel Library (MKL) a lineáris algebrai műveletekhez és az Intel Integrated Performance Primitives Libraryhez (IPPL) a képfeldolgozás optimalizálásához. Az MKL különösen a könyvtárakat tartalmazza: BLAS. az alapvektor-mátrix műveletek megvalósítása és a LAPACK - a lineáris algebrai problémák LINPACK-tartalmú megoldóinak modern kifejlesztése. Ezért nem meglepő, hogy a MATLAB minden olyan "házi készítésű" kódot elhagy, amely vektor-mátrix műveleteket hajt végre a sebesség szempontjából. Ezenkívül magabiztosan megkerüli azokat a csomagokat, amelyek a BLAS és a LAPACK más implementációit használják.
A kérdés az, hogy az MKL és az IPPL SSE és AVX utasításkészleteket használnak a processzorhoz, amelyek párhuzamos számítást végeznek, abban az esetben, ha ugyanazt a műveletsort kell végrehajtani különböző adatokon (SIMD). Ez jelentős javulást eredményez a teljesítményben és a felhasználó részéről.
Ezenkívül a MATLAB valószínűleg az SSE / AVX-t és a rendszermag funkcióit használja a C-ban. Legalább a csomag fejlesztése érdekében a MathWorks az Intel Parallel Studio XE-t használja. amely tartalmaz egy C / C ++ fordítót.
Érdekes módon az AMD processzorokkal rendelkező számítógépeken a MATLAB az Intel által kifejlesztett könyvtárakat is használ, bár az AMD hasonló funkciókkal - AMD Core Math Library (ACML) - hajtotta végre a könyvtárat.
Így a MATLAB sebessége nagymértékben optimalizált könyvtárakból (Intel), implicit párhuzamosságból (ami szintén Intel hitel) áll, és úgy van konfigurálva, hogy kihasználja a rendszermag funkciókat (MathWorks). Nem tudjuk pontosan az egyes tényezők befolyásának mértékét, emellett eltérhetnek a verziótól a verziótól és a platformtól a platformig.
A MATLAB által használt könyvtárak verzióinak meghatározása a verzió függvény segítségével
E lehetőségek hatékony kihasználása érdekében "vektorizálni" kell a programot, vagyis cserélni kell a ciklusok működését a tömbön, mint egészet, amelyeket a gyors MATLAB funkciók valósítanak meg.
Egy rövid összefoglaló ezeknek a követelményeknek, valamint tippeket vektorizációs programok állnak rendelkezésre az írás Fast MATLAB kód. részletesebb és naprakész információ - blog dokumentált Matlab Yair Altman vagy az oldalakon könyvében: „Gyorsuló MATLAB teljesítmény” - a legrészletesebb eddig útmutató, hogy optimalizálja MATLAB programokat. Egyébként a fenti verziófüggvény használata a csomag nem dokumentált tulajdonságaira is vonatkozik.
Mivel olcsóbb lehet használni MATLABu Python c könyvtárak numpy / SciPy és a telepített MKL. Ebben az esetben a MITLAB JIT fordító, a Numba vagy a Cython helyett. Számos vizsgálat, melynek eredményeit megtalálható az interneten (mint ez), azt mondják, hogy egy csomó MATLAB és Python + SciPy hasonló eredményt adnak a sebességet úgy, hogy a mellső képes a programozó és a tudása a jellemzőket a csomagot.
Nyomtatható verzió
A Python matematikai könyvtárain kívül két specializált szkript is létezik: az Octave és a Saylab, mindkettő saját nyelvükön a Matlab szellemében és a fejlesztők aktív közösségeivel (az első esetben). Az Octave nem annyira bonyolult, mint a Matlab és anélkül, hogy utóbbinak sok segédlete lenne, de a matematikusokat és a digitális jelfeldolgozókat általában dicsérik.
Az Octave és a Scilab meglehetősen korlátozott forgalomban vannak, mert a komoly projektek nagy része és a cégek pénzhez jutnak a Matlab számára. Kiderül, hogy paradox módon elkápráztatott kör; Ennek eredményeképpen a saját szkriptnyelvekkel rendelkező ingyenes csomagok nem jutnak elterjedt és korpóratív, meglehetősen költséges Matlab-hoz. A Python-nál egy másik dolog, a Python széleskörű forgalomba került, ezért a csomagok népszerűbbek, bár a Python általában elég lassú karakter a CPython reinkarnációjában.
Másik disztribúciója a PyPy, amelyet dicsérnek a sebességre, és azt mondja, hogy maga a nyelvi szabvány pontosan az, amit megvalósít. A probléma az, hogy a PyPy-t egy sokkal kisebb csoport fejlesztette ki, amely nagyvállalatok sokkal gyengébb bevonásával jár együtt. a tolmács minõségében való bizalom kevesebb. A Cythona oldal azt állítja, hogy hozzáadnak valamit a nyelvhez anélkül, hogy egy szokásos eljáráson keresztül járna, ami nem gud.
A komoly projektek és cégek többsége pénzt keres a Matlab számára. Kiderül, hogy paradox módon elkápráztatott kör; Ennek eredményeként nem kapnak ingyenes csomagokat a saját szkriptnyelven. [Etc.]
Ahaha! Nincs boszorkányság, ez minden fair: régen van egy törött Matlab.
"A Python matematikai könyvtárai mellett."
Itt fontos, hogy az Intel MKL ezeket a könyvtárakat használja. Az egyéb gyógyszerek általában lassabbak.
"bár a Python általában meglehetősen lassú szkript a CPython reinkarnációjában"
A Matlab is lassú volt, amíg meg nem kap egy JIT fordítót.
A cikk nem illik mindent. Ehhez hozzátenném: 1) A Windows felhasználóknak van python (x, y) - több tucat tudományos könyvtár, amely kényelmes telepítővel rendelkezik. 2) Vannak MKL a Scilab számára és teljesen ingyenesek. De a Matlab vs tesztek. Scilab + MKL Még nem végeztek.
Forró téma
A kategóriákban szerepelnek
Ezzel olvasni
Maradj velünk
Ne hagyja ki a fontos hírek és cikkek a KV.by! Jelentkezzen be értesítéseinkre.