41
Instituto de Física de São Carlos - IFSC Universidade de São Paulo - USP Francisco Aparecido Rodrigues Orientador: Gonzalo Travieso Técnicas de orientação ao objeto para computação científica paralela

Instituto de Física de São Carlos - IFSC Universidade de São Paulo - USP Francisco Aparecido Rodrigues Orientador: Gonzalo Travieso Técnicas de orientação

Embed Size (px)

Citation preview

Page 1: Instituto de Física de São Carlos - IFSC Universidade de São Paulo - USP Francisco Aparecido Rodrigues Orientador: Gonzalo Travieso Técnicas de orientação

Instituto de Física de São Carlos - IFSCUniversidade de São Paulo - USP

Francisco Aparecido RodriguesOrientador: Gonzalo Travieso

Técnicas de orientação ao objeto para computação

científica paralela

Page 2: Instituto de Física de São Carlos - IFSC Universidade de São Paulo - USP Francisco Aparecido Rodrigues Orientador: Gonzalo Travieso Técnicas de orientação

Introdução

Page 3: Instituto de Física de São Carlos - IFSC Universidade de São Paulo - USP Francisco Aparecido Rodrigues Orientador: Gonzalo Travieso Técnicas de orientação

MOTIVAÇÃO

A construção de programas paralelos que ofereçam alto desempenho é complexa

A interface de uso que muitas bibliotecas numéricas paralelas oferecem é pouco amigável

OBJETIVOS

Desenvolver uma biblioteca paralela que ofereça alto desempenho e que possua uma interface amigável

IntroduçãoIN

TR

OD

ÃO

Page 4: Instituto de Física de São Carlos - IFSC Universidade de São Paulo - USP Francisco Aparecido Rodrigues Orientador: Gonzalo Travieso Técnicas de orientação

Os computadores paralelos são usados para suprir as necessidades que os computadores seqüenciais não conseguem.

“Um computador paralelo é uma coleção de elementos de processamento que se comunicam e cooperam na resolução de grandes problemas de forma rápida”

(Almasi)

Computação paralelaIN

TR

OD

ÃO

Page 5: Instituto de Física de São Carlos - IFSC Universidade de São Paulo - USP Francisco Aparecido Rodrigues Orientador: Gonzalo Travieso Técnicas de orientação

Grupo de computadores completos interconectados com sistema operacional distribuído

Oferecem

Escalabilidade absoluta

Escalabilidade incremental

Alta disponibilidade

Melhor relação custo desempenho

ClustersIN

TR

OD

ÃO

Page 6: Instituto de Física de São Carlos - IFSC Universidade de São Paulo - USP Francisco Aparecido Rodrigues Orientador: Gonzalo Travieso Técnicas de orientação

Maneira mais comum:

Utilizando uma linguagem seqüencial conjuntamente com uma biblioteca paralela que permita a troca de mensagens.

PVM – Paralell Virtual Machine

MPI – Message Passing Interface

Desenvolvimento de softwares paralelosIN

TR

OD

ÃO

Page 7: Instituto de Física de São Carlos - IFSC Universidade de São Paulo - USP Francisco Aparecido Rodrigues Orientador: Gonzalo Travieso Técnicas de orientação

Bibliotecas Paralelas

Page 8: Instituto de Física de São Carlos - IFSC Universidade de São Paulo - USP Francisco Aparecido Rodrigues Orientador: Gonzalo Travieso Técnicas de orientação

Padrão de biblioteca de passagem de mensagem para sistemas paralelos.

Baseado na troca de mensagem entre processadores através das diretivas send/receive

O MPI é baseado em 4 conceitos:1. Processos2. Comunicadores3. Mensagens4. Tipos de dados

O programador deve especificar: Instante em que uma comunicação deve ocorrer

Quais tipos de dados devem ser enviados A comunicação é bloqueante ou não?

MPI – Message Passing InterfaceM

PI

Page 9: Instituto de Física de São Carlos - IFSC Universidade de São Paulo - USP Francisco Aparecido Rodrigues Orientador: Gonzalo Travieso Técnicas de orientação

Bibliotecas numéricasB

IBLIO

TEC

AS

NU

MÉR

ICA

S BLAS (Basic Linear Algebra Subprogram)

LAPACK (Linear Algebra Package)

Biblioteca de Álgebra Linear para cálculo de problemas de autovalores, sistemas lineares e problemas de mínimos quadrados paraworkstations e sistemas SPMD,

SCALAPACK (Scalabe LAPACK)

Biblioteca de Álgebra Linear análoga ao LAPACK para computadores de memória distribuída.

Page 10: Instituto de Física de São Carlos - IFSC Universidade de São Paulo - USP Francisco Aparecido Rodrigues Orientador: Gonzalo Travieso Técnicas de orientação

Bibliotecas de rotinas similares às do LAPACK

Escrito em FORTRAN

Utiliza passagem de mensagem via MPI ou PVM

Oferece alta perfomance em rotinas de álgebra linear em computadores MIMD Necessita de duas blibliotecas adicionais:

PBLAS (Parallel BLAS)Contém rotinas básicas de álgebra linear para processamento paralelo

BLACS (Basic Linear Algebra Communication Subprogram)Biblioteca de rotinas sícronas de send/receive que usam passagem de mensagem

CaracterísticasS

caLA

PA

CK

Page 11: Instituto de Física de São Carlos - IFSC Universidade de São Paulo - USP Francisco Aparecido Rodrigues Orientador: Gonzalo Travieso Técnicas de orientação

EstruturaS

caLA

PA

CK

ScaLAPACK

PBLAS

LAPACK

BLACS

MPI/PVM

BLAS

LOCAL

GLOBAL

Page 12: Instituto de Física de São Carlos - IFSC Universidade de São Paulo - USP Francisco Aparecido Rodrigues Orientador: Gonzalo Travieso Técnicas de orientação

Grade de processadoresS

caLA

PA

CK

Page 13: Instituto de Física de São Carlos - IFSC Universidade de São Paulo - USP Francisco Aparecido Rodrigues Orientador: Gonzalo Travieso Técnicas de orientação

Exemplo

Distribuição em blocos 1 x 1Exemplo: N = 16 e P = 4Grade: 2 X 2

Distribuição da MatrizS

caLA

PA

CK

P0 P1

P2 P3

MATRIZ GRADE

A11 A12 A13 A14

A21 A22 A23 A24

A31 A32 A33 A34

A41 A42 A43 A44

A11 A13 A12 A14

A31 A33 A32 A34

A21 A23 A22 A24

A41 A43 A42 A44

Page 14: Instituto de Física de São Carlos - IFSC Universidade de São Paulo - USP Francisco Aparecido Rodrigues Orientador: Gonzalo Travieso Técnicas de orientação

UtilizaçãoS

caLA

PA

CK

Passos para chamar as rotinas

1 - Inicializar a grade de processadores CALL SLINIT( ... ) CALL BLACS_GRIDINFO( ...)

2 - Distribuir a matriz na grade de processadores

e inicializar os descritores de array CALL DESCINIT( ... )

3 - Chamar a rotina do ScaLAPACK CALL PDSYEVX( ... )

4 - Liberar a grade de processos CALL BLACS_EXIT( ... )

Page 15: Instituto de Física de São Carlos - IFSC Universidade de São Paulo - USP Francisco Aparecido Rodrigues Orientador: Gonzalo Travieso Técnicas de orientação

Divididas em três grupos

1. Driver Routines

Resolvem um problema completamente.

Equações lineares, problemas de mínimos quadrados, problemas de autovalores, etc.

2. Computational Routines

Realizam uma computação distinta

Equações lineares, fatorização ortogonal e problemas de mínimos quadrados (fatorização QR, LQ, QR com pivotamento, fatorização ortogonal completa), etc.

3. Auxiliary routines

Rotinas usadas nas subtarefas e algoritimos de particionamento

RotinasS

caLA

PA

CK

Page 16: Instituto de Física de São Carlos - IFSC Universidade de São Paulo - USP Francisco Aparecido Rodrigues Orientador: Gonzalo Travieso Técnicas de orientação

PXYYZZZ

P: A primeira letra é para diferenciar das rotinas do LAPACK

X: A segunda letra indica o tipo de dado S : Real D : Double C : Complex Z : Double Complex

YY: As duas próximas indicam o tipo da matriz : Ex: SY – simétrica HE – hermitiana TR – triangular

ZZZ: As três últimas indicam a computação

Exemplos:

PDTRSVX – rotina para resolver sistemas de equações lineares com matrizes triangulares

PDSYEVX – rotina para calcular autovalores e autovetores de uma matriz simétrica double

PSGEBRD – rotina que realiza uma redução bidiagonal de uma matriz geral single

Nomenclatura das rotinasS

caLA

PA

CK

Page 17: Instituto de Física de São Carlos - IFSC Universidade de São Paulo - USP Francisco Aparecido Rodrigues Orientador: Gonzalo Travieso Técnicas de orientação

Orientação ao Objeto

Page 18: Instituto de Física de São Carlos - IFSC Universidade de São Paulo - USP Francisco Aparecido Rodrigues Orientador: Gonzalo Travieso Técnicas de orientação

O termo orientação a objetos significa organizar o mundo real como uma coleção de objetos que incorporam estrutura de dados e um conjunto de operações que manipulam estes dados.

Todas as linguagens orientadas a objetos possuem três características básicas:

1. Encapsulação

2. Herança

3. Polimorfismo

ConceitosO

rien

tação a

o O

bje

to

Page 19: Instituto de Física de São Carlos - IFSC Universidade de São Paulo - USP Francisco Aparecido Rodrigues Orientador: Gonzalo Travieso Técnicas de orientação

É um tipo de dado, como os já conhecidos, para declarar variáveis

Uma variável de uma classe é chamada de Objeto.

Definir uma classe não cria um objeto, assim como um tipo de variável NÃO é uma variável

ClassesO

rien

tação a

o o

bje

to

Page 20: Instituto de Física de São Carlos - IFSC Universidade de São Paulo - USP Francisco Aparecido Rodrigues Orientador: Gonzalo Travieso Técnicas de orientação

É uma entidade lógica que contém dados e código para manipular esses dados

ObjetosO

rien

tação a

o O

bje

to

Class Carros {Cambio, acelerador, voltante, ...

public:Acelerar ( );Frear ( );Trocar_marcha ( );Virar_esquerda ( );...

};Class Carros BMW;

Page 21: Instituto de Física de São Carlos - IFSC Universidade de São Paulo - USP Francisco Aparecido Rodrigues Orientador: Gonzalo Travieso Técnicas de orientação

HerançaO

rien

tação a

o O

bje

to É o processo em que um objeto pode adquirir as características de outro objeto

VEÍCULOS (SUPERCLASSE)

CLASSE CARROS CLASSE MOTOS

AcelerarFrear

Virar para esq....

Page 22: Instituto de Física de São Carlos - IFSC Universidade de São Paulo - USP Francisco Aparecido Rodrigues Orientador: Gonzalo Travieso Técnicas de orientação

Matrizes podem ser representadas como uma abstração de problemas de álgebra linear

Uma matriz específica seria um objeto da classe e as operações sobre elas os métodos da classe

Matrizes e objetosO

rien

tação a

o O

bje

to

Page 23: Instituto de Física de São Carlos - IFSC Universidade de São Paulo - USP Francisco Aparecido Rodrigues Orientador: Gonzalo Travieso Técnicas de orientação

Biblioteca desenvolvida

Page 24: Instituto de Física de São Carlos - IFSC Universidade de São Paulo - USP Francisco Aparecido Rodrigues Orientador: Gonzalo Travieso Técnicas de orientação

Oferece rotinas para matrizes:

Simétricas com simples precisão

Simétricas com dupla precisão

Hermitianas com simples precisão

Hermitianas com dupla precisão

Parallel Object Oriented Linear AlgebraP

OO

LA

Li

Page 25: Instituto de Física de São Carlos - IFSC Universidade de São Paulo - USP Francisco Aparecido Rodrigues Orientador: Gonzalo Travieso Técnicas de orientação

Métodos oferecidos

Acesso por índice global / local

Cálculo de autovalores e/ou autovetores

Atribuição e redistribuição de matrizes

Adição de matrizes

Subtração de matrizes

Multiplicação de matrizes

Facilidades oferecidas

Interface amigável

Encapsulação dos dados, ou seja, interface independente da implementação

Simplificação de uso

CaracterísticasP

OO

LA

Li

Page 26: Instituto de Física de São Carlos - IFSC Universidade de São Paulo - USP Francisco Aparecido Rodrigues Orientador: Gonzalo Travieso Técnicas de orientação

Interface e métodosP

OO

LA

Li

template<typename elem_type, typename precision_type>class DistMat{ public: DistMat ( const int M, const int N, const Grid &g,

const int MB = 1, const int NB = 1 ); DistMat ( const DistMat<elem_type,precision_type> &A ); elem_type *local_matrix(); int rows(); int cols(); int block_rows(); int block_cols(); int local_rows(); int local_cols(); elem_type &operator()( const int I, const int J ); elem_type &local( const int i, const int j ); virtual void eigen( precision_type *eigenval) = 0; virtual void eigen( precision_type *eigenval, int il,

int iu) = 0;...

virtual ~DistMat();};

Page 27: Instituto de Física de São Carlos - IFSC Universidade de São Paulo - USP Francisco Aparecido Rodrigues Orientador: Gonzalo Travieso Técnicas de orientação

Interface e métodosP

OO

LA

Li

class FloatSymmetric : public DistMat<float,float>{ public: FloatSymmetric (const FloatSymmetric &A)

DistMat<float,float>(A); FloatSymmetric(const int M, const int N, Grid &g,const int MB = 1,

const int NB = 1 ):DistMat<float,float>(M,N,g,MB,NB); FloatSymmetric &operator=( FloatSymmetric A ); friend FloatSymmetric operator+( FloatSymmetric A, FloatSymmetric B); friend FloatSymmetric operator-( FloatSymmetric A,

FloatSymmetric B); friend FloatSymmetric operator*( FloatSymmetric A,

FloatSymmetric B); void eigen( float *eigenval ); void eigen( float *eigenval, int il, int iu ); void eigen( float *eigenval, float vl, float vu ); void eigen( float *eigenval,

DistMat<float,float> &eigenvec ); void eigen( float *eigenval, DistMat<float,float> &eigenvec, int il, int iu ); void eigen( float *eigenval, DistMat<float,float> &eigenvec, float vl, float vu ); ~FloatSymmetric(){};}

Page 28: Instituto de Física de São Carlos - IFSC Universidade de São Paulo - USP Francisco Aparecido Rodrigues Orientador: Gonzalo Travieso Técnicas de orientação

Análise de desempenho

Page 29: Instituto de Física de São Carlos - IFSC Universidade de São Paulo - USP Francisco Aparecido Rodrigues Orientador: Gonzalo Travieso Técnicas de orientação

Algoritmo

I. Iniciar a grade de processadores

II. Distribuir a matriz hamiltoniana

III. Diagonalizar a matriz

IV. Liberar a grade de processadores

Objetivo Comparar o código desenvolvido usando o ScaLAPACK e a biblioteca POOLALi

Problema de física do estado sólidoA

nálise d

e d

esem

pen

ho

Page 30: Instituto de Física de São Carlos - IFSC Universidade de São Paulo - USP Francisco Aparecido Rodrigues Orientador: Gonzalo Travieso Técnicas de orientação

Utilizando o ScaLAPACK

Inicialização da grade de processadoresA

nálise d

e d

esem

pen

ho int main(int argc, char *argv[])

{ int rank, nprocs, zero = 0, context, less_one = -1; int nprow, npcol, myrow, mycol; char erre = 'R'; MPI_Init(&argc,&argv); blacs_pinfo__(&rank,&nprocs); blacs_get__(&less_one, &zero, &context); nprow = (int) sqrt(nprocs); while (( nprow!=1 ) && ((nprocs \ nprow) != 0)) nprow--; npcol = (int) (nprocs/nprow); blacs_gridinit__(&context, &erre, &nprow, &npcol); blacs_gridinfo__(&context, &nprow, &npcol, &myrow,

&mycol); blacs_exit__(&zero); return 0;}

Page 31: Instituto de Física de São Carlos - IFSC Universidade de São Paulo - USP Francisco Aparecido Rodrigues Orientador: Gonzalo Travieso Técnicas de orientação

Inicialização da grade de processadoresA

nálise d

e d

esem

pen

ho

Utilizando a POOLALi

#include "grid.h"

int main(int argc, char *argv[]){ Parallel p(argc, argv); Grid g(p); return 0;}

Page 32: Instituto de Física de São Carlos - IFSC Universidade de São Paulo - USP Francisco Aparecido Rodrigues Orientador: Gonzalo Travieso Técnicas de orientação

Distribuição da matrizA

nálise d

e d

esem

pen

ho

Utilizando o ScaLAPACK

// ... definição dos valores associados à matriz ...// I, J -> Global// i,j -> localfor( I = 0; I < N; I++) { for( J = 0; J < N; J++)

{....value = Hamilton(I,J,n);l = (int)(floor( I/(nprow*mb) ) );m = (int)(floor( J/(npcol*nb) ) );x = I % mb;y = J % nb;i = l*mb + x;j = m*nb + y;if ( ( j*lrow + i ) < lrow*lcol )

ml[ j*lrow + i] = value;...}

}

Page 33: Instituto de Física de São Carlos - IFSC Universidade de São Paulo - USP Francisco Aparecido Rodrigues Orientador: Gonzalo Travieso Técnicas de orientação

#include "lib/grid.h"#include "lib/dsymmetric.h"...DoubleSymmetric Matrix(N,N,g,8,8), for( int I = 0; I < N; I++)

{ for( int J=0; J< N; J++)

...Matrix(I,J) = Hamilton(I,J,n);...

}}

Distribuição da matrizA

nálise d

e d

esem

pen

ho

Utilizando a POOLALi

Page 34: Instituto de Física de São Carlos - IFSC Universidade de São Paulo - USP Francisco Aparecido Rodrigues Orientador: Gonzalo Travieso Técnicas de orientação

... // declaração das variáveis de entrada na funçãostatic int lwork = -1, liwork = -1;double *work, tmpwork;int *iwork, tmpiwork;ifail = new int[n];iclustr = new int[2*nprow*npcol];gap = new double[nprow*npcol];pdsyevx_(&jobz, &range, &uplo, &n, ml, &ia, &ja, desca, &vl,

&vu, &il, &iu, &abstol,&n_aut, &n_vec, eigenval, &orfac, z, &iz, &jz, descz, &tmpwork, &lwork, &tmpiwork, &liwork, ifail, iclustr, gap, &info);

lwork = int(2*tmpwork);liwork =tmpiwork;work = new double[lwork];iwork = new int[liwork];pdsyevx_(&jobz, &range, &uplo, &n, ml, &ia, &ja, desca, &vl,

&vu, &il, &iu, &abstol,&n_aut, &n_vec, eigenval,&orfac,z, &iz, &jz, descz, work, &lwork, iwork, &liwork, ifail, iclustr, gap, &info);

...

Diagonalização da matrizA

nálise d

e d

esem

pen

ho

Utilizando o ScaLAPACK

Page 35: Instituto de Física de São Carlos - IFSC Universidade de São Paulo - USP Francisco Aparecido Rodrigues Orientador: Gonzalo Travieso Técnicas de orientação

Diagonalização da matrizA

nálise d

e d

esem

pen

ho

Utilizando a POOLALi

#include "lib/grid.h"#include "lib/dsymmetric.h"...DoubleSymmetric Matrix(N,N,g,8,8), Vec(N,N,g,8,8);...double *eigenval;eigenval = new (double)[N];Matrix.eigen(eigenval, Vec);...

Page 36: Instituto de Física de São Carlos - IFSC Universidade de São Paulo - USP Francisco Aparecido Rodrigues Orientador: Gonzalo Travieso Técnicas de orientação

Comparação de desempenhoA

nálise d

e d

esem

pen

ho

Page 37: Instituto de Física de São Carlos - IFSC Universidade de São Paulo - USP Francisco Aparecido Rodrigues Orientador: Gonzalo Travieso Técnicas de orientação

Comparação de desempenhoA

nálise d

e d

esem

pen

ho

Page 38: Instituto de Física de São Carlos - IFSC Universidade de São Paulo - USP Francisco Aparecido Rodrigues Orientador: Gonzalo Travieso Técnicas de orientação

Comparação de desempenhoA

nálise d

e d

esem

pen

ho

Page 39: Instituto de Física de São Carlos - IFSC Universidade de São Paulo - USP Francisco Aparecido Rodrigues Orientador: Gonzalo Travieso Técnicas de orientação

Conclusão

Page 40: Instituto de Física de São Carlos - IFSC Universidade de São Paulo - USP Francisco Aparecido Rodrigues Orientador: Gonzalo Travieso Técnicas de orientação

A utilização de orientação ao objeto ofereceu:

Alto nível de abstração

Interface amigável

Nomenclatura dos métodos é mais intuitiva que as rotinas do ScaLAPACK

Não ofereceu perda de desempenho em relação ao ScaLAPACK

ConclusõesC

on

clu

sões

Page 41: Instituto de Física de São Carlos - IFSC Universidade de São Paulo - USP Francisco Aparecido Rodrigues Orientador: Gonzalo Travieso Técnicas de orientação

Extensão da POOLALi para todos os métodos oferecidos pelo ScaLAPACK

Sistemas Lineares, problemas de mínimos quadrados, fatorização LU, inversão matricial, etc

Criação de classes para outros tipos de matrizes

De banda, tridiagonais, ortogonais, triangulares, unitárias, esparsas

Implementação de métodos não oferecidos pelo ScaLAPACK

Equações diferenciais, estatística, visão, etc.

Trabalhos futurosC

on

clu

sões