2012-07-15 14 views
5

Così come MATLAB è come un linguaggio matematico, la sua velocità non è veloce come una come dovrebbe essere. Mi chiedo quali sono le pratiche generali per accelerare l'esecuzione di un codice MATLAB? Ad esempio, so che se invece di eseguire loop si possono eseguire calcoli in formato vettoriale/matrice, vedrà accelerare l'esecuzione del codice.Come velocizzare i codici MATLAB?

Mi chiedo quali sono altri suggerimenti.

risposta

1

È possibile iniziare a rivedere alcuni modi per iniziare a pensare alla vettorizzazione here.
Dopo questo, il PDF dato here, anche se incompleto, fornisce molti idiomi Matlab che danno buone prestazioni.

+1

Il primo collegamento è istruttivo, ma un po 'obsoleto. Usa 'bsxfun' invece di' repmat' – Jonas

+1

I collegamenti sono morti. – npretto

+0

A conferma che i collegamenti sono morti. Capirò cosa fare al riguardo. Sembra che altre persone abbiano votato di più sull'altra risposta in ogni caso –

5

Ecco alcuni suggerimenti di prestazioni di base:

  1. imparare ad usare il profiler per capire quali parti del tuo calcolo sono lente
  2. Limitare le quantità di chiamate di funzioni costose tramite la vettorizzazione
  3. Preassi array gn invece di farle crescere in loop
  4. Usare le funzioni multithreaded (come bsxfun)
  5. utilizzare l'ultima versione di Matlab - ci devono stati guadagni enormi di prestazioni negli ultimi 5 anni
  6. usare gli strumenti in parallelo per multicore e/o elaborazione GPU
  7. Usa algoritmi efficienti
  8. Usare Java o C/C++ codice eventualmente (se l'accelerazione può essere deludente)
2

Installazione Lightspeed.

Recentemente ho attraversato il frustrante processo di installazione di Lightspeed di Tom Minka sul mio Mac. Lungo la strada ho imparato alcune dure lezioni che vale la pena condividere con altri utenti Mac. Il mio sistema ha le seguenti specifiche OS X versione 10.8.5 versione Xcode 4.6.3 Matlab versione 2011a

1) Assicurarsi che Lightspeed è installato su un percorso senza spazi nel nome. Ho fatto l'errore di metterlo in "Library/Application Support/Matlab" che mi ha causato infiniti problemi. In particolare, ha portato allo stesso problema riportato da Tomer Levinboim (levinboim.blogspot.co.nz) con il problema aggiunto che le sue correzioni non risolvono completamente il problema!

2) Leggere le note di Michel Valstar "Compilazione dei file Matlab Mex su un Mac" e installare la patch consigliata da Mathworks (http://www.mathworks.com/matlabcentral/answers/94092). Questa patch applica tutte le modifiche di flag/opzioni necessarie che Levinboim identifica.

3) Modificare le opzioni di riga.COMPFLAGS in install_lightspeed.m di file all'interno della cartella Lightspeed per puntare a:

/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.8.sdk

4) verifica che Matlab il percorso corrente punta alla cartella Lightspeed. Esegui il comando install_lightspeed. Se ha successo, corri test_lightspeed. Ora dovresti avere una versione funzionante di Lightspeed!

5) Le impostazioni del percorso persistono tra una sessione e l'altra, pertanto l'approccio startup.sh suggerito in Read Me sembra non essere necessario su un Mac. Tuttavia, se desideri andare su quella traccia, prima leggi:
Where is startup.m supposed to be? http://obasic.net/set-your-customized-startup-file-for-matlab.