Técnicas para paralelizaçãoTécnicas para ... Microsoft PowerPoint - Presentation1.ppt [Modo de...

33
Técnicas para paralelização Técnicas para paralelização de aplicações de aplicações Jorge Barbosa, FEUP-DEI 2008

Transcript of Técnicas para paralelizaçãoTécnicas para ... Microsoft PowerPoint - Presentation1.ppt [Modo de...

Page 1: Técnicas para paralelizaçãoTécnicas para ... Microsoft PowerPoint - Presentation1.ppt [Modo de Compatibilidade] Author: jorge Created Date: 7/11/2008 8:18:18 PM ...

Técnicas para paralelizaçãoTécnicas para paralelização de aplicaçõesde aplicações

Jorge Barbosa, FEUP-DEI 2008

Page 2: Técnicas para paralelizaçãoTécnicas para ... Microsoft PowerPoint - Presentation1.ppt [Modo de Compatibilidade] Author: jorge Created Date: 7/11/2008 8:18:18 PM ...

Í diÍndiceIntroduçãoIntroduçãoTécnicas de paralelização de aplicações

Nível 1: Usando código sequencial

Nível 2: Alteração mínima de código sequencial Nível 2: Alteração mínima de código sequencial

(multithreading)

Nível 3: Alteração significativa de código

sequencial (passagem de mensagens)sequencial (passagem de mensagens)

Page 3: Técnicas para paralelizaçãoTécnicas para ... Microsoft PowerPoint - Presentation1.ppt [Modo de Compatibilidade] Author: jorge Created Date: 7/11/2008 8:18:18 PM ...

I t d ãIntroduçãoFormas de obter paralelismo na resolução Formas de obter paralelismo na resolução de problemas (problema)

P l li F i lParalelismo Funcional

Paralelismo de Dados

Pipelining

Modelos de programação (máquina)

P tilh d ó i Partilha de memória

Passagem de Mensagens g g

Page 4: Técnicas para paralelizaçãoTécnicas para ... Microsoft PowerPoint - Presentation1.ppt [Modo de Compatibilidade] Author: jorge Created Date: 7/11/2008 8:18:18 PM ...

P l li F i lParalelismo Funcional

Pode executar alpha,b d lbeta e delta emparalelo

v = alpha();w = beta();w = beta();x = gamma(v, w);y = delta();y ()printf ("%6.2f\n", epsilon(x,y));

Page 5: Técnicas para paralelizaçãoTécnicas para ... Microsoft PowerPoint - Presentation1.ppt [Modo de Compatibilidade] Author: jorge Created Date: 7/11/2008 8:18:18 PM ...

P l li d d dParalelismo de dadosAplicação da mesma operação sobre Aplicação da mesma operação sobre dados independentes.

For (i = 0; i< 99; i++) For (i 0; i< 99; i++) c[i] = a[i] + b[i]

Page 6: Técnicas para paralelizaçãoTécnicas para ... Microsoft PowerPoint - Presentation1.ppt [Modo de Compatibilidade] Author: jorge Created Date: 7/11/2008 8:18:18 PM ...

Pi liPipelineEstratégia:Estratégia:

Dividir o processo em etapas Produzir vários items em simultâneo igual ao Produzir vários items em simultâneo, igual ao número de etapas.

T1

T2

T33

T4T4

Page 7: Técnicas para paralelizaçãoTécnicas para ... Microsoft PowerPoint - Presentation1.ppt [Modo de Compatibilidade] Author: jorge Created Date: 7/11/2008 8:18:18 PM ...

Í diÍndiceIntroduçãoIntroduçãoTécnicas de paralelização de aplicações

Nível 1: Usando código sequencial

Nível 2: Alteração mínima de código sequencial Nível 2: Alteração mínima de código sequencial

(multithreading)

Nível 3: Alteração significativa de código

sequencial (passagem de mensagens)sequencial (passagem de mensagens)

Page 8: Técnicas para paralelizaçãoTécnicas para ... Microsoft PowerPoint - Presentation1.ppt [Modo de Compatibilidade] Author: jorge Created Date: 7/11/2008 8:18:18 PM ...

Nível 1: Usando código sequencial) P l li d d da) Paralelismo de dadosMesmo ProgramaMesmo ProgramaDados independentes

D d i d d tD1 D2 D3 Dn Dados independentes

Processos iguais

R1 R2 R3 Rn ResultadosR1 R2 R3 Rn Resultados

Page 9: Técnicas para paralelizaçãoTécnicas para ... Microsoft PowerPoint - Presentation1.ppt [Modo de Compatibilidade] Author: jorge Created Date: 7/11/2008 8:18:18 PM ...

Nível 1: Usando código sequencial) P l li d d da) Paralelismo de dadosUtilização:Utilização:

~> msub script1~> …~> msub scriptn

Conteúdo dos scripts:Conteúdo dos scripts:<programa> [<parametros>]

Dificuldade:Necessário escrever n scripts- Necessário escrever n scripts

- Necessário efectuar em linha de comando n vezes msubPode ser ultrapassada por programação …p p p g ç

Page 10: Técnicas para paralelizaçãoTécnicas para ... Microsoft PowerPoint - Presentation1.ppt [Modo de Compatibilidade] Author: jorge Created Date: 7/11/2008 8:18:18 PM ...

Nível 1: Usando código sequencialb) P tb) Parameter sweep

Mesmo ProgramaMesmo ProgramaParâmetros diferentesD d i iDados iguais

Dados

Processos iguaisParâmetros diferentes

R1 R2 R3 Rn ResultadosR1 R2 R3 Rn Resultados

Page 11: Técnicas para paralelizaçãoTécnicas para ... Microsoft PowerPoint - Presentation1.ppt [Modo de Compatibilidade] Author: jorge Created Date: 7/11/2008 8:18:18 PM ...

Nível 1: Usando código sequencialb) P tb) Parameter sweep

Exemplo:Exemplo:Volume de dados 3D (TAC)Cálculo de projecção com varrimento de 360º Cálculo de projecção com varrimento de 360º em intervalos de 5º

Dados de Entrada:

Page 12: Técnicas para paralelizaçãoTécnicas para ... Microsoft PowerPoint - Presentation1.ppt [Modo de Compatibilidade] Author: jorge Created Date: 7/11/2008 8:18:18 PM ...

Nível 1: Usando código sequencialb) P tb) Parameter sweep

ResultadoResultado

ScriptScripti=0while [ $i -l 360 ]do

echo "DigitallyReconstructedRadiograph1 $i -o drr_anim$i.png ct_in_vivo.vtk" | msub -o st$i.txti=`expr $i + 5`i= expr $i + 5

done Programa

Entrada (graus)

Saída

Entrada (imagem)

Submissão dos trabalhos

Page 13: Técnicas para paralelizaçãoTécnicas para ... Microsoft PowerPoint - Presentation1.ppt [Modo de Compatibilidade] Author: jorge Created Date: 7/11/2008 8:18:18 PM ...

Í diÍndiceIntroduçãoIntroduçãoTécnicas de paralelização de aplicações

Nível 1: Usando código sequencial

Nível 2: Alteração mínima de código sequencial Nível 2: Alteração mínima de código sequencial

(multithreading)

Nível 3: Alteração significativa de código

sequencial (passagem de mensagens)sequencial (passagem de mensagens)

Page 14: Técnicas para paralelizaçãoTécnicas para ... Microsoft PowerPoint - Presentation1.ppt [Modo de Compatibilidade] Author: jorge Created Date: 7/11/2008 8:18:18 PM ...

Nível 2: Alteração mínima de código i l ( ltith di )sequencial (multithreading)

Processadores MulticoreProcessadores MulticoreMemória partilhada

Memória Global PartilhadaMemória Global PartilhadaMemória Global PartilhadaMemória Global Partilhada

cachecacheNó deComputaçãocachecache cachecache cachecache

corecore11

corecore22

corecore33

corecore44

Page 15: Técnicas para paralelizaçãoTécnicas para ... Microsoft PowerPoint - Presentation1.ppt [Modo de Compatibilidade] Author: jorge Created Date: 7/11/2008 8:18:18 PM ...

Nível 2: Alteração mínima de código i l ( ltith di )sequencial (multithreading)

Paralelismo fork/joinParalelismo fork/joinMaster Thread Implementação:

Pthreads APIfork

Other threadsPthreads API

Tim j iBoas Notíciasm

e join

fork

OpenMP para C e Fortran

join Ver:openmp.org

Page 16: Técnicas para paralelizaçãoTécnicas para ... Microsoft PowerPoint - Presentation1.ppt [Modo de Compatibilidade] Author: jorge Created Date: 7/11/2008 8:18:18 PM ...

Nível 2: Alteração mínima de código i l ( ltith di )sequencial (multithreading)

Exemplo 1Exemplo 1for (i = 0; i < N; i++)

a[i] = b[i] + c[i];a[i] = b[i] + c[i];

#pragma omp parallel forfor (i = 0; i < N; i++)

a[i] = b[i] + c[i];

Page 17: Técnicas para paralelizaçãoTécnicas para ... Microsoft PowerPoint - Presentation1.ppt [Modo de Compatibilidade] Author: jorge Created Date: 7/11/2008 8:18:18 PM ...

Nível 2: Alteração mínima de código i l ( ltith di )sequencial (multithreading)

Exemplo 2

f (i 0 i i )

Exemplo 2

for (i = 0; i < n; i++)for (j = 0; j < n; j++)

a[i][j] MIN(a[i][j] a[i][k]+tmp)a[i][j] = MIN(a[i][j],a[i][k]+tmp);

#pragma omp parallel for private(j)for (i = 0; i < n; i++)

for (j = 0; j < n; j++)a[i][j] = MIN(a[i][j],a[i][k]+tmp);

Page 18: Técnicas para paralelizaçãoTécnicas para ... Microsoft PowerPoint - Presentation1.ppt [Modo de Compatibilidade] Author: jorge Created Date: 7/11/2008 8:18:18 PM ...

Nível 2: Alteração mínima de código i l ( ltith di )sequencial (multithreading)

Exemplo 2

f (i 0 i i )

Exemplo 2

for (i = 0; i < n; i++)for (j = 0; j < n; j++)

a[i][j] MIN(a[i][j] a[i][k]+tmp)a[i][j] = MIN(a[i][j],a[i][k]+tmp);

#pragma omp parallel for private(j)for (i = 0; i < n; i++)

for (j = 0; j < n; j++)a[i][j] = MIN(a[i][j],a[i][k]+tmp);

Page 19: Técnicas para paralelizaçãoTécnicas para ... Microsoft PowerPoint - Presentation1.ppt [Modo de Compatibilidade] Author: jorge Created Date: 7/11/2008 8:18:18 PM ...

Nível 2: Alteração mínima de código i l ( ltith di )sequencial (multithreading)

Funções específicas Funções específicas

Especificar número de threads:void omp_set_num_threads (int t)

Obter número de cores:Obter número de cores:int omp_get_num_procs (void)

Page 20: Técnicas para paralelizaçãoTécnicas para ... Microsoft PowerPoint - Presentation1.ppt [Modo de Compatibilidade] Author: jorge Created Date: 7/11/2008 8:18:18 PM ...

Nível 2: Alteração mínima de código i l ( ltith di )sequencial (multithreading)

Calculo de π por integração Calculo de π por integração

double area, pi, x;int i, n;,...area = 0.0;for (i = 0; i < n; i++) {

x = (i+0.5)/n;area += 4 0/(1 0 + x*x);area += 4.0/(1.0 + x*x);

}pi = area / n;p

Page 21: Técnicas para paralelizaçãoTécnicas para ... Microsoft PowerPoint - Presentation1.ppt [Modo de Compatibilidade] Author: jorge Created Date: 7/11/2008 8:18:18 PM ...

Nível 2: Alteração mínima de código i l ( ltith di )sequencial (multithreading)

Calculo de π por integração com OpenMP -Calculo de π por integração com OpenMP -Solução 1

double area, pi, x;int i, n;...area = 0.0;#pragma omp parallel for private(x)#pragma omp parallel for private(x)for (i = 0; i < n; i++) {

x = (i+0.5)/n;( )/ ;area += 4.0/(1.0 + x*x);

}pi = area / n;

Page 22: Técnicas para paralelizaçãoTécnicas para ... Microsoft PowerPoint - Presentation1.ppt [Modo de Compatibilidade] Author: jorge Created Date: 7/11/2008 8:18:18 PM ...

Nível 2: Alteração mínima de código i l ( ltith di )sequencial (multithreading)

Calculo de π por integração com OpenMP -Calculo de π por integração com OpenMP -Solução 2

double area, pi, x;int i, n;...area = 0.0;#pragma omp parallel for private(x)#pragma omp parallel for private(x)for (i = 0; i < n; i++) {

x = (i+0.5)/n;#pragma omp critical

area += 4.0/(1.0 + x*x);}}pi = area / n;

Page 23: Técnicas para paralelizaçãoTécnicas para ... Microsoft PowerPoint - Presentation1.ppt [Modo de Compatibilidade] Author: jorge Created Date: 7/11/2008 8:18:18 PM ...

Nível 2: Alteração mínima de código i l ( ltith di )sequencial (multithreading)

Calculo de π por integração com OpenMP -Calculo de π por integração com OpenMP -Solução 3

d bl idouble area, pi, x;int i, n;...area = 0.0;#pragma omp parallel for

private(x) reduction(+:area)for (i = 0; i < n; i++) {

(i + 0 5)/x = (i + 0.5)/n;area += 4.0/(1.0 + x*x);

}}pi = area / n;

Page 24: Técnicas para paralelizaçãoTécnicas para ... Microsoft PowerPoint - Presentation1.ppt [Modo de Compatibilidade] Author: jorge Created Date: 7/11/2008 8:18:18 PM ...

Nível 2: Alteração mínima de código i l ( ltith di )sequencial (multithreading)

Compiladores com suporte OpenMPCompiladores com suporte OpenMPVendor/Source Compiler

(4 2)GNU gcc (4.2)

IBM XL C/C++ / Fortran

Sun Microsystems C/C++ / Fortran

INTEL C/C++ / Fortran

Portland Group Compilers and Tools C/C++ / Fortran

Absoft Pro FortranMP Fortran

Lahey/Fujitsu Fortran 95 C/C++ / Fortran

PathScaleC/C++ / Fortran

Microsoft Visual Studio 2005 e 2008

Page 25: Técnicas para paralelizaçãoTécnicas para ... Microsoft PowerPoint - Presentation1.ppt [Modo de Compatibilidade] Author: jorge Created Date: 7/11/2008 8:18:18 PM ...

Í diÍndiceIntroduçãoIntroduçãoTécnicas de paralelização de aplicações

Nível 1: Usando código sequencial

Nível 2: Alteração mínima de código sequencial Nível 2: Alteração mínima de código sequencial

(multithreading)

Nível 3: Alteração significativa de código

sequencial (passagem de mensagens)sequencial (passagem de mensagens)

Page 26: Técnicas para paralelizaçãoTécnicas para ... Microsoft PowerPoint - Presentation1.ppt [Modo de Compatibilidade] Author: jorge Created Date: 7/11/2008 8:18:18 PM ...

Nível 3: Alteração significativa de código i l ( d )sequencial (passagem de mensagens)

Arquitectura de um clusterArquitectura de um clusterMemória Global PartilhadaMemória Global Partilhada Memória Global PartilhadaMemória Global Partilhada

Memória Global PartilhadaMemória Global Partilhada Memória Global PartilhadaMemória Global Partilhada

dere

d

Memória Global PartilhadaMemória Global Partilhada Memória Global PartilhadaMemória Global Partilhada

Page 27: Técnicas para paralelizaçãoTécnicas para ... Microsoft PowerPoint - Presentation1.ppt [Modo de Compatibilidade] Author: jorge Created Date: 7/11/2008 8:18:18 PM ...

Nível 3: Alteração significativa de código i l ( d )sequencial (passagem de mensagens)

Programação por Passagem de MensagensProgramação por Passagem de MensagensMPI – Message Passing Interface

Processo 2Processo 2Processo 1Processo 1

rankrank rankrank(0)(0) (1)(1)mensagens

MPI_SendMPI_Send MPI_RecvMPI_Recv

mensagens

MPI_SendMPI_SendMPI_RecvMPI_Recv

Page 28: Técnicas para paralelizaçãoTécnicas para ... Microsoft PowerPoint - Presentation1.ppt [Modo de Compatibilidade] Author: jorge Created Date: 7/11/2008 8:18:18 PM ...

Nível 3: Alteração significativa de código i l ( d )sequencial (passagem de mensagens)

Principais características do MPI para suportar paralelismo p p p pnuma arquitectura de memória distribuída:

Rotinas para troca de mensagens:Rotinas para troca de mensagens:Identifica processos emissor/receptorComunicações ponto-a-pontoComunicações colectivasComunicações colectivas

Rotinas para sincronização

Tipos de dados derivados para facilitar o envio na mesma mensagens de dados não contíguos na memória

Facilidade de definir subconjuntos de processosFacilidade de definir subconjuntos de processos

Possibilidade de criar topologias de processos

Page 29: Técnicas para paralelizaçãoTécnicas para ... Microsoft PowerPoint - Presentation1.ppt [Modo de Compatibilidade] Author: jorge Created Date: 7/11/2008 8:18:18 PM ...

Nível 3: Alteração significativa de código i l ( d )sequencial (passagem de mensagens)

Estrutura básica de um programa

#include “mpi.h”

Estrutura básica de um programa

int main (){

MPI Init ()MPI_Init ()………processamento………

MPI_Finalize ()

processamento adicional e localnão pode invocar mais rotinas MPI…………………

}

Page 30: Técnicas para paralelizaçãoTécnicas para ... Microsoft PowerPoint - Presentation1.ppt [Modo de Compatibilidade] Author: jorge Created Date: 7/11/2008 8:18:18 PM ...

Nível 3: Alteração significativa de código i l ( d )sequencial (passagem de mensagens)

Exemplo: comunicação em Anel#include <stdio.h>#include "mpi.h"

i t i ( i t h ** )

Exemplo: comunicação em Anel

int main( int argc,char **argv ){ int rank, value, size;

MPI_Status status;

MPI_Init( &argc, &argv );_ ( g , g );MPI_Comm_rank( MPI_COMM_WORLD, &rank );MPI_Comm_size( MPI_COMM_WORLD, &size );do {

if (rank == 0) {f( "%d" & l )scanf( "%d", &value );

MPI_Send( &value, 1, MPI_INT, rank + 1, 0, MPI_COMM_WORLD );}else {

MPI Recv( &value, 1, MPI INT, rank - 1, 0, MPI COMM WORLD, &status );MPI_Recv( &value, 1, MPI_INT, rank 1, 0, MPI_COMM_WORLD, &status );if (rank < size - 1)

MPI_Send( &value, 1, MPI_INT, rank + 1, 0, MPI_COMM_WORLD );}printf( "Process %d got %d\n", rank, value );

} while (value >= 0);

MPI_Finalize( );return 0;

Page 31: Técnicas para paralelizaçãoTécnicas para ... Microsoft PowerPoint - Presentation1.ppt [Modo de Compatibilidade] Author: jorge Created Date: 7/11/2008 8:18:18 PM ...

Nível 3: Alteração significativa de código i l ( d )sequencial (passagem de mensagens)

Principais instruçõesMPI_Init: Inicializa o MPI

MPI Finalize: Finaliza o MPI

Principais instruções

_ a e a a o

MPI_Comm_size: número de processos criados

MPI Comm rank: qual o número de processo (0 a N-1)_ _ q p ( )

MPI_Send: Envio de mensagem

MPI Recv: Recepção de mensagem_ pç g

MPI_Bcast: Broadcast de mensagem

MPI Scatter: Distribuição de vectores e matrizes _ ç

MPI_Gather: Recolha de vectores e matrizes

MPI_Reduce: Operação de redução_ p ç ç

Page 32: Técnicas para paralelizaçãoTécnicas para ... Microsoft PowerPoint - Presentation1.ppt [Modo de Compatibilidade] Author: jorge Created Date: 7/11/2008 8:18:18 PM ...

Nível 3: Alteração significativa de código i l ( d )sequencial (passagem de mensagens)

Alternativa à programação directa com Alternativa à programação directa com MPI

Usar bibliotecas que usam MPIq

Exemplos:Exemplos:PBLASParallel Basic Linear Algebra SubprogramsParallel Basic Linear Algebra SubprogramsNível 1: Operações com vectoresNível 2: Operações Matriz VectorNível 2: Operações Matriz-VectorNível 3: Operações Matriz-Matriz

Page 33: Técnicas para paralelizaçãoTécnicas para ... Microsoft PowerPoint - Presentation1.ppt [Modo de Compatibilidade] Author: jorge Created Date: 7/11/2008 8:18:18 PM ...

Nível 3: Alteração significativa de código i l ( d )sequencial (passagem de mensagens)

Exemplos:Exemplos:ScaLAPACKDense and band matrix software

PARPACK and ARPACK Large sparse eigenvalue software

CAPSS and MFACTCAPSS and MFACTSparse direct systems software

ParPre ParPre Preconditioners for large sparse iterative solvers

The NAG Parallel LibrarySolution of dense, banded and sparse linear equations Solution of eigenvalue problems Minimization of unconstrained nonlinear least squares and general nonlinear problems Fast Fourier transforms Fast Fourier transforms Numerical integration Random number generation Matrix operations and data distribution utilities