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.