Esta página aún no se ha traducido para esta versión. Puede ver la versión más reciente de esta página en inglés.

Cuándo ejecutar funciones estadísticas en paralelo

¿Por qué ejecutar en paralelo?

La razón principal para ejecutar cálculos estadísticos en paralelo es ganar velocidad, lo que significa reducir el tiempo de ejecución de su programa o funciones. discute los elementos principales que afectan a la velocidad de los programas o funciones. describe los detalles que pueden provocar que una ejecución paralela dé resultados diferentes a una ejecución en serie.Factores que afectan la velocidadFactores que afectan a los resultados

Nota

Algunas funciones tienen capacidades de computación paralela incorporadas.Statistics and Machine Learning Toolbox™ Ver Computación paralela de inicio rápido paraStatistics and Machine Learning Toolbox. También puede utilizar cualquier función con funciones como bucles.Statistics and Machine Learning ToolboxParallel Computing Toolbox™parfor Para decidir cuándo llamar a funciones en paralelo, tenga en cuenta los factores que afectan a la velocidad y los resultados.

Factores que afectan la velocidad

Algunos factores que pueden afectar a la velocidad de ejecución del procesamiento paralelo son:

  • Configuración del entorno paralelo. Se tarda tiempo en ejecutarse para comenzar a calcular en paralelo.parpool Si su cálculo es rápido, el tiempo de configuración puede exceder cualquier tiempo ahorrado por la computación en paralelo.

  • Sobrecarga paralela. Hay sobrecarga en la comunicación y la coordinación cuando se ejecuta en paralelo. Si las evaluaciones de funciones son rápidas, esta sobrecarga podría ser una parte apreciable del tiempo total de cálculo. Por lo tanto, resolver un problema en paralelo puede ser más lento que resolver el problema en serie. Para ver un ejemplo, véase en Digest, marzo de 2009.Mejorar el rendimiento de optimización con computación paralelaMATLAB®

  • No hay bucles anidados.parfor Esto se describe en. no funciona en paralelo cuando se llama desde dentro de otro bucle.Trabajar con parforparforparfor Si ha programado sus funciones personalizadas para aprovechar el procesamiento en paralelo, la limitación de ningún bucle anidado puede hacer que una función paralela se ejecute más despacio de lo esperado.parfor

  • Cuando se ejecutan en serie, los bucles se ejecutan ligeramente más despacio que los bucles.parforfor

  • Pasar parámetros. Los parámetros se pasan automáticamente a las sesiones de trabajador durante la ejecución de cálculos paralelos. Si hay muchos parámetros, o toman una gran cantidad de memoria, pasar parámetros puede ralentizar la ejecución del cálculo.

  • Contención de recursos: red y computación. Si el grupo de trabajadores tiene un ancho de banda bajo o una latencia alta, el cálculo paralelo puede ser lento.

Factores que afectan a los resultados

Algunos factores pueden afectar a los resultados al utilizar el procesamiento en paralelo. Es posible que necesite ajustar el código para que se ejecute en paralelo, por ejemplo, necesita bucles independientes y los trabajadores deben poder tener acceso a las variables. Algunos factores importantes son:

  • Variables persistentes o globales. Si alguna de las funciones utiliza variables persistentes o globales, estas variables pueden tomar valores diferentes en diferentes procesadores de trabajo. El cuerpo de un bucle no puede contener declaraciones de variables globales o persistentes.parfor

  • Acceso a archivos externos. El orden de los cálculos no se garantiza durante el procesamiento paralelo, por lo que se puede acceder a los archivos externos en orden impredecible, lo que conduce a resultados impredecibles. Además, si varios procesadores intentan leer un archivo externo simultáneamente, el archivo puede bloquearse, lo que lleva a un error de lectura y detener la ejecución de la función.

  • Las funciones no computacionales, como, y, pueden comportarse mal cuando se usan en sus funciones personalizadas.inputplotkeyboard No utilice estas funciones en un bucle, ya que pueden hacer que un trabajador no responda, ya que está esperando la entrada.parfor

  • no permite ni declaraciones.parforbreakreturn

  • Los números aleatorios que utilice pueden afectar a los resultados de sus cálculos. Ver.Reproducibilidad en computaciones estadísticas paralelas

Para obtener consejos sobre la conversión de bucles para usar, consulte.parforParallel for-Loops (parfor) (Parallel Computing Toolbox)