Unified Parallel C ( UPC ) es una extensión del lenguaje de programación C diseñado para computación de alto rendimiento en máquinas paralelas a gran escala , incluidas aquellas con un espacio de direcciones global común ( SMP y NUMA ) y aquellas con memoria distribuida (por ejemplo, clústeres ). Al programador se le presenta un solo espacio de direcciones compartido y particionado, donde las variables pueden ser leídas y escritas directamente por cualquier procesador , pero cada variable está asociada físicamente con un solo procesador. UPC usa un solo programa, múltiples datos (SPMD ) modelo de cálculo en el que la cantidad de paralelismo se fija en el momento de inicio del programa, normalmente con un único hilo de ejecución por procesador.
Paradigma | paralelo , paso de mensajes , imperativo ( procedimental ), estructurado |
---|---|
Diseñada por | Consorcio UPC |
Lanzamiento estable | 2020.12.0 / 11 de diciembre de 2020 |
Disciplina de mecanografía | estático , débil , manifiesto |
SO | Multiplataforma |
Sitio web | upc-lang |
Implementaciones importantes | |
Clang UPC , GNU UPC , compiladores IBM XL UPC , HP UPC , Berkeley UPC , Michigan Tech MuPC , Cray UPC | |
Influenciado por | |
Preprocesador C , AC, Split-C , Paralelo C |
Para expresar paralelismo, UPC extiende ISO C 99 con las siguientes construcciones:
- Un modelo de ejecución explícitamente paralelo
- Un espacio de direcciones compartido (
shared
calificador de almacenamiento) con partes locales de subprocesos (variables normales) - Primitivas de sincronización y modelo de consistencia de memoria
- Primitivas de comunicación explícita, e. gramo. upc_memput
- Primitivas de gestión de memoria
El lenguaje UPC evolucionó a partir de experiencias con otros tres lenguajes anteriores que propusieron extensiones paralelas a ISO C 99: AC, Split-C y preprocesador Parallel C (PCP). UPC no es un superconjunto de estos tres lenguajes, sino más bien un intento de destilar las mejores características de cada uno. UPC combina las ventajas de programabilidad del paradigma de programación de memoria compartida y el control sobre el diseño de datos y el rendimiento del paradigma de programación de paso de mensajes .
Ver también
enlaces externos
- Página web oficial
- UPC en LBNL
- UPC en GWU
- GNU UPC
- Tutorial de la UPC (2003)