Rendimiento de MATLAB
Optimice el rendimiento del código de MATLAB
Optimice el rendimiento del código de MATLAB
El motor de ejecución de MATLAB®, que se introdujo en la versión R2015a, utiliza la compilación JIT para acelerar todo el código de MATLAB. La compilación JIT genera código nativo de nivel de máquina que está optimizado tanto para el código de MATLAB como para hardware específico. La arquitectura del motor de ejecución permite optimizaciones adicionales con cada versión, incluidas llamadas más rápidas a funciones integradas y operaciones de indexación más rápidas. Además, muchas funciones básicas de MATLAB usan implícitamente varios subprocesos para aumentar el rendimiento.
El rendimiento de MATLAB se mide con un conjunto de puntos de referencia, que abarcan tanto operaciones unitarias como aplicaciones completas que representan flujos de trabajo de usuario reales. Esos puntos de referencia se ejecutan varias veces durante un ciclo de lanzamiento de MATLAB en diferentes sistemas operativos y plataformas de hardware para validar las nuevas optimizaciones, detectar y abordar regresiones de rendimiento, e identificar problemas específicos en el sistema operativo.
Para obtener información sobre mejoras de rendimiento específicas, consulte las notas de la versión de MATLAB. Desde el lanzamiento de MATLAB R2019b, las notas de la versión sobre rendimiento incluyen medidas sobre las mejoras en tiempo de ejecución comparado con las versiones anteriores de MATLAB.
El primer paso para aumentar el rendimiento del código es identificar cuellos de botella. Por ejemplo, puede:
tic
, toc
y timeit
Utilizar MATLAB Profiler para identificar qué partes del programa tardan más en ejecutarseUna vez que haya identificado los cuellos de botella, podrá utilizar prácticas de programación conocidas para acelerar la ejecución del código. Dos de las técnicas más utilizadas son la preasignación de arrays y la vectorización. La preasignación puede aumentar el rendimiento evitando la asignación dinámica de memoria. La vectorización permite evitar bucles al operar en todos los elementos de un vector en un único comando. En conjunto, ambas técnicas pueden acelerar el código en varios órdenes de magnitud.
Si es necesario, puede aumentar el rendimiento escribiendo en lenguaje compilado las partes de la aplicación que requieran alta carga computacional. En MATLAB, las funciones MEX permiten invocar código C, C++ o Fortran de alto rendimiento al igual que las funciones integradas de MATLAB. Con MATLAB Coder™, puede convertir automáticamente el código de MATLAB en archivos MEX, que se pueden ejecutar mucho más rápido.
Puede resolver problemas de uso intensivo de datos o que requieren alta carga computacional mediante el cálculo paralelo para acceder explícitamente a todos los recursos de hardware. Puede aprovechar la funcionalidad para escalar a varios procesos, varios subprocesos y varias GPU, todo con la familiaridad y la facilidad de uso de MATLAB. También puede desarrollar y ejecutar código en un único equipo, y escalar la ejecución a un cluster de proceso o a la nube sin necesidad de volver a escribir código.
Más información