Computación paralela

La versión actual de la página aún no ha sido revisada por colaboradores experimentados y puede diferir significativamente de la versión revisada el 5 de octubre de 2014; las comprobaciones requieren 12 ediciones .

La computación paralela  es una forma de organizar la computación informática , en la que los programas se desarrollan como un conjunto de procesos informáticos que interactúan y funcionan en paralelo (simultáneamente). El término abarca todos los problemas de paralelismo en la programación , así como la creación de implementaciones de hardware eficientes . La teoría de la computación paralela es una sección de la teoría aplicada de los algoritmos [1] .

Hay varias formas de implementar la computación paralela. Por ejemplo, cada proceso informático se puede implementar como un proceso del sistema operativo , o los procesos informáticos pueden ser un conjunto de subprocesos de ejecución dentro de un único proceso del sistema operativo. Los programas paralelos pueden ejecutarse físicamente ya sea secuencialmente en un solo procesador  , alternando a su vez los pasos de ejecución de cada proceso computacional, o en paralelo, asignando uno o más procesadores (ubicados cerca o distribuidos en una red informática ) a cada proceso computacional.

La principal dificultad en el diseño de programas paralelos es asegurar la secuencia correcta de interacciones entre diferentes procesos de cómputo, así como la coordinación de recursos compartidos entre procesos.

Formas de sincronizar la comunicación paralela

En algunos sistemas de programación concurrente, el paso de datos entre componentes está oculto para el programador (por ejemplo, mediante el uso del mecanismo de promesa ), mientras que en otros debe especificarse explícitamente. Las interacciones explícitas se pueden dividir en dos tipos:

Los sistemas paralelos basados ​​en mensajería suelen ser más fáciles de entender que los sistemas de memoria compartida y generalmente se consideran un método superior de programación paralela. Existe una amplia variedad de teorías matemáticas para el estudio y análisis de los sistemas de paso de mensajes, incluido el modelo de actor y varios tipos de cálculo de procesos . La mensajería se puede implementar de manera efectiva en multiprocesadores simétricos tanto con memoria coherente compartida como sin ella.

El paralelismo de memoria distribuida y el paralelismo de paso de mensajes tienen diferentes características de rendimiento. Por lo general (pero no siempre), la sobrecarga de la memoria de proceso y el tiempo de cambio de tareas es menor para los sistemas con paso de mensajes, pero el paso de mensajes en sí es más sobrecarga que las llamadas a procedimientos. Estas diferencias a menudo son anuladas por otros factores que afectan el rendimiento.

Por supuesto, en tal sistema, también es posible usar el método de paso de mensajes exclusivamente, es decir, ejecutar un proceso separado en cada procesador de cada nodo. En este caso, la cantidad de procesos (e hilos) será igual a la cantidad de procesadores en todos los nodos. Este método es más simple (en un programa paralelo, solo necesita aumentar la cantidad de procesos), pero es menos eficiente, ya que los procesadores de un mismo nodo intercambiarán mensajes entre sí como si estuvieran en diferentes máquinas [5] .

Tareas típicas que permiten la computación paralela

Herramientas de software de concurrencia

Véase también

Notas

  1. Mikhalevich, 1989 , p. una.
  2. Libro rojo, 1999 , pág. una.
  3. Libro rojo, 1999 , pág. 2.
  4. Libro rojo, 1999 , pág. 5.
  5. Libro rojo, 1999 , pág. cuatro

Literatura

Enlaces