“Conocimiento Programación>C /C + + Programming

¿Qué es la partición dinámica en la programación paralela?

2015/3/8
En la programación paralela, la partición dinámica se refiere a un método para dividir una carga de trabajo entre múltiples procesadores o hilos * durante * la ejecución de un programa, en oposición a la partición estática donde la división se realiza de antemano. El tamaño y la asignación de particiones no se fijan inicialmente, sino que se ajustan en función de las condiciones de tiempo de ejecución y los recursos disponibles.

Aquí hay un desglose de las características clave:

* Asignación de tiempo de ejecución: Las tareas o datos se asignan a los procesadores a medida que estén disponibles o según surja la necesidad. Esto contrasta con la partición estática donde cada procesador conoce su porción asignada desde el inicio.

* Balancio de carga: Un objetivo principal de la partición dinámica es lograr un mejor equilibrio de carga. Si algunos procesadores terminan sus tareas iniciales más rápido que otros, la partición dinámica les permite recoger un nuevo trabajo de un grupo compartido de tareas o datos, evitando el tiempo de inactividad y mejorando el rendimiento general.

* Adaptabilidad: La partición dinámica se adapta bien a cargas de trabajo impredecibles. Si ciertas partes del cálculo tardan inesperadamente más, el sistema puede redistribuir automáticamente la carga de trabajo para aliviar los cuellos de botella.

* Overhead: La flexibilidad de la partición dinámica tiene costo de gastos generales. Administrar el grupo de tareas, la asignación de tareas y el manejo de la sincronización entre procesadores requieren cálculo y comunicación adicionales. Esta sobrecarga debe ser cuidadosamente manejada para garantizar que los beneficios del equilibrio de carga superen el costo.

* Implementación: La partición dinámica a menudo se implementa utilizando técnicas como:

* Trabajar robando: Los procesadores inactivos "roban" tareas de procesadores ocupados.

* colas de tareas: Una cola central o múltiples colas contienen tareas que esperan ser procesadas. Los procesadores obtienen tareas de estas colas.

* Auto-scheduling: Las tareas se asignan a procesadores basados ​​en una heurística simple, a menudo sin coordinación central.

Ejemplo:

Imagine procesar una imagen grande. En la partición estática, puede dividir la imagen en bloques de tamaño igual y asignar cada bloque a un procesador diferente. Sin embargo, si una parte de la imagen es significativamente más compleja de procesar que otros, algunos procesadores podrían terminar mucho antes que otros, lo que lleva al tiempo de inactividad. La partición dinámica permitiría a los procesadores más rápidos asumir tareas de procesamiento de las porciones de procesadores más lentas, mejorando la eficiencia general.

Cuándo usar partición dinámica:

La partición dinámica es ventajosa cuando:

* La carga de trabajo es impredecible o distribuida de manera desigual.

* El tamaño de las tareas varía mucho.

* El número de procesadores o hilos no se conoce de antemano.

* El equilibrio de carga es crucial para el rendimiento.

Cuándo para evitar la partición dinámica:

* La sobrecarga de la gestión de la asignación dinámica supera los beneficios del equilibrio de carga (por ejemplo, para tareas muy pequeñas).

* La carga de trabajo es altamente predecible y distribuida uniformemente, lo que hace que la partición estática sea suficiente.

* El costo de la comunicación entre procesadores es alto.

En esencia, la partición dinámica ofrece una mayor flexibilidad y adaptabilidad que la partición estática, pero requiere una consideración cuidadosa de la sobrecarga involucrada. La mejor opción depende en gran medida de la aplicación específica y sus características.

C /C + + Programming
Cómo desarrollar una hoja de proyecto
Cómo crear un archivo ejecutable de CPP en Windows
Cómo utilizar el comando Scanf en C + +
Cómo eliminar una línea de un archivo en C
¿Cuál es el proceso en el que el código de programación ROM BIOS y a veces copiado a RAM llamado?
Cómo mostrar tantas columnas de GridView
Cómo escribir un programa en C para leer un entero
¿Qué aparece cuando un programa necesita alguna información suya antes de que pueda completar el comando?
Conocimiento de la computadora © http://www.ordenador.online