Cum este matlabul modern?

MATLAB combină un limbaj ușor de învățat cu calcule de mare viteză. Care este rezultatul unei astfel de viteze? Ce ar trebui să fac pentru a scrie un program foarte rapid pe MATLAB? În cele din urmă, există o alternativă demnă la MATLAB în rândul software-ului liber? Vom încerca acum să răspundem la toate aceste întrebări.

MATLAB a apărut la sfârșitul anilor '70 ca limbă de scriere și învelitoare asupra funcțiilor bibliotecilor de algebră liniară LINPACK și EISPACK. Particularitatea MATLAB-ului este aceea că tipul de bază (și de atunci singurul) de date din el este o matrice, nu un număr. Datorită acestui fapt, a fost posibilă salvarea înregistrărilor operațiilor de matrice din cicluri, făcându-le mai compacte și similare celor matematice. Pe de altă parte, utilizarea celor mai moderne biblioteci la acel moment a asigurat o mare viteză a calculelor. Toate acestea au contribuit la creșterea rapidă a popularității MATLAB.

Cum este matlabul modern?

Înmulțirea unei matrici cu un număr scris în moduri diferite

De atunci au trecut mai mult de treizeci de ani. De-a lungul anilor, MATLAB a scris zeci de cărți, a devenit una dintre limbile standard pentru calculele științifice și tehnice. Simplitatea relativă a limbii și viteza mare a calculelor efectuate cu ea au fost conservate și rămân în continuare părți atractive ale pachetului. Dar din cauza a ceea ce este realizat? Cum este MATLAB-ul modern?

Ca și înainte, MATLAB "sub capotă" are cele mai moderne biblioteci matematice. Acum este: Intel Math Kernel Library (MKL) pentru operații algebra liniară și Intel Integrated Performance Primitives Library (IPPL) pentru optimizarea procesării imaginilor. MKL include, în special, bibliotecile: BLAS. realizând operațiile de bază vector-matrice și LAPACK - dezvoltarea modernă a LINPACK - care conține rezolvarea problemelor de algebră liniară. Prin urmare, nu este surprinzător faptul că MATLAB depășește orice cod "de casă" care implementează operațiile vector-matrice în termeni de viteză. De asemenea, el împiedică în mod confidențial pachetele care utilizează alte implementări ale BLAS și LAPACK.

Faptul că MKL și IPPL utilizarea și SSE AVX - seturi de instrucțiuni pentru un procesor care implementează calcul paralel, în cazul în care este necesar să se efectueze aceeași secvență de operații pe diferite date (SIMD). Aceasta duce la o creștere semnificativă a performanței și fără efort din partea utilizatorului.

În plus, MATLAB utilizează probabil SSE / AVX și în funcțiile nucleului său, care sunt implementate în C. Cel puțin pentru dezvoltarea pachetului, MathWorks utilizează Intel Parallel Studio XE. care include un compilator C / C ++.

În mod curios, pe computerele cu procesoare AMD, MATLAB folosește și biblioteci dezvoltate de Intel, deși AMD și-a implementat biblioteca cu capabilități similare - AMD Core Math Library (ACML).

Astfel, grăbirea biblioteci foarte optimizate MATLAB (Intel), paralelizare implicit (care este, de asemenea, un merit Intel) și configurat să utilizeze aceste avantaje, funcțiile kernel (Mathworks). Nu putem ști exact gradul de influență al fiecăruia dintre factori, în plus, ele pot varia de la versiune la versiune și de la platformă la platformă.

Cum este matlabul modern?

Determinarea versiunilor bibliotecilor utilizate de MATLAB utilizând funcția de versiune

Pentru a utiliza în mod eficient aceste oportunități, trebuie să "vectorizezi" programul, adică să înlocuiți utilizarea ciclurilor cu operațiuni pe matrice ca întreg, realizate de funcțiile MATLAB rapide.

Un scurt rezumat al acestor cerințe, precum și sfaturi pentru vectorizarea programului, pot fi obținute din Codul MATLAB de scriere rapidă. o mai detaliată și până la data de informații - blog-nedocumentate Matlab Yair Altman sau în paginile cărții sale „Accelerarea MATLAB Performance“ - cel mai detaliat la ghidul de date pentru a optimiza programele MATLAB. Apropo, utilizarea funcției de versiune de mai sus se aplică și în cazul caracteristicilor nedocumentate ale pachetului.

Ca o alternativa mai ieftina poate fi folosit MATLABu Python c biblioteci NumPy / SciPy și instalate MKL. În acest caz, în loc de compilatorul MITLAB JIT, Numba sau Cython sunt folosite. Numeroase teste, rezultatele care pot fi găsite pe internet (cum ar fi aceasta), se spune că o grămadă de MATLAB și Python + SciPy dau rezultate foarte similare în viteză, astfel încât în ​​prim plan capacitatea de programator și cunoștințele sale de caracteristicile unui anumit pachet.

Versiune imprimabilă

În plus față de bibliotecile matematice ale Python, există două scripturi gratuite specializate: Octave și Saylab, ambele cu propriile limbi în spiritul Matlab și cu comunități active de dezvoltatori (în primul caz). Octave nu este la fel de elaborat ca Matlab și fără multe utilități ale acestuia din urmă, dar matematicienii și procesoarele digitale de semnal sunt în general lăudați.

Octave și Scilab au o circulație destul de limitată, deoarece majoritatea proiectelor serioase și companiile au bani pentru Matlab. Se dovedește un cerc paradoxal încurcat; Ca urmare, pachetele gratuite cu propriile limbi de scriptare nu se răspândesc și coroporativ, mai degrabă scump Matlab câștigă. Cu Python-lea - este o altă problemă, Python a intrat în circulație largă, de aceea pachetele sunt mai populare, deși Python - este, în general Scripter destul de lent în reîncarnare CPython.

Distribuția sa este PyPy, care este lăudată pentru viteză și spune că standardul de limbă în sine este exact ceea ce implementează. Problema este că PyPy este dezvoltat de un grup mult mai mic, cu o implicare mult mai slabă a companiilor mari, adică încrederea în calitatea interpretului este mai mică. Pagina de la Cythona pretinde că ele adaugă ceva în limbaj fără a trece printr-o procedură standard, care nu este gud.

Majoritatea proiectelor și companiilor serioase au bani pentru Matlab. Se dovedește un cerc paradoxal încurcat; Ca rezultat, nu sunt primite pachete gratuite cu propriile limbi de scripting. [Etc]

Ahaha! Nu există vrăjitorie, este corect: cu mult timp în urmă există un Matlab rupt.

"Pe lângă bibliotecile matematice ale lui Python."

Este important ca Intel MKL să fie folosit în cadrul acestor biblioteci. Alte medicamente tind să fie mai lente.

"deși Python este, în general, un scripter destul de lent în reîncarnarea lui CPython"

Matlab a fost de asemenea lent, până când a primit un compilator JIT.

Articolul nu se potrivește cu totul. Aș adăuga: 1) Pentru utilizatorii Windows, există Python (x, y) - un set de câteva zeci de biblioteci științifice cu un instalator convenabil. 2) Există MKL pentru Scilab și sunt destul de libere. Dar Matlab vs. teste. Scilab + MKL încă nu am condus.

Cum este matlabul modern?

Cum este matlabul modern?

Cum este matlabul modern?

Cum este matlabul modern?

Cum este matlabul modern?

Cum este matlabul modern?

Subiecte fierbinți

Recomandate în Categorii

Cu această citire

Rămâi cu noi

Cum este matlabul modern?

Nu pierdeți știrile și articolele importante de la KV.by! Înscrieți-vă pentru notificările noastre.

comunitate