Reseña del libro: Principios de la programación paralela - Calendae | Informática, Electrónica, CMS, Ciberseguridad

Reseña del libro: Principios de la programación paralela

Hola, un placer verte por aquí. Te escribe Simón Sánchez y hoy vamos a hablar sobre Reseña del libro: Principios de la programación paralela

En Principles of Parallel Programming (Addison Wesley, 2008), Lawrence Snyder y Calvin Lin han creado un libro que es útil tanto para estudiantes como para nuevos profesionales. El texto asume que los lectores ya tienen una comprensión de los principios básicos de la informática (cómo escribir un programa secuencial correcto, los conceptos básicos de la complejidad algorítmica, etc.) y, desde esa base, proporcionan un tratamiento en profundidad de los principios fundamentales de la programación paralela.

A medida que avanzan, Lin y Snyder tienen cuidado de vincular los principios con el panorama actual de hardware y software paralelo, incluidas discusiones sobre temas actuales como GPU, procesador celular y lenguajes desarrollados como parte del proyecto de sistemas informáticos de alta productividad de DARPA. El texto se basa en los fundamentos de la informática de una manera que mantendrá a los lectores seguros a medida que avanzan en el texto, mientras mantiene la energía y el ritmo rápido. El resultado es un libro fresco, práctico y pragmático que hace que la lectura sea atractiva e incluso divertida.

Principles of Parallel Programming asume que el paralelismo está en todas partes y los programadores exitosos, ya sea que estén escribiendo software para los dos núcleos en una computadora de escritorio típica o para los 130,000 núcleos en Roadrunner, deben entender cómo aprovechar este paralelismo. los

Los tres primeros capítulos sientan las bases de la programación paralela. los

Algo que realmente aprecio de este libro es que es franco y directo: el

Podríamos resolver el problema de la portabilidad simplemente estableciendo un nivel de abstracción lo suficientemente alto como para no hacer visible ninguna de estas diferencias; luego, un compilador mapeará la especificación de alto nivel a la plataforma. La estrategia hará que nuestros programas sean insensibles al hardware paralelo, pero esa no es una buena idea. En general, aunque los compiladores pueden hacer el mapeo, normalmente introducirán capas de software para implementar abstracciones; el software agregado oculta las características de rendimiento del hardware, lo que dificulta a los programadores saber cómo se comporta su código. No podemos separarnos completamente del hardware subyacente si queremos un alto rendimiento.

Aquí vemos que son capaces de mantener la conversación honesta sobre las tensiones entre la portabilidad y el rendimiento sin atascarse en las minucias de lenguajes o hardware individuales específicos (aunque veremos los detalles más adelante). A lo largo de este libro

A continuación se muestra una breve revisión del hardware que incluye todas las principales versiones de hardware paralelo disponibles actualmente. La revisión de hardware es un excelente ejemplo de uno de los verdaderos sellos distintivos de este libro: su actualidad. Las discusiones sobre hardware, lenguajes, bibliotecas, compiladores y aplicaciones en este libro se enfocan en lo que está disponible en la comunidad hoy, convirtiéndolo en un recurso muy práctico para las personas que ya están fuera de la escuela y necesitan comprender la estructura del paisaje moderno. paralelo en contexto. Los ejemplos utilizados incluyen chips multinúcleo Intel y AMD, Sun Fire E25K, procesador Cell, HP Cluster Platform 6000 y Blue Gene.

Como el

Los programas rápidos tienden a maximizar el número de referencias a la memoria local y minimizar el número de referencias a la memoria no local.

Como otro ejemplo:

Los programas paralelos son más escalables cuando enfatizan los bloques de cálculo (por lo general, cuanto más grande es el bloque, mejor), lo que minimiza las dependencias entre subprocesos.

Este enfoque se utiliza a lo largo del libro para generalizar principios ampliamente aplicables que han sido motivados por una discusión de alto nivel (pero eficaz) de los detalles de varios casos de ejemplo individuales.

Lin y Snyder también señalan un buen método científico y enfoques sólidos para la programación y las pruebas. Por ejemplo, en las discusiones sobre desempeño en los Capítulos 3 y 11, se presta mucha atención a la medición de la velocidad, qué se mide (aumento de velocidad, aumento de velocidad aérea, aumento de velocidad, etc.) y cómo informar el resultado de manera que que otros estudien sus medidas entiendan claramente cómo se recopilaron esos números y lo que significan. Esta es una práctica de programación sólida, que da como resultado un comportamiento ético del programador.

Una vez que se colocan los cimientos, el

En este punto, Synder y Lin han establecido una base de principios, rendimiento y bloques de construcción de aplicaciones escalables. La siguiente fase del libro examina los lenguajes disponibles para que los programadores traduzcan esos conceptos en código de trabajo. En una serie de cuatro capítulos, presentan los principales atributos y características de rendimiento de los lenguajes de subprocesos (incluidos POSIX, Java y OpenMP), MPI (y otros lenguajes de visualización locales como Co-array Fortran) y lenguajes de visualización globales como ZPL. Esta sección se cierra con un capítulo que examina los lenguajes como grupo, evaluándolos en términos de su capacidad para permitir que el desarrollador piense en el rendimiento y garantice la corrección al crear código escalable y portátil.

El libro se cierra con una mirada a las direcciones futuras en ambos idiomas y hardware, trayendo algunas de las direcciones más recientes derivadas del esfuerzo de HPCS de DARPA y otras, e incluye algunas notas clave del proyecto útiles para aquellos que puedan usar el texto. como parte de una clase.

Los principios de la programación paralela son un recurso particularmente valioso para los profesionales emergentes de HPC, y aquellos que todavía están en la escuela o solo recientemente en el lugar de trabajo encontrarán mucho aquí que pondrán lo que ya han aprendido sobre una base sólida e intensamente práctica. El libro es honesto y atractivo y, a lo largo del libro, el

Principles también es muy oportuno, ya que compara y contrasta las características de la mayoría de las principales plataformas de hardware y software que los programadores paralelos probablemente encontrarán en sus carreras en la actualidad. Esta puntualidad también significa que estas partes del libro envejecen y se vuelven irrelevantes con el tiempo, reduciendo parte de su atractivo. Espero que el

los

En algunos lugares me he encontrado queriendo más referencias que las

El libro se centra en la escalabilidad, el rendimiento y la portabilidad, pero esta discusión tiende a basarse en el supuesto de que el objetivo final es el mejor rendimiento de la máquina que se utiliza. Existe cierta preocupación sobre el grado en que una abstracción particular apoya la capacidad del desarrollador para razonar sobre la corrección y estas otras cantidades, pero la productividad o eficiencia del programador no es un tema central para este libro (a pesar del grado en que un programa escalable con rendimiento portátil respalda la productividad del programador al evitar futuros cambios en el código fuente). Esto no es necesariamente un problema, pero es algo a tener en cuenta.

Principios de la programación paralela

No te olvides compartir en tu Facebook para que tus colegas lo vean

??? ? ? ???

Comparte