jueves, 6 de febrero de 2014

Parallel Computing on any Desktop

Esta semana leímos el texto: Parallel Computing on any desktop, escrito por Ami Marowka, y que fue puestos en la revista Communications of the ACM a mediados de septiembre del año 2007.

Este artículo nos habla acerca de la evolución del paralelismo en cuestión de accesibilidad a las personas, así como algunas técnicas actuales que hay y los retos que existen en esta área de la computación.

Primero nos comenta que en última década del siglo XX era muy difícil acceder a este tipo de tecnologías ya que era muy cara. Sólo empresas enormes o centros de investigación y universidades financiadas por gobiernos eran capaces de poder trabajar con paralelismo. Pero luego vino una revolución en el sentido de que se hicieron más baratos los precios de computadoras con tecnología para hacer paralelismo. Esto se debió a los Beowulf. 
Después nos menciona que 2005 fue un año muy importante para esta tecnología. Se obtuvieron formas de obtener paralelismo teniendo hardware y software con las características necesarias. Para el hardware, entraron en acción fabricantes como Intel y AMD creando procesadores multinúcleos. En la parte del software entró OpenMP. Con la entrada de estas tecnologías, se empezó un cambio que ahora es inevitable. 

Lo más atractivo de los procesadores multinúcleo es que son de bajo precio. El inicio de esto fueron los dual-core, pero ahora se están haciendo procesadores de 4, 8 y hasta 16 núcleos. Todo esto implica un cambio de era en la programación.
Todo este nuevo hardware nos lleva a tener que aprender a explotar o aprovechar todo estos recursos para hacer nuestros programas mejor. Un programa en paralelo es más difícil que uno secuencial. Por ello se han creado ya muchas librerías como OpenMp, mencionada ya. 

En conclusión, estamos ante una nueva realidad donde los programadores tenemos que saber usar todas estas herramientas para tener mejores soluciones en nuestros trabajos.

The free lunch is over

Este es la primera entrada de este blog y les comentaré acerca de un artículo que leí llamado "The Free Lunch Is Over: A Fundamental Turn Toward Concurrency in Software”, escrito por Herb Sutter y publicado en  la revista Dr. Dobb's Journal de marzo del 2005.

En este artículo se habla acerca de la adopción que se está teniendo de los procesadores multinúcleo y las soluciones de software que se buscan.

Se habla de que la programación multinúcleo es la nueva revolución en esta época. La anterior fue la programación orientada a objetos. 

Y esta revolución trae un cambio en las responsabilidades de los programadores. Antes, el programador no se tenía que preocupar por optimizar sus programas, ya que gracias a la Ley de Moore los procesadores irían incrementando de transistores y con ello el software aprovecharía esos recursos. 
Pero llegamos a un momento donde la Ley de Moore ya no se está cumpliendo porque al estar aumentando transistores, el calor producido por el procesador ya no seguro.
Por ello, se pensó en una alternativa: los procesadores multinúcleo y técnicas como hyperthreading. 
Con esto, estamos ante un nuevo reto y es el de lograr explotar todos los nuevos recursos que tenemos disponibles en las computadoras. 
Aprender paralelismo es la clave. Ahora los programadores tendremos que preocuparnos por crear algoritmos más complejos que nos permiten dividir el trabajo entre threads, ya que tenemos que preocuparnos por bugs tan complicados cuando se implementa paralelismo como condiciones de carrera, deadlocks, starvation, etc.

En conclusión, veo que este artículo es un aviso para muchos programadores y nos dice que tenemos que hacer el cambio lo más pronto posible y aprender a manejar estas nuevas tecnologías. 
El paralelismo ofrece nuevas área de oportunidad para la investigación y suena muy interesante el hecho de que el mayor reto es crear compiladores que automáticamente traduzcan código y permita que se ejecute en paralelo.

Presentación

Hola, soy Moisés Olmedo, estudio ISC en 8o semestre y mis expectativas para este curso incluyen entender a fondo cómo funcionan los programas concurrentes y paralelos, que siempre el desarrollo de sistemas usando estas tecnologías son difíciles de entender.
Yo me dedico a hacer apps para iPhone y Android, y últimamente hay mucha tendencia a procesos asíncronos y paralelos en estos dispositivos, así que siento que este curso me puede ayudar mucho.

Me gusta mucho el cine, la ciencia en general y entender lo que pasa en el mundo, como un buen ingeniero.