UPCBLASa numerical library for unified parallel C with architecture-aware optimizations

  1. González-Domínguez, Jorge
Supervised by:
  1. Juan Touriño Director
  2. María J. Martín Director

Defence university: Universidade da Coruña

Fecha de defensa: 15 February 2013

Committee:
  1. María Inmaculada García Fernández Chair
  2. Ramón Doallo Secretary
  3. Osni A. Marques Committee member
  4. Enrique Salvador Quintana Ortí Committee member
  5. Francisco Almeida Rodriguez Committee member
Department:
  1. Computer Engineering

Type: Thesis

Teseo: 337137 DIALNET lock_openRUC editor

Abstract

La necesidad de una potencia de cómputo creciente por parte de aplicaciones de diversos campos de la ciencia y la ingeniería o incluso del ocio, ha sido la impulsora de la evolución del computador. La aproximación tradicional para esta evolución ha sido la mejora de tecnologías ya conocidas. Sin embargo, esta aproximación está llegando a su límite físico. Una nueva era ha empezado, caracterizada por los procesadores multinúcleo que habilitan la ejecución de aplicaciones multihilo. La popularidad de los sistemas multinúcleo ha hecho que la programación paralela llegue a ser una tarea de vital importancia para explotar de forma efectiva el hardware y aumentar el rendimiento de las aplicaciones. La programación paralela se realiza tradicionalmente mediante la utilización de bibliotecas de paso de mensajes en memoria distribuida o de construcciones de programación concurrente (barreras, semáforos ...) en memoria compartida. Hoy en día Message Passing Interface (MPI) y Open MultiProcessing (OpenMP) constituyen los estándares de facto para la programación en arquitecturas de memoria distribuida y compartida, respectivamente. Recientemente ha surgido un nuevo modelo de programación, el modelo Partitioned Global Address Space (PGAS), que proporciona importantes ventajas sobre los modelos tradicionales. En el modelo PGAS todos los hilos comparten un espacio de memoria como en el modelo de memoria compartida. Sin embargo, este espacio de memoria está lógicamente particionado entre los diferentes hilos como en el modelo de memoria distribuida. Los lenguajes PGAS consiguen el equilibrio perfecto entre facilidad de uso y explotación de la localidad de los datos. En los ultimos años el modelo PGAS ha estado ganando popularidad, siendo ejemplos representativos de este modelo los lenguajes Unified Parallel C (UPC), Titanium y Co-Array Fortran (CAF). UPC es un lenguaje de programación paralela que surge como una extensión a la especificación estándar del lenguaje C y que está ganando interés y popularidad dentro de la comunidad de High Performance Computing (HPC). UPC fue origi nalmente diseñado para computadores paralelos de gran escala y entornos clúster. Sin embargo, su modelo de programación PGAS lo convierte en una excelente opción para sistemas multinúcleo, en los cuales la memoria principal es físicamente compartida. Hoy en día existen compiladores de UPC disponibles para la mayoría de los sistemas paralelos de los principales fabricantes, así como investigación activa en muchas universidades y centros de investigación en supercomputación. A través de medidas experimentales exhaustivas desarrolladas en trabajos previos, se ha demostrado la viabilidad de UPC frente a otros paradigmas de programación paralela habituales. Además, se ha demostrado también que los códigos UPC pueden conseguir buena escalabilidad en hasta cientos de miles de procesadores siempre que cuenten con el adecuado soporte por parte del compilador y del sistema runtime. Sin embargo, una barrera para una mayor aceptación de UPC por parte de los usuarios es la carencia de bibliotecas de apoyo en este lenguaje para los desarrolladores de algoritmos y aplicaciones. Las rutinas del conjunto Basic Linear Algebra Subprograms (BLAS) proporcionan bloques estándar para realizar operaciones básicas con vectores y matrices. Son utilizadas por cientí¿ficos e ingenieros para conseguir buenos rendimientos en arquitecturas monoprocesador. Las rutinas SparseBLAS son una versión reducida de las BLAS para matrices y vectores dispersos, los cuales introducen patrones de acceso irregulares. Las Parallel Basic Linear Algebra Subprograms (PBLAS) y las Parallel Sparse Basic Linear Algebra Subprograms (PSBLAS) son una implementación de las BLAS y las SparseBLAS, respectivamente, para computación paralela, las cuales han sido desarrolladas para facilitar a los usuarios la programación en arquitecturas de memoria distribuida. Sin embargo, no existen versiones paralelas en UPC. En la actualidad existe una creciente tendencia a desarrollar códigos que tengan en cuenta el sistema en el que están siendo ejecutados para realizar optimizaciones de forma automática. Entre las diferentes arquitecturas paralelas, la optimización de aplicaciones en los clusters de sistemas multinúcleo presenta un importante desafío ya que poseen una arquitectura de memoria híbrida (distribuida/compartida) con latencias de comunicaciones no uniformes. Además, accesos concurrentes a la misma caché o al mismo módulo de memoria desde distintos núcleos pueden conducir a una pérdida de ancho de banda a memoria. Esta Tesis Doctoral, "UPCBLAS: A Numerical Library for Unified Parallel C with Architecture-Aware Optimizations", nace del intento de impulsar la utilización y expansión de los lenguajes PGAS (especialmente de UPC) aportando a los actuales y futuros programadores una biblioteca de computación numÉrica paralela, UPCBLAS. La biblioteca contiene un subconjunto de rutinas BLAS (las más utilizadas por sus usuarios) con una interfaz basada en las características de UPC y centrada en aumentar la programabilidad de este lenguaje, sin comprometer excesivamente por ello el rendimiento. Precisamente con el fin de mejorar el rendimiento de las rutinas numéricas, esta Tesis Doctoral también ha llevado al desarrollo de Servet, una herramienta que detecta mediante benchmarks de forma automática un conjunto de parámetros hardware muy útiles para optimizar el rendimiento de los códigos paralelos. De hecho, las rutinas de UPCBLAS usarán automáticamente la interfaz proporcionada por Servet para reducir sus tiempos de ejecución. Por último, esta Tesis proporciona una evaluación experimental detallada de la biblioteca, así como ejemplos prácticos de su uso.