Sunday, November 22, 2015

Teaching the SIMD Execution Model

Teaching the SIMD Execution Model: Assembling a Few Parallel  Programming Skills es el artículo que nos tocó leer esta vez. Este artículo fue escrito por Ariel Ortiz que es nuestro profesor para esta materia. El artículo habla acerca de la importancia de utilizar SIMD (Single instruction Multiple Data) en cursos de programación multinucleo.
Es un modelo un poco de entender en su totalidad ya que tiene una complejidad bastante alta a comprada a lo que estamos acostumbrado como utilizar los fork/join en java o lo visto en javascript con los web workers. Incluso Erlang que es un sistema bastante difícil de entender, tienen un modelo de paralelismo bastante fácil de entender. SIMD es principalmente en código de ensamblador y es el último tema que nosotros vimos en la materia, debo decir que no es nada fácil pero te puedes dar cuenta de muchas cosas acerca del proceso y ordenamiento que se debe realizar a estar trabajando en código de ensamblador.
Es muy interesante SIMD ya que puede ayudarte a optimizar muchos problemas que se utilizan en paralelismo. En el curso nos mostró algunos ejemplos Ariel de esto y fue bastante interesante ver que en puro código C contra optimización por código ensamblador, pudimos ver que la diferencia de tiempos de procesamiento eran absolutamente increíbles al utilizar código de ensamblador.
Aunque los ejemplos que vimos eran muy padres y estaban bastante bien implementados en código de ensamblador, hay varios casos en los que utilizarlo no es del todo fácil e incluso podrían ser poco eficientes en su utilización.

SIMD es un modelo que les da mucho control a los programadores y que una vez que uno sabe cómo utilizarlo correctamente, podría traer muchas ventajas para la optimización de problemas y dentro del mundo del paralelismo puede ser incluso una mejora.

No comments:

Post a Comment