Serie – Programación Paralela
Hace poco me han planteado una duda/reto sobre un algoritmo en el que había que tener en cuenta una programación paralela.
A lo largo de esta serie de post intentaré poner en orden mis ideas sobre la programación paralela para intentar dar solución al problema planteado.
Pero antes…
¿Que es la programación paralela?
Un dispositivo con una unidad de procesamiento (ordenador, móvil, consola, router, etc..) no es mas que un hardware (aparato) que mediante un software (aplicación o código) ejecuta (realiza) una serie de instrucciones u ordenes. La realización de estas instrucciones en un determinado orden es lo que se denomina programa informático.
Cuando se empieza en esto de la programación se utiliza como símil un típico plato español, la tortilla de patata.
Cuando hacemos una tortilla de patata hacemos una serie de pasos en un orden concreto, estando claro que para freír las patatas primero hay que pelaras y cortarlas, y que para echar el huevo, primero hay que batirlo y ante hay que cascar los huevos.
En la programación paralela nos encontramos en la situación en la que no hay una única unidad que procesa instrucciones, lo que nos permitirá agilizar el trabajo final. Llevando esto al símil anterior, ahora tenemos a nuestros amigos/as para ayudarnos en la preparación de nuestro plato.
¿Y porqué me ha de importar la programación en paralelo?
Hombre, dependerá de si eres programador o usuario de la informática, así que:
Si eres usuario y te gustan por ejemplo los video juegos, has de saber que la programación paralela está muy presente. ¿Te imaginas ponerte a jugar a un juego de acción en primera persona y que por cada pulsación del mando tuvieses que esperar a que el resto del entorno se moviese? Es cierto que los procesadores actuales ejecutan millones de instrucciones por segundo, pero los juegos actuales necesitan cientos de millones de instrucciones para poder ejecutarse. Bueno quizás no tantas…
¿Y si eres programador? Tendrías que saber que en una máquina moderna y de muy bajo presupuesto, disponemos de al menos 2 cores en la CPU y si ademas tienes una tarjeta gráfica 3D mas o menos buena, dispondrás de otro número considerable de núcleos.
Cada núcleo o core, podrá ejecutar instrucciones paralelas, lo que te permitirá agilizar tu código. Eso sí, tu código tiene que estar pensado y programado para ejecutarse en este sentido.
A lo largo de esta serie, intentaré montar un sistema para la ejecución de código paralelo. Espero no morir en el intento y que sea interesante para vosotros.