37
ecnicas SuperEscalares en la Paralelizaci´ on de Bibliotecas de Computaci´ on Matricial sobre Procesadores Multin´ ucleo y GPUs Enrique S. Quintana-Ort´ ı [email protected] High Performance Computing & Architectures Group Universidad Jaime I de Castell´ on Santiago de Compostela – Enero, 2009 ecnicas SuperEscalares para Computaci´ on Matricial Paralela 1

Técnicas SuperEscalares en la Paralelización de …T ecnicas SuperEscalares en la Paralelizaci on de Bibliotecas de Computaci on Matricial sobre Procesadores Multinucleo y GPUs Enrique

  • Upload
    others

  • View
    3

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Técnicas SuperEscalares en la Paralelización de …T ecnicas SuperEscalares en la Paralelizaci on de Bibliotecas de Computaci on Matricial sobre Procesadores Multinucleo y GPUs Enrique

Tecnicas SuperEscalares en la Paralelizacion deBibliotecas de Computacion Matricial sobre

Procesadores Multinucleo y GPUs

Enrique S. Quintana-Ortı[email protected]

High Performance Computing & Architectures GroupUniversidad Jaime I de Castellon

Santiago de Compostela – Enero, 2009

Tecnicas SuperEscalares para Computacion Matricial Paralela 1

Page 2: Técnicas SuperEscalares en la Paralelización de …T ecnicas SuperEscalares en la Paralelizaci on de Bibliotecas de Computaci on Matricial sobre Procesadores Multinucleo y GPUs Enrique

En colaboracion con:

UJI UT-Austin BSC/UPC

S. Barrachina Ernie Chan R. M. BadiaM. Castillo Robert van de Geijn J. R. HerreroF. D. Igual Field G. Van Zee J. LabartaM. Marques J. M. PerezR. MayoG. Quintana-Ortı

Tecnicas SuperEscalares para Computacion Matricial Paralela 2

Page 3: Técnicas SuperEscalares en la Paralelización de …T ecnicas SuperEscalares en la Paralelizaci on de Bibliotecas de Computaci on Matricial sobre Procesadores Multinucleo y GPUs Enrique

Computacion Matricial

Problemas principales Fuentes de problemas grandes

Sistemas lineales

Ax = b Aeronautica: BEM

Valores propios

Ax = λx Quımica computacional

Valores singulares

A = UΣV T Minerıa de datos

Tecnicas SuperEscalares para Computacion Matricial Paralela 3

Page 4: Técnicas SuperEscalares en la Paralelización de …T ecnicas SuperEscalares en la Paralelizaci on de Bibliotecas de Computaci on Matricial sobre Procesadores Multinucleo y GPUs Enrique

Computacion Matricial

Problemas principales Algoritmos

Sistemas lineales

Ax = b Factorizaciones LU, QR y de Cholesky

Valores propios

Ax = λx Algoritmos QR y de Jacobi

Valores singulares

A = UΣV T Factorizaciones SVD, QRP

Tecnicas SuperEscalares para Computacion Matricial Paralela 4

Page 5: Técnicas SuperEscalares en la Paralelización de …T ecnicas SuperEscalares en la Paralelizaci on de Bibliotecas de Computaci on Matricial sobre Procesadores Multinucleo y GPUs Enrique

Bibliotecas de Computacion Matricial

Persiguiendo a la arquitectura HPC del momento. . .

ISA vectoriales Memoria cache Memoria distribuida

Tecnicas SuperEscalares para Computacion Matricial Paralela 5

Page 6: Técnicas SuperEscalares en la Paralelización de …T ecnicas SuperEscalares en la Paralelizaci on de Bibliotecas de Computaci on Matricial sobre Procesadores Multinucleo y GPUs Enrique

Bibliotecas de Computacion Matricial

Persiguiendo a la ¿arquitectura HPC del momento?

La Ley de Moore sigue vigente, pero. . .

1 No es posible seguir aumentando la frecuencia de losprocesadores por problemas de disipacion del calor

2 No hay mas paralelismo disponible a nivel de instruccion

3 La latencia de acceso a memoria no ha cambiadosignificativamente

Tecnicas SuperEscalares para Computacion Matricial Paralela 6

Page 7: Técnicas SuperEscalares en la Paralelización de …T ecnicas SuperEscalares en la Paralelizaci on de Bibliotecas de Computaci on Matricial sobre Procesadores Multinucleo y GPUs Enrique

Bibliotecas de Computacion Matricial

Persiguiendo a la ¿arquitectura HPC del momento?

Aceleradores hardware:

Procesadores multinucleo:

Tecnicas SuperEscalares para Computacion Matricial Paralela 7

Page 8: Técnicas SuperEscalares en la Paralelización de …T ecnicas SuperEscalares en la Paralelizaci on de Bibliotecas de Computaci on Matricial sobre Procesadores Multinucleo y GPUs Enrique

Bibliotecas de Computacion Matricial

Problemas y retos

Escalabilidad Cientos de nucleos

Localidad Accesos fuera del chip muy costosos

Heterogeneidad Chips heterogeneos

Coste Reescribir de nuevo las bibliotecas

Tecnicas SuperEscalares para Computacion Matricial Paralela 8

Page 9: Técnicas SuperEscalares en la Paralelización de …T ecnicas SuperEscalares en la Paralelizaci on de Bibliotecas de Computaci on Matricial sobre Procesadores Multinucleo y GPUs Enrique

Bibliotecas de Computacion Matricial

Tecnicas SuperEscalares en la Paralelizacion de Bibliotecas deComputacion Matricial sobre Procesadores Multinucleo y GPUs:

Ejecucion fuera de orden dirigida por las dependencias dedatos (data-flow parallelism)

Uso de caches (software) para ocultar la existencia de espaciosde direcciones distribuidos y la latencia del sistema dememoria (incluido el disco):

Distributed Shared MemoryPrefetch inteligente

Tecnicas SuperEscalares para Computacion Matricial Paralela 9

Page 10: Técnicas SuperEscalares en la Paralelización de …T ecnicas SuperEscalares en la Paralelizaci on de Bibliotecas de Computaci on Matricial sobre Procesadores Multinucleo y GPUs Enrique

Factorizacion de Cholesky

Para una matriz A→ n× n simetrica definida positiva, calcular

A = L · LT

con el factor de Cholesky L→ n× n triangular inferior

Primer paso en la solucion de sistemas de ecuaciones lineales

Ax = b ≡ (LLT )x = bLy = b ( y)LTx = y ( x)

Tecnicas SuperEscalares para Computacion Matricial Paralela 10

Page 11: Técnicas SuperEscalares en la Paralelización de …T ecnicas SuperEscalares en la Paralelizaci on de Bibliotecas de Computaci on Matricial sobre Procesadores Multinucleo y GPUs Enrique

Factorizacion de Cholesky

Algoritmo (por bloques): A =

A00 A01 A02 A03

A10 A11 A12 A03

A20 A21 A22 A03

A30 A31 A32 A33

Tecnicas SuperEscalares para Computacion Matricial Paralela 11

Page 12: Técnicas SuperEscalares en la Paralelización de …T ecnicas SuperEscalares en la Paralelizaci on de Bibliotecas de Computaci on Matricial sobre Procesadores Multinucleo y GPUs Enrique

Paralelismo de Flujo de Datos

Ejecucion fuera de orden dirigidapor las dependencias de datos (data-flow parallelism)

Objetivo: Aumentar el grado de paralelismo durante la ejecucion delos algoritmos de computacion matricial

Tecnicas SuperEscalares para Computacion Matricial Paralela 12

Page 13: Técnicas SuperEscalares en la Paralelización de …T ecnicas SuperEscalares en la Paralelizaci on de Bibliotecas de Computaci on Matricial sobre Procesadores Multinucleo y GPUs Enrique

Paralelismo de Flujo de Datos

Codigo escalar: Procesador superescalar:

loop: ld f0, 0(r1)

addd f4, f0, f2

sd f4, 0(r1)

addi r1, r1, #8

subi r2, r2, #1

bnez r2, loop

Las etapas IF e ID se ejecutan en orden, pero la etapa ISSpuede proceder posiblemente fuera de orden:

Se respeta el orden de las instrucciones que tienendependencias de datos (RAW) entre sı. . .pero las que no presentan dependencias pueden reordenarse

Tecnicas SuperEscalares para Computacion Matricial Paralela 13

Page 14: Técnicas SuperEscalares en la Paralelización de …T ecnicas SuperEscalares en la Paralelizaci on de Bibliotecas de Computaci on Matricial sobre Procesadores Multinucleo y GPUs Enrique

Paralelismo de Flujo de Datos

¿Algo similar para codigos de computacion matricial?

Factorizacion de Cholesky: A = L · LT

for (k = 0; k < nt; k++){

chol_dpotrf(A[k,k]); // Akk = Lkk*Lkk^T

for (i=k+1; i<nt;i++)

chol_dtrsm(A[k,k], A[i,k]); // Aik = Aik*Lkk^-T

for (i=k+1; i<nt;i++){

for (j=k+1; j<i; j++)

chol_dgemm(A[i,k], A[j,k], A[i,j]); // Aij = Aij-Aik*Ajk^T

chol_dsyrk(A[i,k], A[i,i]); // Aii = Aii-Aik*Aik^T

}

}

Paralelizacion software frente a hardware

Objetivo son los multiples nucleos del procesador, no lasunidades funcionales

Paralelismo a nivel de tarea/hebra frente a paralelismo a nivelde instruccion

Tecnicas SuperEscalares para Computacion Matricial Paralela 14

Page 15: Técnicas SuperEscalares en la Paralelización de …T ecnicas SuperEscalares en la Paralelizaci on de Bibliotecas de Computaci on Matricial sobre Procesadores Multinucleo y GPUs Enrique

Paralelismo de Flujo de Datos

Los bloques leıdos/escritos en la operacion determinan lasdependencias, del mismo modo que ocurre con los operandos delas instrucciones de un codigo escalar:

loop: ld f0, 0(r1) for (k = 0; k < nt; k++){

addd f4, f0, f2 chol_dpotrf(A[k,k]); // Akk = Lkk*Lkk^T

sd f4, 0(r1) for (i=k+1; i<nt;i++)

addi r1, r1, #8 chol_dtrsm(A[k,k], A[i,k]); // Aik = Aik*Lkk^-T

... ...

Las dependencias entre bloques de una operacion matricial definenun arbol de tareas:

Tecnicas SuperEscalares para Computacion Matricial Paralela 15

Page 16: Técnicas SuperEscalares en la Paralelización de …T ecnicas SuperEscalares en la Paralelizaci on de Bibliotecas de Computaci on Matricial sobre Procesadores Multinucleo y GPUs Enrique

Paralelismo de Flujo de Datos

Codigo por bloques: Procesador multinucleo:

for (k = 0; k < nt; k++){

chol_dpotrf(A[k,k]);

for (i=k+1; i<nt;i++)

chol_dtrsm(A[k,k], A[k,i]);

...

}

¿Como generamos el arbol de tareas?

¿Que debemos tener en cuenta para ejecutar las tareas delarbol?

Tecnicas SuperEscalares para Computacion Matricial Paralela 16

Page 17: Técnicas SuperEscalares en la Paralelización de …T ecnicas SuperEscalares en la Paralelizaci on de Bibliotecas de Computaci on Matricial sobre Procesadores Multinucleo y GPUs Enrique

Paralelismo de Flujo de Datos

Run-time

Compuesto por dos etapas (parcialmente solapables):

Decodificacion (ID): Generacion del arbol de tareas medianteel analisis simbolico del codigo

Emision (ISS): Ejecucion del arbol de tareas consciente de lasdependencias y de la arquitectura

Tecnicas SuperEscalares para Computacion Matricial Paralela 17

Page 18: Técnicas SuperEscalares en la Paralelización de …T ecnicas SuperEscalares en la Paralelizaci on de Bibliotecas de Computaci on Matricial sobre Procesadores Multinucleo y GPUs Enrique

Paralelismo de Flujo de Datos

Etapa de decodificacion

Analisis simbolico del codigo

Codigo por bloques: Arbol de tareas:

for (k = 0; k < nt; k++){

chol_dpotrf(A[k,k]);

for (i=k+1; i<nt;i++)

chol_dtrsm(A[k,k], A[k,i]);

...

}

Tecnicas SuperEscalares para Computacion Matricial Paralela 18

Page 19: Técnicas SuperEscalares en la Paralelización de …T ecnicas SuperEscalares en la Paralelizaci on de Bibliotecas de Computaci on Matricial sobre Procesadores Multinucleo y GPUs Enrique

Paralelismo de Flujo de Datos

Etapa de emision

Ejecucion real de las operaciones codificadas en las tareas

Planificacion temporal de las tareas en funcion de lasdependencias

Asignacion espacial de tareas a nucleos consciente de lahistoria (localidad espacial de datos)

Arbol de tareas: Procesador multinucleo:

Tecnicas SuperEscalares para Computacion Matricial Paralela 19

Page 20: Técnicas SuperEscalares en la Paralelización de …T ecnicas SuperEscalares en la Paralelizaci on de Bibliotecas de Computaci on Matricial sobre Procesadores Multinucleo y GPUs Enrique

Paralelismo de Flujo de Datos

Implementaciones del run-time:

SuperMatrix

Bloques de lectura/escritura definidos intrınsecamente por lasoperacionesSolo valido para computacion matricial densa

SMPSs

Bloques de lectura/escritura definidos por pragmas

pragma css task inout(A[ts*ts])void chol_dpotrf(double *A);

Valido para cualquier operacion por bloques

Tecnicas SuperEscalares para Computacion Matricial Paralela 20

Page 21: Técnicas SuperEscalares en la Paralelización de …T ecnicas SuperEscalares en la Paralelizaci on de Bibliotecas de Computaci on Matricial sobre Procesadores Multinucleo y GPUs Enrique

Resultados Experimentales

Arquitecturas

Plataforma Especificaciones

set CC-NUMA con 16 procesadores Intel Itanium 2

neumann SMP con 8 procesadores dual core AMD Opteron

Implementaciones

Rutina LAPACK 3.0 + MKL multihebra

Rutina multihebra de MKL

Run-time SuperMatrix + MKL monohebra (+almacenamiento por bloques)

Tecnicas SuperEscalares para Computacion Matricial Paralela 21

Page 22: Técnicas SuperEscalares en la Paralelización de …T ecnicas SuperEscalares en la Paralelizaci on de Bibliotecas de Computaci on Matricial sobre Procesadores Multinucleo y GPUs Enrique

Resultados Experimentales

0

10

20

30

40

50

60

70

80

90

0 2000 4000 6000 8000 10000

GF

LOP

S

Dim. de la matriz

Factor. de Cholesky en SET

SuperMatrixMKLLAPACK

Tecnicas SuperEscalares para Computacion Matricial Paralela 22

Page 23: Técnicas SuperEscalares en la Paralelización de …T ecnicas SuperEscalares en la Paralelizaci on de Bibliotecas de Computaci on Matricial sobre Procesadores Multinucleo y GPUs Enrique

Resultados Experimentales

0

10

20

30

40

50

60

70

0 2000 4000 6000 8000 10000

GF

LOP

S

Dim. de la matriz

Factor. de Cholesky en NEUMANN

SuperMatrixMKLLAPACK

Tecnicas SuperEscalares para Computacion Matricial Paralela 23

Page 24: Técnicas SuperEscalares en la Paralelización de …T ecnicas SuperEscalares en la Paralelizaci on de Bibliotecas de Computaci on Matricial sobre Procesadores Multinucleo y GPUs Enrique

Memoria Distribuida Virtualmente Compartida (DSM)

Uso de caches (software)

Objetivos:

Ocultar la existencia de espacios de direcciones locales

Ocultar la latencia del sistema de memoria

Tecnicas SuperEscalares para Computacion Matricial Paralela 24

Page 25: Técnicas SuperEscalares en la Paralelización de …T ecnicas SuperEscalares en la Paralelizaci on de Bibliotecas de Computaci on Matricial sobre Procesadores Multinucleo y GPUs Enrique

Memoria Distribuida Virtualmente Compartida (DSM)

Codigo por bloques: Servidor con variosaceleradores hardware:

for (k = 0; k < nt; k++){

chol_dpotrf(A[k,k]);

for (i=k+1; i<nt;i++)

chol_dtrsm(A[k,k], A[k,i]);

...

}

El Host (servidor) y cada device (acelerador) tienen espaciosde direcciones (memoria) propios

Tecnicas SuperEscalares para Computacion Matricial Paralela 25

Page 26: Técnicas SuperEscalares en la Paralelización de …T ecnicas SuperEscalares en la Paralelizaci on de Bibliotecas de Computaci on Matricial sobre Procesadores Multinucleo y GPUs Enrique

Memoria Distribuida Virtualmente Compartida (DSM)

Solucion basica

Antes de iniciar una tarea,se transfieren los datosnecesarios a una GPUlibre

Cuando termina laejecucion, se recuperanlos resultados

No se explota la localidadde referencia :-(

Tecnicas SuperEscalares para Computacion Matricial Paralela 26

Page 27: Técnicas SuperEscalares en la Paralelización de …T ecnicas SuperEscalares en la Paralelizaci on de Bibliotecas de Computaci on Matricial sobre Procesadores Multinucleo y GPUs Enrique

Memoria Distribuida Virtualmente Compartida (DSM)

Solucion elaborada

Asignacion prefijada detareas a GPUs: 2-D(

A00A10 A11A20 A21 A22A30 A31 A32 A33

)

Cache software en devices

write-back para bloquesen memoria del host

write-invalidate parabloques en memoria deotros devices

Tecnicas SuperEscalares para Computacion Matricial Paralela 27

Page 28: Técnicas SuperEscalares en la Paralelización de …T ecnicas SuperEscalares en la Paralelizaci on de Bibliotecas de Computaci on Matricial sobre Procesadores Multinucleo y GPUs Enrique

Resultados Experimentales

Arquitectura

Plataforma Especificaciones

tesla SMP con 2 procesadores Intel Xeon QuadCoreTesla S870 con 4 NVIDIA G80Conexion: 2 PCI Express Gen2

Implementaciones

Rutina in-core multihebra de MKL

Run-time SuperMatrix en 1 procesador G80

Run-time SuperMatrix en 4 procesador G80

Tecnicas SuperEscalares para Computacion Matricial Paralela 28

Page 29: Técnicas SuperEscalares en la Paralelización de …T ecnicas SuperEscalares en la Paralelizaci on de Bibliotecas de Computaci on Matricial sobre Procesadores Multinucleo y GPUs Enrique

Resultados Experimentales

0

50

100

150

200

250

300

350

400

450

500

550

600

0 2000 4000 6000 8000 10000 12000 14000 16000 18000 20000

GF

LOP

S

Dim. de la matriz

Factor. de Cholesky en TESLA

SuperMatrix (4 procesadores G80)SuperMatrix (1 procesador G80)MKL (2 QuadCore)

Tecnicas SuperEscalares para Computacion Matricial Paralela 29

Page 30: Técnicas SuperEscalares en la Paralelización de …T ecnicas SuperEscalares en la Paralelizaci on de Bibliotecas de Computaci on Matricial sobre Procesadores Multinucleo y GPUs Enrique

Computacion con Datos en Disco (OOC)

Uso de caches (software)

Objetivos:

Ocultar la latencia del sistema de memoria: disco

Tecnicas SuperEscalares para Computacion Matricial Paralela 30

Page 31: Técnicas SuperEscalares en la Paralelización de …T ecnicas SuperEscalares en la Paralelizaci on de Bibliotecas de Computaci on Matricial sobre Procesadores Multinucleo y GPUs Enrique

Computacion con Datos en Disco (OOC)

Interes:

Algunos problemas de computacion matricial densa son“realmente” grandes: 795k× 795k

El coste de la memoria no es despreciable

Con un poco de paciencia, es posible resolver problemasgrandes usando un simple PCs, con un coste mucho menor delde un cluster

Tecnicas SuperEscalares para Computacion Matricial Paralela 31

Page 32: Técnicas SuperEscalares en la Paralelización de …T ecnicas SuperEscalares en la Paralelizaci on de Bibliotecas de Computaci on Matricial sobre Procesadores Multinucleo y GPUs Enrique

Computacion con Datos en Disco (OOC)

Codigo por bloques: Servidor conectado adisco:

for (k = 0; k < nt; k++){

chol_dpotrf(A[k,k]);

for (i=k+1; i<nt;i++)

chol_dtrsm(A[k,k], A[k,i]);

...

}

El disco es bastante mas lento que los niveles del sistema dememoria mas cercanos al procesador

El uso de E/S asıncrona complica bastante la programacion

Tecnicas SuperEscalares para Computacion Matricial Paralela 32

Page 33: Técnicas SuperEscalares en la Paralelización de …T ecnicas SuperEscalares en la Paralelizaci on de Bibliotecas de Computaci on Matricial sobre Procesadores Multinucleo y GPUs Enrique

Computacion con Datos en Disco (OOC)

Solucion basica

Antes de iniciar una tarea,se recuperan los datosnecesarios de disco

Cuando termina laejecucion, se guardan losresultados en disco

No se explota la localidadde referencia :-(

No se solapan calculos yoperaciones de E/S :-(

Tecnicas SuperEscalares para Computacion Matricial Paralela 33

Page 34: Técnicas SuperEscalares en la Paralelización de …T ecnicas SuperEscalares en la Paralelizaci on de Bibliotecas de Computaci on Matricial sobre Procesadores Multinucleo y GPUs Enrique

Computacion con Datos en Disco (OOC)

Solucion elaborada

Analisis simbolico delcodigo para determinar lalista de tareas

Prefetch inteligente parasolapar calculo y E/Smediante dos hebras

Cache software enmemoria principal

Tecnicas SuperEscalares para Computacion Matricial Paralela 34

Page 35: Técnicas SuperEscalares en la Paralelización de …T ecnicas SuperEscalares en la Paralelizaci on de Bibliotecas de Computaci on Matricial sobre Procesadores Multinucleo y GPUs Enrique

Resultados Experimentales

Arquitecturas

Plataforma Especificaciones

tesla SMP con 2 procesadores Intel Xeon QuadCoreSATA-I 160 GB, 1.5 Gb/s.

Implementaciones

Rutina multihebra de MKL in-core

SuperMatrix in-core

OOC

Tecnicas SuperEscalares para Computacion Matricial Paralela 35

Page 36: Técnicas SuperEscalares en la Paralelización de …T ecnicas SuperEscalares en la Paralelizaci on de Bibliotecas de Computaci on Matricial sobre Procesadores Multinucleo y GPUs Enrique

Resultados Experimentales

0

20

40

60

80

100

120

140

0 20000 40000 60000 80000 100000

GF

LOP

S

Dim. de la matriz

Factor. de Cholesky en TESLA

MKL in-coreSuperMatrix in-coreOOC

Tecnicas SuperEscalares para Computacion Matricial Paralela 36

Page 37: Técnicas SuperEscalares en la Paralelización de …T ecnicas SuperEscalares en la Paralelizaci on de Bibliotecas de Computaci on Matricial sobre Procesadores Multinucleo y GPUs Enrique

Resumen

Tecnicas SuperEscalares en la Paralelizacion de Bibliotecas deComputacion Matricial sobre Procesadores Multinucleo y GPUs:

Ejecucion fuera de orden dirigida por las dependencias dedatos (data-flow parallelism)

Uso de caches (software) para ocultar la existencia de espaciosde direcciones distribuidos y la latencia del sistema dememoria (incluido el disco):

Distributed Shared MemoryPrefetch inteligente

Tecnicas SuperEscalares para Computacion Matricial Paralela 37