stringtranslate.com

Espacio de direcciones global particionado

En informática , el espacio de direcciones global particionado ( PGAS ) es un paradigma de modelo de programación paralela . PGAS se caracteriza por operaciones de comunicación que involucran una abstracción del espacio de direcciones de memoria global que está particionado lógicamente, donde una parte es local para cada proceso, subproceso o elemento de procesamiento . [1] [2] La novedad de PGAS es que las porciones del espacio de memoria compartida pueden tener afinidad por un proceso particular, explotando así la localidad de referencia para mejorar el rendimiento. Un modelo de memoria PGAS se presenta en varios lenguajes y bibliotecas de programación paralela, que incluyen: Coarray Fortran , Unified Parallel C , Split-C, Fortress , Chapel , X10 , UPC++, Coarray C++, Global Arrays , DASH y SHMEM . El paradigma PGAS es ahora una parte integrada del lenguaje Fortran , a partir de Fortran 2008 , que estandarizó los coarrays.

Los distintos lenguajes y bibliotecas que ofrecen un modelo de memoria PGAS difieren ampliamente en otros detalles, como el lenguaje de programación base y los mecanismos utilizados para expresar el paralelismo. Muchos sistemas PGAS combinan las ventajas de un estilo de programación SPMD para sistemas de memoria distribuida (como los empleados por MPI ) con la semántica de referencia de datos de los sistemas de memoria compartida. A diferencia del paso de mensajes , los modelos de programación PGAS ofrecen frecuentemente operaciones de comunicación unilateral como el acceso remoto a memoria (RMA), mediante el cual un elemento de procesamiento puede acceder directamente a la memoria con afinidad a un proceso diferente (potencialmente remoto), sin participación semántica explícita por parte del proceso. proceso objetivo pasivo. PGAS ofrece más eficiencia y escalabilidad que los enfoques tradicionales de memoria compartida con un espacio de direcciones plano, porque la localidad de datos específica del hardware puede exponerse explícitamente en la partición semántica del espacio de direcciones.

Una variante del paradigma PGAS, el espacio de direcciones global particionado asíncrono ( APGAS ) aumenta el modelo de programación con facilidades para la creación de tareas asíncronas tanto locales como remotas. [3] Dos lenguajes de programación que utilizan este modelo son Chapel y X10 .

Ejemplos

Ver también

enlaces externos

Referencias

  1. ^ Almasi, George. "Lenguajes PGAS (espacio de direcciones global particionado)". Enciclopedia de computación paralela, Springer, (2011): 1539-1545. https://doi.org/10.1007/978-0-387-09766-4_210
  2. ^ Cristian Coarfă; Yuri Dotsenko; John Mellor-Crummey, "Una evaluación de los lenguajes del espacio de direcciones globales: Co-Array Fortran y Unified Parallel C"
  3. ^ Tim Stitt, "Introducción al modelo de programación del espacio de direcciones global particionado (PGAS)"
  4. ^ Numrich, RW, Reid, J., Co-array Fortran para programación paralela. Foro ACM SIGPLAN Fortran 17(2), 1–31 (1998).
  5. ^ J. Reid: Coarrays en el próximo estándar Fortran. Foro SIGPLAN Fortran 29(2), 10–27 (julio de 2010)
  6. ^ GCC wiki, soporte de Coarray en gfortran como se especifica en el estándar Fortran 2008
  7. ^ W. Chen, D. Bonachea, J. Duell, P. Maridos, C. Iancu, K. Yelick. Un análisis de rendimiento del compilador UPC de Berkeley 17ª Conferencia Internacional Anual sobre Supercomputación (ICS), 2003. https://doi.org/10.1145/782814.782825
  8. ^ Tarek El-Ghazawi, William Carlson, Thomas Sterling y Katherine Yelick. UPC: programación de memoria compartida distribuida. John Wiley e hijos, 2005.
  9. ^ Consorcio UPC, Especificaciones de biblioteca y lenguaje UPC, v1.3, Informe técnico del laboratorio nacional Lawrence Berkeley LBNL-6623E, noviembre de 2013. https://doi.org/10.2172/1134233
  10. ^ Bradford L. Chamberlain, Chapel, Modelos de programación para computación paralela, editado por Pavan Balaji, MIT Press, noviembre de 2015.
  11. ^ John Bachan, Scott B. Baden, Steven Hofmeyr, Mathias Jacquelin, Amir Kamil, Dan Bonachea, Paul H. Hargrove, Hadia Ahmed. "UPC++: Un marco de comunicación de alto rendimiento para la computación asincrónica", en el 33.º Simposio internacional de procesamiento distribuido y paralelo del IEEE (IPDPS'19), del 20 al 24 de mayo de 2019. https://doi.org/10.25344/S4V88H
  12. ^ TA Johnson: Coarray C ++. Actas de la Séptima Conferencia Internacional sobre Modelos de Programación PGAS. págs. 54–66. PGAS'13 (2013),
  13. ^ Nieplocha, Jaroslaw; Harrison, Robert J.; Littlefield, Richard J. (1996). Arreglos globales: un modelo de programación de acceso a memoria no uniforme para computadoras de alto rendimiento. La revista de supercomputación. 10 (2): 169–189.
  14. ^ K. Furlinger, C. Glass, A. Knupfer, J. Tao, D. Hunich y col. DASH: Estructuras de datos y algoritmos con soporte para localidad jerárquica. Talleres de procesamiento paralelo Euro-Par (2014).
  15. ^ P. Charles, C. Grothoff, V. Saraswat, C. Donawa, A. Kielstra y otros. X10: un enfoque orientado a objetos para la computación en clústeres no uniforme. Actas de la vigésima conferencia anual ACM SIGPLAN sobre programación, sistemas, lenguajes y aplicaciones orientados a objetos (OOPSLA'05) (2005).
  16. ^ Katherine Yelick, Paul Hilfinger, Susan Graham, Dan Bonachea, Jimmy Su, Amir Kamil, Kaushik Datta, Phillip Colella y Tong Wen, "Lenguajes paralelos y compiladores: perspectiva desde la experiencia del titanio", Revista internacional de aplicaciones de informática de alto rendimiento , 1 de agosto de 2007, 21(3):266-290
  17. ^ Katherine Yelick, Susan Graham, Paul Hilfinger, Dan Bonachea, Jimmy Su, Amir Kamil, Kaushik Datta, Phillip Colella, Tong Wen, "Titanium", Encyclopedia of Parallel Computing, editado por David Padua, (Springer: 2011) Páginas: 2049 -2055
  18. ^ Culler, DE, Dusseau, A., Goldstein, SC, Krishnamurthy, A., Lumetta, S., Von Eicken, T. y Yelick, K. Programación paralela en Split-C. En Supercomputing'93: Actas de la conferencia ACM/IEEE de 1993 sobre supercomputación (págs. 262-273). IEEE.
  19. ^ Bonachea D, Hargrove P.GASNet-EX: una biblioteca de comunicación portátil de alto rendimiento para procedimientos de lenguajes a exaescala y compiladores para computación paralela (LCPC'18). Octubre de 2018. https://doi.org/10.25344/S4QP4W