La programación y computación en Paralelo - 1er Parte

in GEMS2 months ago

Antes de iniciar podemos preguntarnos lo siguiente:

¿Por qué necesitamos la programación paralela?


Las computadoras contemporáneas son paralelas, y hay varias razones para ello. El paralelismo se presenta en tres tipos predominantes diferentes que comparten principios subyacentes comunes. Lo más importante es que el paralelismo puede ayudarnos a resolver problemas computacionales exigentes.


monitor.png
Imagen de Pixabay


Hoy en día, todos los computadores son esencialmente paralelos. Esto significa que dentro de cada computador en funcionamiento siempre existen varias actividades que, de una manera u otra, se ejecutan en paralelo, al mismo tiempo. Las actividades paralelas pueden surgir y llegar a su fin independientemente unas de otras, o bien pueden crearse a propósito para que se realicen simultáneamente varias operaciones cuya interacción conduzca finalmente al resultado deseado.


Informalmente, el paralelismo es la existencia de actividades paralelas dentro de un computador y su uso para lograr un objetivo común.


space.png
Imagen de Pixabay


El paralelismo se encuentra en todos los niveles de la arquitectura de un computador moderno:

  • En primer lugar, el paralelismo está presente en lo más profundo de la microarquitectura del procesador. En el pasado, los procesadores ejecutaban los programas repitiendo el llamado ciclo de instrucciones, una secuencia de cuatro pasos:
  1. leer y descodificar una instrucción;
  2. encontrar los datos necesarios para procesar la instrucción;
  3. procesar la instrucción; y
  4. escribir el resultado.
    Dado que el paso (2) introducía largos retrasos debidos a la llegada de los datos, gran parte de la investigación se centró en diseños que redujeran estos retrasos y, de este modo, aumentaran la velocidad efectiva de ejecución de los programas. Sin embargo, con el paso de los años, el objetivo principal se ha convertido en el diseño de un procesador capaz de ejecutar varias instrucciones simultáneamente. El funcionamiento de un procesador de este tipo permitía detectar y explotar el paralelismo inherente a la ejecución de instrucciones. Estos procesadores permitieron aumentar la velocidad de ejecución de los programas, independientemente de la frecuencia del procesador y de la memoria.
  • En segundo lugar, cualquier computador comercial, tableta y smartphone contiene un procesador con múltiples núcleos, cada uno de los cuales es capaz de ejecutar su propio flujo de instrucciones. Si los flujos están diseñados para que los núcleos colaboren en la ejecución de una aplicación, ésta se ejecuta en paralelo y puede acelerarse considerablemente.
  • En tercer lugar, muchos servidores contienen varios procesadores multinúcleo. Un servidor de este tipo es capaz de ejecutar un servicio en paralelo, y también varios servicios en paralelo.
  • Por último, incluso los computadores de consumo contienen procesadores gráficos capaces de ejecutar cientos o incluso miles de hilos en paralelo. Los procesadores capaces de hacer frente a un paralelismo tan grande son necesarios para soportar la animación gráfica.


web.png
Imagen de Pixabay


Hay muchas razones para que los computadores modernos sean paralelos:

  • En primer lugar, no es posible aumentar las frecuencias del procesador y la memoria de forma indefinida, al menos no con la tecnología actual basada en el silicio. Por lo tanto, para aumentar la potencia de cálculo de los computadores se necesitan nuevos conceptos arquitectónicos y organizativos.
  • En segundo lugar, el consumo de energía aumenta con la frecuencia del procesador, mientras que la eficiencia energética disminuye. Sin embargo, si el cómputo se realiza en paralelo a menor velocidad del procesador, se pueden evitar las implicaciones indeseables del aumento de la frecuencia.
  • Por último, el paralelismo se ha convertido en una parte de cualquier computador y es probable que esto no cambie por simple inercia. sin cambios por simple inercia: el paralelismo se puede hacer y se vende bien.


divider.png
Imagen de Pixabay


Si quedastes fascinado con este apasionante tema de la computación y programación en paralelo, no te pierdasd la proxíma publicación sobre este tema, si deseas ampliar más te invito a leer las siguientes referencias:

  • Atallah, M., Blanton, M. (eds.): Algorithms and Theory of Computation Handbook, Chapman and Hall, Boca Raton (2010).
  • Chandra, R., Menon, R., Dagum, L., Kohr, D., Maydan, D., McDonald, J.: Parallel Programming in OpenMP. Morgan Kaufmann, Burlington (2000).
  • Foster, I.: Designing and Building Parallel Programs: Concepts and Tools for Parallel Software Engineering. Addison-Wesley Longman Publishing Co., Inc, Boston (1995).


Hive.png
cervantes.png

Sort:  

Su post ha sido valorado por @ramonycajal

microscope.jpg