2012-07-15 19 views
5

Tan grande como MATLAB es como lenguaje matemático, su velocidad no es tan rápida como una. Me pregunto cuáles son las prácticas generales para acelerar la ejecución de un código MATLAB. Por ejemplo, sé que si en lugar de correr en bucles se pueden realizar cálculos en formato vector/matriz, se acelerará la ejecución del código.¿Cómo acelerar los códigos MATLAB?

Me pregunto cuáles son otras sugerencias.

Respuesta

1

Es posible comenzar a revisar algunas maneras de comenzar a pensar en la vectorización here.
Después de eso, el PDF dado here, aunque incompleto, proporciona muchos modismos Matlab que dan un buen rendimiento.

+1

El primer enlace es instructivo, pero algo obsoleto. Use 'bsxfun' en lugar de' repmat' – Jonas

+1

Los enlaces están muertos. – npretto

+0

Ouch Confirmo que los enlaces están muertos. Sabré qué hacer al respecto. Parece que otras personas votaron más en la otra respuesta de todos modos –

4

Si estás haciendo una gran cantidad de operaciones de fácil paralelizables, parfor se paralelizar automáticamente los bucles for: http://www.mathworks.com/help/toolbox/distcomp/parfor.html

+0

Solo tenga en cuenta que en algunas condiciones particulares los bucles 'parfor' pueden ser incluso más lentos que los bucles normales 'for'. –

5

Éstos son algunos consejos básicos de actuación:

  1. aprender a usar el generador de perfiles de Entienda qué partes de su cálculo son lentas
  2. Limite las cantidades de costosas llamadas a funciones a través de la vectorización
  3. Preassi matrices gn en lugar de crecer en bucles
  4. Uso de las funciones de subprocesos múltiples (como bsxfun)
  5. Utilice la última versión de Matlab - no tienen sido mejoras de rendimiento tremendos en los últimos 5 años
  6. Use la caja de herramientas paralelo para múltiples núcleos y/o procesamiento de la GPU
  7. Use algoritmos eficientes
  8. uso Java o C/C++ código en su caso (aunque la aceleración puede ser decepcionante)
2

Instalación de Lightspeed.

He estado recientemente a través del proceso de la frustración de la instalación de Lightspeed de Tom Minka en mi Mac. En el camino, aprendí algunas lecciones difíciles de compartir con otros usuarios de Mac. Mi sistema tiene las siguientes especificaciones OS X versión 10.8.5 versión Xcode 4.6.3 Matlab versión 2011a

1) Asegúrese de que Lightspeed está instalado en un camino sin espacios en su nombre. Cometí el error de ponerlo dentro de "Library/Application Support/Matlab", lo que me causó problemas sin fin. En particular, condujo al mismo problema informado por Tomer Levinboim (levinboim.blogspot.co.nz) con el problema adicional de que sus soluciones no resolvieron completamente el problema.

2) Lea las notas de Michel Valstar "Compilación de archivos de Matlab Mex en una Mac" e instale el parche recomendado de Mathworks (http://www.mathworks.com/matlabcentral/answers/94092). Este parche aplica todos los cambios de bandera/opción necesarios que identifica Levinboim.

3) Cambiar las options.COMPFLAGS de línea en el install_lightspeed.m archivo dentro de la carpeta de velocidad de la luz para que apunte a:

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

4) En cheque Matlab que la ruta actual apunta a la carpeta Lightspeed. Ejecute el comando install_lightspeed. Si tiene éxito, ejecute test_lightspeed. ¡Ahora debería tener una versión funcional de Lightspeed!

5) La configuración de ruta persiste entre las sesiones, por lo que el enfoque de startup.sh sugerido en el archivo Léame parece ser innecesario en una Mac. Sin embargo, si desea ir por esa pista, primero lea:
Where is startup.m supposed to be? http://obasic.net/set-your-customized-startup-file-for-matlab.