stringtranslate.com

Paralelismo de tareas

El paralelismo de tareas (también conocido como paralelismo de funciones y paralelismo de control ) es una forma de paralelización de código informático en múltiples procesadores en entornos informáticos paralelos . El paralelismo de tareas se centra en distribuir tareas (realizadas simultáneamente por procesos o subprocesos ) entre diferentes procesadores. A diferencia del paralelismo de datos , que implica ejecutar la misma tarea en diferentes componentes de datos, el paralelismo de tareas se distingue por ejecutar muchas tareas diferentes al mismo tiempo con los mismos datos. [1] Un tipo común de paralelismo de tareas es la canalización , que consiste en mover un único conjunto de datos a través de una serie de tareas separadas donde cada tarea puede ejecutarse independientemente de las demás.

Descripción

En un sistema multiprocesador, el paralelismo de tareas se logra cuando cada procesador ejecuta un subproceso (o proceso) diferente sobre los mismos o diferentes datos. Los subprocesos pueden ejecutar el mismo código o uno diferente. En el caso general, diferentes subprocesos de ejecución se comunican entre sí mientras funcionan, pero esto no es un requisito. La comunicación normalmente se lleva a cabo pasando datos de un hilo al siguiente como parte de un flujo de trabajo . [2]

Como ejemplo simple, si un sistema ejecuta código en un sistema de 2 procesadores ( CPU "a" y "b") en un entorno paralelo y deseamos realizar las tareas "A" y "B", es posible saber La CPU "a" realiza la tarea "A" y la CPU "b" realiza la tarea "B" simultáneamente, reduciendo así el tiempo de ejecución de la ejecución. Las tareas se pueden asignar mediante declaraciones condicionales como se describe a continuación.

El paralelismo de tareas enfatiza la naturaleza distribuida (paralelizada) del procesamiento (es decir, subprocesos), a diferencia de los datos ( paralelismo de datos ). La mayoría de los programas reales se encuentran en algún lugar de un continuo entre el paralelismo de tareas y el paralelismo de datos. [3]

El paralelismo a nivel de subprocesos ( TLP ) es el paralelismo inherente a una aplicación que ejecuta varios subprocesos a la vez. Este tipo de paralelismo se encuentra principalmente en aplicaciones escritas para servidores comerciales , como bases de datos. Al ejecutar muchos subprocesos a la vez, estas aplicaciones pueden tolerar las altas cantidades de E/S y latencia del sistema de memoria en las que pueden incurrir sus cargas de trabajo: mientras un subproceso se retrasa esperando acceso a la memoria o al disco, otros subprocesos pueden realizar un trabajo útil.

La explotación del paralelismo a nivel de subprocesos también ha comenzado a abrirse camino en el mercado de las computadoras de escritorio con la llegada de los microprocesadores multinúcleo . Esto ha ocurrido porque, por diversas razones, se ha vuelto cada vez más impráctico aumentar la velocidad del reloj o las instrucciones por reloj de un solo núcleo. Si esta tendencia continúa, será necesario diseñar nuevas aplicaciones para utilizar múltiples subprocesos a fin de beneficiarse del aumento de la potencia informática potencial. Esto contrasta con innovaciones de microprocesadores anteriores en las que el código existente se aceleraba automáticamente ejecutándolo en una computadora más nueva y más rápida.

Ejemplo

El pseudocódigo siguiente ilustra el paralelismo de tareas:

programa:...si CPU = "a" entonces hacer la tarea "A"de lo contrario, si CPU="b" entonces hacer la tarea "B"terminara si...programa final

El objetivo del programa es realizar una tarea total neta ("A+B"). Si escribimos el código como se indica arriba y lo ejecutamos en un sistema de 2 procesadores, entonces el entorno de ejecución lo ejecutará de la siguiente manera.

Código ejecutado por la CPU "a":

programa:...hacer la tarea "A"...programa final

Código ejecutado por la CPU "b":

programa:...hacer la tarea "B"...programa final

Este concepto ahora se puede generalizar a cualquier número de procesadores.

Ayuda de idioma

El paralelismo de tareas puede ser compatible en lenguajes de propósito general mediante bibliotecas o instalaciones integradas. Ejemplos notables incluyen:

Se pueden encontrar ejemplos de lenguajes detallados de tareas paralelas en el ámbito de los lenguajes de descripción de hardware como Verilog y VHDL .

Ver también

Referencias

  1. ^ Reinders, James (10 de septiembre de 2007). "Comprensión del paralelismo de datos y tareas | ZDNet". ZDNet . Consultado el 8 de mayo de 2017 .
  2. ^ Quinn, Michael J. (2007). Programación paralela en C con MPI y openMP (Tata McGraw-Hill ed.). Nueva Delhi: Pub Tata McGraw-Hill. ISBN 978-0070582019.
  3. ^ Hicks, Michael. "Conceptos básicos de simultaneidad" (PDF) . Universidad de Maryland: Departamento de Ciencias de la Computación . Consultado el 8 de mayo de 2017 .