Articulo de referencia

Paralelismo implícito

En informática , el paralelismo implícito es una característica de un lenguaje de programación que permite al compilador o intérprete explotar automáticamente el paralelismo inh...

En informática , el paralelismo implícito es una característica de un lenguaje de programación que permite al compilador o intérprete explotar automáticamente el paralelismo inherente a los cálculos expresados ​​por algunas de las construcciones del lenguaje. Un lenguaje puramente paralelo implícitamente no necesita directivas, operadores ni funciones especiales para habilitar la ejecución paralela, a diferencia del paralelismo explícito .

Los lenguajes de programación con paralelismo implícito incluyen Axum , Binary Modular Dataflow Machine (BMDFM), High Performance Fortran (HPF), Id , LabVIEW , MATLAB M-code, NESL , Single Assignment C (SAC), Streams and Iteration in a Single Assignment Language ( SISAL ), Z-level programming language (ZPL) y pH. [ 1 ]

Ejemplo

Si un problema dado implica realizar la misma operación en un grupo de números (como tomar el seno o el logaritmo de cada uno por turno), un lenguaje que proporciona paralelismo implícito podría permitir escribir la instrucción de la siguiente manera:

números = [ 0 1 2 3 4 5 6 7 ]; resultado = sen ( números );

El compilador o intérprete puede calcular el seno de cada elemento de forma independiente, distribuyendo el esfuerzo entre varios procesadores si están disponibles.

Ventajas

Un programador que escribe código implícitamente paralelo no necesita preocuparse por la división de tareas ni la comunicación entre procesos, sino que puede centrarse en el problema que su programa pretende resolver. El paralelismo implícito generalmente facilita el diseño de programas paralelos y, por lo tanto, se traduce en una mejora sustancial de la productividad del programador.

Muchas de las construcciones necesarias para lograr esto también aportan simplicidad o claridad, incluso en ausencia de paralelismo real. El ejemplo anterior, de comprensión de listas en la sin()función, es una característica útil en sí misma. Al utilizar paralelismo implícito, los lenguajes se ven obligados a proporcionar estas construcciones útiles a los usuarios simplemente para admitir la funcionalidad requerida (un lenguaje sin un bucle `for` adecuado , por ejemplo, es uno que pocos programadores utilizarán).

Desventajas

Los lenguajes con paralelismo implícito reducen el control que un programador tiene sobre la ejecución paralela de un programa, lo que a veces resulta en una eficiencia paralela subóptima . Los creadores del lenguaje Oz también señalan que sus primeros experimentos con paralelismo implícito demostraron que este dificultaba la depuración y hacía que los modelos de objetos fueran innecesariamente engorrosos. [ 2 ]

Un problema mayor es que todo programa tiene lógica paralela y serial. La entrada/salida binaria (E/S), por ejemplo, requiere soporte para operaciones seriales como Write()y Seek(). Si se desea paralelismo implícito, esto crea un nuevo requisito para las construcciones y palabras clave que admitan código que no se puede encadenar ni distribuir.

Notas

  1. ^ Nikhil, Rishiyur; Arvind (20 de febrero de 2024). Programación paralela implícita en pH . Editores Morgan Kaufmann. ISBN 978-1-55860-644-9.
  2. Haridi, Seif (14 de junio de 2006). "Introducción". Tutorial de Oz (Informe). Archivado del original el 14 de mayo de 2011. Recuperado el 20 de septiembre de 2007 .