PGAS (Partitioned Global Address Space) es un modelo de programación para computación paralela que presenta una abstracción de memoria compartida global, pero con una característica clave: el espacio de direcciones global está lógicamente particionado, y cada partición está asociada a un procesador o nodo específico. Esto significa que cada procesador tiene acceso directo y de baja latencia a su porción 'local' de la memoria global, mientras que puede acceder a la memoria 'remota' de otros procesadores, aunque típicamente con mayor latencia. El modelo PGAS busca combinar la facilidad de programación de la memoria compartida con el rendimiento y la escalabilidad de los sistemas de memoria distribuida, al hacer explícita la localidad de los datos.
PGAS se implementa en el mundo real a través de diversos lenguajes de programación y bibliotecas. Ejemplos notables incluyen Co-Array Fortran (CAF), Unified Parallel C (UPC), Chapel, y X10. Estas herramientas proporcionan construcciones de lenguaje o APIs que permiten a los programadores declarar datos que residen en el espacio de direcciones global y especificar su afinidad con procesadores particulares. A nivel de infraestructura, frameworks como OpenSHMEM y Global Arrays también implementan el modelo PGAS, facilitando la comunicación y sincronización entre procesos que operan sobre un espacio de direcciones global particionado, especialmente en entornos de High-Performance Computing (HPC) y supercomputación.
Para un arquitecto de sistemas, comprender PGAS es crucial al diseñar soluciones para problemas computacionalmente intensivos que requieren paralelismo a gran escala. El modelo PGAS ofrece un equilibrio entre la simplicidad de la programación de memoria compartida y la eficiencia de la memoria distribuida. Permite optimizar el rendimiento al alentar la localidad de los datos, reduciendo la necesidad de comunicación explícita y costosa entre nodos. Sin embargo, el trade-off radica en la complejidad de la gestión de la localidad de los datos: una mala asignación o acceso frecuente a datos remotos puede degradar significativamente el rendimiento. Un arquitecto debe evaluar si la naturaleza del problema (ej. algoritmos con alta localidad de referencia) se alinea bien con PGAS, y considerar los lenguajes y runtimes que mejor soportan este modelo para lograr escalabilidad y eficiencia energética en sistemas distribuidos y HPC.