stringtranslate.com

Paralelismo implícito

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

Los lenguajes de programación con paralelismo implícito incluyen Axum , BMDFM , HPF , Id , LabVIEW , MATLAB M-code , NESL , SaC , SISAL , ZPL y pH. [1]

Ejemplo

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

números = [ 0 1 2 3 4 5 6 7 ]; resultado = pecado ( 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 o la comunicación de procesos, sino que se centra en el problema que su programa pretende resolver. El paralelismo implícito generalmente facilita el diseño de programas paralelos y por lo tanto resulta en una mejora sustancial de la productividad del programador.

Muchas de las construcciones necesarias para respaldar esto también añaden simplicidad o claridad incluso en ausencia de un 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 el paralelismo implícito, los lenguajes efectivamente tienen que proporcionar construcciones útiles a los usuarios simplemente para soportar la funcionalidad requerida (un lenguaje sin un bucle for decente , por ejemplo, es uno que pocos programadores usarán).

Desventajas

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

Un problema mayor es que cada programa tiene alguna lógica paralela y serial. La E/S binaria, por ejemplo, requiere soporte para operaciones en serie como Write()y Seek(). Si se desea un paralelismo implícito, esto crea un nuevo requisito para que las construcciones y las palabras clave admitan código que no se puede enhebrar 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. ^ Seif Haridi (14 de junio de 2006). "Introducción". Tutorial de Oz . Archivado desde el original el 14 de mayo de 2011 . Consultado el 20 de septiembre de 2007 .