



(4 opiniones)
En esta sección se tratará el palalelismo a nivel teórico. Como se explica en la sección de introducción, paralelizar los problemas en problemas más sencillos y distribuirlos entre varios procesadores no siempre es una solución conveniente y dependerá en gran medida de la naturaleza de los problemas que se quieran tratar.
Se hablará de programación paralela y los problemas que pueden surgir cuando se trata de utilizar este paradigma. Para ello debe considerarse el sistema sobre el que se programa y se lanzan los programas paralelos: ya sean multiprocesadores o, como será el caso, multicomputadores. Al explicar estos límites que impone la propia arquitectura tendrá que hablarse forzosamente de la ley de Ahmdal así como de otros problemas relativos a la ordenación de instrucciones debido a dependencias.
En general en esta sección se hablará acerca de todos los conceptos que interesan a la hora de programar aplicaciones y hacerlo utilizando de una manera u otra el paralelismo. Se darán diversos ejemplos de programación con openMosix y explicaciones con PVM o MPI y se profundizará en conceptos como la granularidad del paralelismo o el problema de la transparencia en lo que se refiere a la programación.
Velocidad de ejecución rate (R). Mide salidas (outputs) por unidad de tiempo. Según la naturaleza de las salidas, tendremos:
Acceleración (speedup
). Ratio entre el tiempo de una ejecución serie y una paralela.
| (2.1) |
procesador,
Eficiencia (E). Ratio entre la acceleración de una ejecución paralela y el número de procesadores.
| (2.2) |
Redundancia (R). Ratio entre el número de operaciones realizadas utilizando
procesadores en una ejecuciópn paralela y su correspondiente ejecución serie en 1 procesador.
| (2.3) |
Utilización (U). Ratio entre
y el número de operaciones que podrian realizarse utilizando
procesadores en
unidades de tiempo.
![]() |
(2.4) |
I. PRINCIPIO ARMÓNICO PONDERADO
Sea
el tiempo requerido en computar
operaciones de
tipos diferentes, donde cada tipo de operación consiste en
operaciones simples las cuales requieren
segundos cada una para su ejecución. Luego:
y
. Por definición sabemos que
MFlops.
Si definimos:
luego
| (2.5) |
donde
.
Lo importante de esta ecuación es que muestra que una sola operación donde su ejecución no sea equiparable con el resto, en cuanto al tiempo de ejecución, tiene una gran influencia en el rendimiento global del sistema.
II. LEY DE AMDAHL
![]() |
(2.6) |
Para comprender esta ley sería conveniente recuperar la analogía del problema que se planteaba en el primer tema, acerca de la persona que debía colocar los libros en dos partes. En el caso de la ordenación de la biblioteca se llegaba a la conclusión de que era estúpido contratar a 200 personas para que organizasen una biblioteca de 200 ejemplares, por la falta de eficiencia en las operaciones.
El speedup -o mejora de rendimiento - idealmente aumenta linealmente con el número de unidades de procesamiento que posea el sistema. Esto es en un principio cierto, pero estamos contando en todo momento con un programa modelo ideal, sin tener en cuenta la naturaleza de dicho programa. En el caso de programas concretos hemos de contar con la naturaleza del programa, qué pretende solucionar y la manera en la que lo soluciona. Eso permitirá poder dar con la medida real del speedup.
En cualquier programa paralelizado existen dos tipos de código: el código paralelizado y el código secuencial. Como es sabido existen ciertas secciones de código que ya sea por dependencias, por acceso a recursos únicos o por requerimientos del problema no pueden ser paralelizadas. Estas secciones conforman el código secuencial, que debe ser ejecutado por un solo elemento procesador. Es pues lógico afirmar que la mejora de rendimiento de un programa dependerá completamente de:
.
).
Esta es la llamada ley de Amdahl y fue descrita por Gene Amdahl en 1967. Las implicaciones que trae esta ecuación son, a pesar de que no tenga en cuenta las características de cada sistema en concreto:
Supongamos ahora que tenemos un programa que inicialmente no hemos paralelizado, cuyos tiempos de ejecución son 12% y 88%, en serie y en paralelo respectivamente.
![]() |
Como se puede ver en la figura, la parte no paralelizable del código impide que se pueda escalar de forma lineal, llegará un momento que añadir nuevos procesadores no añadirá una ventaja real al sistema, porque todo lo que estará en ejecución será código secuencial. Por lo tanto para maximizar el aprovechamiento de los sistemas paralelos debe tenerse mucho cuidado con la forma de paralelizar las aplicaciones: cuanto más código secuencial tengan, más problemas de escalabilidad.
La ley de Amdahl es un caso particular del Principio Armónico Ponderado, anteriormente descrito. Si recuperamos:
y hacemos
queda
si se igualan
: fracción serie da la forma de la Ec.(
)
.
III. LíMITES DE LA COMPUTACIÓN PARALELA
Un programa paralelo requiere sincronizar las tareas de que se compone. Estas tareas se distribuyen entre los diferentes procesadores del sistema paralelo. La suma de los tiempo de ejecución de estas tareas en un sistema paralelo es más grande que la suma de los tiempos de ejecución en un solo proesador. Esto es debido a diferentes tiempos adicionales de procesamiento (overhead).
Sean:
: granularidad de la tarea. valor medio del tiempo de ejecución de las diferentes tareas.
El tiempo requerido para ejecutar
tareas, cadauna con un tiempo de ejecución
en un solo procesador viene dado por
En un entorno paralelo cada tarea requiere
unidades de tiempo para su ejecución. El tiempo requerido para ejecutar
tareas en
procesadores será pues:
y recuperando el speedup, esta vez siendo el cómputo las
tareas
| (2.7) |
y la eficiencia ahora quedaria determinada como
![]() |
(2.8) |
Los límites de la computación paralela estan reflejados en el cuadro
.
|
|