introducao_computacao_paralela

60
Introdução aos conceitos de MPI Formulação do problema MPI e C++ Introdução em Computação Paralela Introdução à Computação Paralela: Fundamentos de computação paralela usando MPI Claudir Oliveira Email: [email protected] Prof.: Ricardo Fabbri Instituto Politécnico, UERJ, Nova Friburgo, RJ, Outubro - 2012 Instituto Politécnico - RJ Claudir Oliveira

Upload: claudir-oliveira

Post on 04-Oct-2015

5 views

Category:

Documents


2 download

DESCRIPTION

Uma introdução de Programação em Paralelo usando MPI.

TRANSCRIPT

  • Introduo aos conceitos de MPI Formulao do problema MPI e C++ Modelo Computacional MPI Classificao dos Mtodos de paralelizao Programando com MPI Send/Recv entre dois processos Comunicao Coletiva Decomposiao de dados Aplicao em restaurao de imagens Comunicao unilateralIntroduo em Computao Paralela

    Introduo Computao Paralela:

    Fundamentos de computao paralela usando MPI

    Claudir OliveiraEmail: [email protected]

    Prof.: Ricardo FabbriInstituto Politcnico, UERJ,

    Nova Friburgo, RJ,

    Outubro - 2012

    Instituto Politcnico - RJ Claudir Oliveira

  • Introduo aos conceitos de MPI Formulao do problema MPI e C++ Modelo Computacional MPI Classificao dos Mtodos de paralelizao Programando com MPI Send/Recv entre dois processos Comunicao Coletiva Decomposiao de dados Aplicao em restaurao de imagens Comunicao unilateralIntroduo em Computao Paralela

    1 Introduo aos conceitos de MPI

    2 Instalao e execuo

    3 MPI e C/C++

    4 Estrutura de cdigo MPI

    5 Classificao dos Mtodos de paralelizao

    6 Comunicao Ponto-a-Ponto

    7 Comunicao Coletiva

    8 Decomposio de dados

    9 Aplicao em restaurao de imagens

    10 Comunicao unilateral

    Instituto Politcnico - RJ Claudir Oliveira

  • Introduo aos conceitos de MPI Formulao do problema MPI e C++ Modelo Computacional MPI Classificao dos Mtodos de paralelizao Programando com MPI Send/Recv entre dois processos Comunicao Coletiva Decomposiao de dados Aplicao em restaurao de imagens Comunicao unilateralIntroduo ao MPIFundamentos bsicos

    MPI - Message Passing InterfaceMPI uma biblioteca para troca de mensagens.Por que usar?

    Padronizao (por consenso)Oportunidades de desempenhoFuncional (diversas rotinas)Porttil (sem altetao do fonte para outras plataformas)PerformanceEscalabilidade

    Instituto Politcnico - RJ Claudir Oliveira

  • Introduo aos conceitos de MPI Formulao do problema MPI e C++ Modelo Computacional MPI Classificao dos Mtodos de paralelizao Programando com MPI Send/Recv entre dois processos Comunicao Coletiva Decomposiao de dados Aplicao em restaurao de imagens Comunicao unilateralIntroduo ao MPILivros de referncia

    Instituto Politcnico - RJ Claudir Oliveira

  • Introduo aos conceitos de MPI Formulao do problema MPI e C++ Modelo Computacional MPI Classificao dos Mtodos de paralelizao Programando com MPI Send/Recv entre dois processos Comunicao Coletiva Decomposiao de dados Aplicao em restaurao de imagens Comunicao unilateralIntroduo ao MPIFundamentos Bsicos

    As diferentesimplementaes

    MPICH e MPICH2-Desenvolvido pela ArgonneNationa LabsMPI/LAM - Desenvolvido pelaIndiana, OSC, Notre DameOpenMPI - MPI-2 - ThreadSafeMPI/Pro - Produto comercial

    Instituto Politcnico - RJ Claudir Oliveira

  • Introduo aos conceitos de MPI Formulao do problema MPI e C++ Modelo Computacional MPI Classificao dos Mtodos de paralelizao Programando com MPI Send/Recv entre dois processos Comunicao Coletiva Decomposiao de dados Aplicao em restaurao de imagens Comunicao unilateralIntroduo ao MPIFundamentos Bsicos

    Similaridade comvriasimplementaesVantagens

    Compatibilidade de cdigo*;Suporte para arquiteturasparalelas heterogneas;Clusters, Grupos de estaes detrabalho, computadores SMPeGrids;

    Diferena devriasimplementaesDesvantagens

    Comandos para compilarexecutar;Ativao em programa MPI;Forma paralela: I/O (MPI-2);Depurao;

    Instituto Politcnico - RJ Claudir Oliveira

  • Introduo aos conceitos de MPI Formulao do problema MPI e C++ Modelo Computacional MPI Classificao dos Mtodos de paralelizao Programando com MPI Send/Recv entre dois processos Comunicao Coletiva Decomposiao de dados Aplicao em restaurao de imagens Comunicao unilateralIntroduo ao MPIFundamentos Bsicos

    Similaridade comvriasimplementaesVantagens

    Vantagens: No existem limitespara nmero de processadores;Cada processador acessa suaprpria memria rapidamente esem interferncia;

    Diferena devriasimplementaesDesvantagens

    Elevado overhead devido comunicao;o usurio responsveil peloenvio e recebimento dos dados;

    Instituto Politcnico - RJ Claudir Oliveira

  • Introduo aos conceitos de MPI Formulao do problema MPI e C++ Modelo Computacional MPI Classificao dos Mtodos de paralelizao Programando com MPI Send/Recv entre dois processos Comunicao Coletiva Decomposiao de dados Aplicao em restaurao de imagens Comunicao unilateralOnde executar ?Como instalar, compilar e executar ?

    3 $ sudo apt-get install libcr-dev mpich2 mpich2-doc3 $ sudo apt-get install mpi-default-bin mpi-default-dev

    Cluster de Alto Desempenho / Alta Performance NIS -> Network Information Service; NFS -> Network File System ou NCP (Network Control Program); RPC -> Remote Procedure Call. Necessrio pelo NFS e NIS; SSH -> Secure Shell; nfslock -> Preveni que mais de um usurio modifique o mesmoarquivo ao mesmo tempo;

    Condies de bom funcionamento?

    Instituto Politcnico - RJ Claudir Oliveira

  • Introduo aos conceitos de MPI Formulao do problema MPI e C++ Modelo Computacional MPI Classificao dos Mtodos de paralelizao Programando com MPI Send/Recv entre dois processos Comunicao Coletiva Decomposiao de dados Aplicao em restaurao de imagens Comunicao unilateralOnde executar ?Como instalar, compilar e executar ?

    3 $ sudo apt-get install libcr-dev mpich2 mpich2-doc3 $ sudo apt-get install mpi-default-bin mpi-default-dev

    Cluster de Alto Desempenho / Alta Performance NIS -> Network Information Service; NFS -> Network File System ou NCP (Network Control Program); RPC -> Remote Procedure Call. Necessrio pelo NFS e NIS; SSH -> Secure Shell; nfslock -> Preveni que mais de um usurio modifique o mesmoarquivo ao mesmo tempo;

    Condies de bom funcionamento?

    Instituto Politcnico - RJ Claudir Oliveira

  • Introduo aos conceitos de MPI Formulao do problema MPI e C++ Modelo Computacional MPI Classificao dos Mtodos de paralelizao Programando com MPI Send/Recv entre dois processos Comunicao Coletiva Decomposiao de dados Aplicao em restaurao de imagens Comunicao unilateralOnde executar ?Como instalar, compilar e executar ?

    3 $ sudo apt-get install libcr-dev mpich2 mpich2-doc3 $ sudo apt-get install mpi-default-bin mpi-default-dev

    Cluster de Alto Desempenho / Alta Performance NIS -> Network Information Service; NFS -> Network File System ou NCP (Network Control Program); RPC -> Remote Procedure Call. Necessrio pelo NFS e NIS; SSH -> Secure Shell; nfslock -> Preveni que mais de um usurio modifique o mesmoarquivo ao mesmo tempo;

    Condies de bom funcionamento?

    Instituto Politcnico - RJ Claudir Oliveira

  • Introduo aos conceitos de MPI Formulao do problema MPI e C++ Modelo Computacional MPI Classificao dos Mtodos de paralelizao Programando com MPI Send/Recv entre dois processos Comunicao Coletiva Decomposiao de dados Aplicao em restaurao de imagens Comunicao unilateralOnde executar ?Onde executar?

    Clusters

    Instituto Politcnico - RJ Claudir Oliveira

  • Introduo aos conceitos de MPI Formulao do problema MPI e C++ Modelo Computacional MPI Classificao dos Mtodos de paralelizao Programando com MPI Send/Recv entre dois processos Comunicao Coletiva Decomposiao de dados Aplicao em restaurao de imagens Comunicao unilateralComo executar?Como executar?

    Compilar/Executar com MPI3Executa o fonte .c ou .cpp$ mpicc -o exec font.c$ mpic++ -o exec font.cpp3Iniciar N processos que executam o mesmo programa$ mpirun -np N ./exec > N = Nmero de processadores$ mpiexec -n N python program.py [args]$ man mpirun e man mpiexec (Outras opes)

    MPI em ClustersPara executar programas MPI num cluster usa-se ferramentas deprocessamento em lote (Sun Grid Engine / Oracle Grid Engine) paragerenciamento da execuo remota.

    Instituto Politcnico - RJ Claudir Oliveira

  • Introduo aos conceitos de MPI Formulao do problema MPI e C++ Modelo Computacional MPI Classificao dos Mtodos de paralelizao Programando com MPI Send/Recv entre dois processos Comunicao Coletiva Decomposiao de dados Aplicao em restaurao de imagens Comunicao unilateralComo executar?Como executar?

    Compilar/Executar com MPI3Executa o fonte .c ou .cpp$ mpicc -o exec font.c$ mpic++ -o exec font.cpp3Iniciar N processos que executam o mesmo programa$ mpirun -np N ./exec > N = Nmero de processadores$ mpiexec -n N python program.py [args]$ man mpirun e man mpiexec (Outras opes)

    MPI em ClustersPara executar programas MPI num cluster usa-se ferramentas deprocessamento em lote (Sun Grid Engine / Oracle Grid Engine) paragerenciamento da execuo remota.

    Instituto Politcnico - RJ Claudir Oliveira

  • Introduo aos conceitos de MPI Formulao do problema MPI e C++ Modelo Computacional MPI Classificao dos Mtodos de paralelizao Programando com MPI Send/Recv entre dois processos Comunicao Coletiva Decomposiao de dados Aplicao em restaurao de imagens Comunicao unilateralFunes simples de inicializaoMPI e C/C++

    Programas C++ podem utilizar as associaes C++Funo de iniciao: MPI_InitC: int MPI_Init(int* argc, char*** argv)C++: void MPI::Init(int& argc, char**& argv)void MPI::Init()Similarmente: MPI_Finalize e MPI::Finalize

    Qual a diferena?1 As funes so definidas dentro do namespace MPI.2 Os argumentos so declarados com referncias em vez de ponteiros.

    Instituto Politcnico - RJ Claudir Oliveira

  • Introduo aos conceitos de MPI Formulao do problema MPI e C++ Modelo Computacional MPI Classificao dos Mtodos de paralelizao Programando com MPI Send/Recv entre dois processos Comunicao Coletiva Decomposiao de dados Aplicao em restaurao de imagens Comunicao unilateralFunes de inicializar e finalizarAlgumas funes basicas de inicializar/finalizar

    Primitivas bsicas3 MPI_Init - Inicializa processos MPI3 MPI_Initialized - Indica se MPI_Init j foi chamado3 MPI_Comm_size - Determina o nmero de processos no comunicador3 MPI_Comm_rank - Determina o rank de um processo no comunicador3 MPI_Get_processor_name - Determina o nome do processador3 MPI_Abort - Termina todos os processos MPI dentro de umcomunicador3 MPI_Wtime - Retorna o wall clock time em segundos3 MPI_Finalize - Finaliza o ambiente de execuo MPI

    Instituto Politcnico - RJ Claudir Oliveira

  • Introduo aos conceitos de MPI Formulao do problema MPI e C++ Modelo Computacional MPI Classificao dos Mtodos de paralelizao Programando com MPI Send/Recv entre dois processos Comunicao Coletiva Decomposiao de dados Aplicao em restaurao de imagens Comunicao unilateral

    1

    i n t main ( i n t argc , char a rgv [ ] ){3

    i n t rank , // Numero de rank do p r o c e s s o5 i n t num_procs ; // Numero de p r o c e s s o s

    7 MPI : : I n i t ( argc , a rgv ) ;// i f ( MPI_Init (&argc , &argv ) != MPI_SUCCESS) e x i t (1 ) ;

    9

    MPI : : Request r e q u e s t ; // I d e n t i f i c a d o r de r e q u i s i c a o11 MPI : : S t a tu s s t a tu sReq ; // S ta tu s de comunicacao MPI

    13 //MPI_Comm_size (MPI_COMM_WORLD, &rank ) ;//MPI_Comm_size (MPI_COMM_WORLD, &s i z e ) ;

    15

    rank = MPI : :COMM_WORLD. Get_rank ( ) ;17 num_procs = MPI : :COMM_WORLD. Get_s i z e ( ) ;

    19 // CODIGO EM PARALELO ( Bcast > Sc a r t t e r v > Gat t e r v )

    21 //MPI_F ina l i ze ( ) ;MPI : : F i n a l i z e ( ) ;

    23 }

    Instituto Politcnico - RJ Claudir Oliveira

  • Introduo aos conceitos de MPI Formulao do problema MPI e C++ Modelo Computacional MPI Classificao dos Mtodos de paralelizao Programando com MPI Send/Recv entre dois processos Comunicao Coletiva Decomposiao de dados Aplicao em restaurao de imagens Comunicao unilateralTipos de dadosTipos de dados

    C/C++ datatype MPI datatype MPI datatype

    char MPI::CHAR MPI_CHAR

    wchar_t MPI::WCHAR MPI_WCHAR

    signed short MPI::SHORT MPI_SHORT

    signed int MPI::INT MPI_INT

    signed long MPI::LONG MPI_LONG

    signed char MPI::SIGNED_CHAR MPI_SIGNED_CHAR

    unsigned char MPI::UNSIGNED_CHAR MPI_UNSIGNED_CHAR

    unsigned short MPI::UNSIGNED_SHORT MPI_UNSIGNED_SHORT

    unsigned int MPI::UNSIGNED MPI_UNSIGNED

    float MPI::FLOAT MPI_FLOAT

    double MPI::DOUBLE MPI_DOUBLE

    ...outras

    Instituto Politcnico - RJ Claudir Oliveira

  • Introduo aos conceitos de MPI Formulao do problema MPI e C++ Modelo Computacional MPI Classificao dos Mtodos de paralelizao Programando com MPI Send/Recv entre dois processos Comunicao Coletiva Decomposiao de dados Aplicao em restaurao de imagens Comunicao unilateralMtodos de paralelizaoClasssificao dos mtodo

    Existem diferentes mtodos ou paradigmas de paralelizao.Algoritmos podem ser classificados segundo alguns critrios:

    Localizao dos dados e do programa executvel: SPMD (SingleProgram, Multiple Data)

    Single Program: Cada computador executa exatamente o mesmoprograma (embora algumas partes do programa sejam executadassomente pelo Master).Multiple Data: Os dados so divididos e distribudos entre oscomputadores, ou seja, cada computador recebe informaesdiferentes.

    Diviso de trabalhoSPMD-real: O mestre coordena a execuo do programa e o envio erecebimento de mensagens de e para os slaves.O Master tambm recebe sua parte dos dados e realiza sua parte dosclculos.SPMD-ME (mestre-escravo): O mestre apenas coordena a execuodo programa e os slaves realizam os clculos pesados.

    Espera por mensagensOperaes Blocking, Nonblocking, Collective

    Instituto Politcnico - RJ Claudir Oliveira

  • Introduo aos conceitos de MPI Formulao do problema MPI e C++ Modelo Computacional MPI Classificao dos Mtodos de paralelizao Programando com MPI Send/Recv entre dois processos Comunicao Coletiva Decomposiao de dados Aplicao em restaurao de imagens Comunicao unilateralMtodos de paralelizaoClasssificao dos mtodo

    Existem diferentes mtodos ou paradigmas de paralelizao.Algoritmos podem ser classificados segundo alguns critrios:

    Localizao dos dados e do programa executvel: SPMD (SingleProgram, Multiple Data)

    Single Program: Cada computador executa exatamente o mesmoprograma (embora algumas partes do programa sejam executadassomente pelo Master).Multiple Data: Os dados so divididos e distribudos entre oscomputadores, ou seja, cada computador recebe informaesdiferentes.

    Diviso de trabalhoSPMD-real: O mestre coordena a execuo do programa e o envio erecebimento de mensagens de e para os slaves.O Master tambm recebe sua parte dos dados e realiza sua parte dosclculos.SPMD-ME (mestre-escravo): O mestre apenas coordena a execuodo programa e os slaves realizam os clculos pesados.

    Espera por mensagensOperaes Blocking, Nonblocking, Collective

    Instituto Politcnico - RJ Claudir Oliveira

  • Introduo aos conceitos de MPI Formulao do problema MPI e C++ Modelo Computacional MPI Classificao dos Mtodos de paralelizao Programando com MPI Send/Recv entre dois processos Comunicao Coletiva Decomposiao de dados Aplicao em restaurao de imagens Comunicao unilateralMtodos de paralelizaoClasssificao dos mtodo

    Existem diferentes mtodos ou paradigmas de paralelizao.Algoritmos podem ser classificados segundo alguns critrios:

    Localizao dos dados e do programa executvel: SPMD (SingleProgram, Multiple Data)

    Single Program: Cada computador executa exatamente o mesmoprograma (embora algumas partes do programa sejam executadassomente pelo Master).Multiple Data: Os dados so divididos e distribudos entre oscomputadores, ou seja, cada computador recebe informaesdiferentes.

    Diviso de trabalhoSPMD-real: O mestre coordena a execuo do programa e o envio erecebimento de mensagens de e para os slaves.O Master tambm recebe sua parte dos dados e realiza sua parte dosclculos.SPMD-ME (mestre-escravo): O mestre apenas coordena a execuodo programa e os slaves realizam os clculos pesados.

    Espera por mensagensOperaes Blocking, Nonblocking, Collective

    Instituto Politcnico - RJ Claudir Oliveira

  • Introduo aos conceitos de MPI Formulao do problema MPI e C++ Modelo Computacional MPI Classificao dos Mtodos de paralelizao Programando com MPI Send/Recv entre dois processos Comunicao Coletiva Decomposiao de dados Aplicao em restaurao de imagens Comunicao unilateralMtodos de paralelizaoClasssificao dos mtodo

    Existem diferentes mtodos ou paradigmas de paralelizao.Algoritmos podem ser classificados segundo alguns critrios:

    Localizao dos dados e do programa executvel: SPMD (SingleProgram, Multiple Data)

    Single Program: Cada computador executa exatamente o mesmoprograma (embora algumas partes do programa sejam executadassomente pelo Master).Multiple Data: Os dados so divididos e distribudos entre oscomputadores, ou seja, cada computador recebe informaesdiferentes.

    Diviso de trabalhoSPMD-real: O mestre coordena a execuo do programa e o envio erecebimento de mensagens de e para os slaves.O Master tambm recebe sua parte dos dados e realiza sua parte dosclculos.SPMD-ME (mestre-escravo): O mestre apenas coordena a execuodo programa e os slaves realizam os clculos pesados.

    Espera por mensagensOperaes Blocking, Nonblocking, Collective

    Instituto Politcnico - RJ Claudir Oliveira

  • Introduo aos conceitos de MPI Formulao do problema MPI e C++ Modelo Computacional MPI Classificao dos Mtodos de paralelizao Programando com MPI Send/Recv entre dois processos Comunicao Coletiva Decomposiao de dados Aplicao em restaurao de imagens Comunicao unilateralMtodos de paralelizaoClasssificao dos mtodo

    Existem diferentes mtodos ou paradigmas de paralelizao.Algoritmos podem ser classificados segundo alguns critrios:

    Localizao dos dados e do programa executvel: SPMD (SingleProgram, Multiple Data)

    Single Program: Cada computador executa exatamente o mesmoprograma (embora algumas partes do programa sejam executadassomente pelo Master).Multiple Data: Os dados so divididos e distribudos entre oscomputadores, ou seja, cada computador recebe informaesdiferentes.

    Diviso de trabalhoSPMD-real: O mestre coordena a execuo do programa e o envio erecebimento de mensagens de e para os slaves.O Master tambm recebe sua parte dos dados e realiza sua parte dosclculos.SPMD-ME (mestre-escravo): O mestre apenas coordena a execuodo programa e os slaves realizam os clculos pesados.

    Espera por mensagensOperaes Blocking, Nonblocking, Collective

    Instituto Politcnico - RJ Claudir Oliveira

  • Introduo aos conceitos de MPI Formulao do problema MPI e C++ Modelo Computacional MPI Classificao dos Mtodos de paralelizao Programando com MPI Send/Recv entre dois processos Comunicao Coletiva Decomposiao de dados Aplicao em restaurao de imagens Comunicao unilateralMtodos de paralelizaoClasssificao dos mtodo

    Existem diferentes mtodos ou paradigmas de paralelizao.Algoritmos podem ser classificados segundo alguns critrios:

    Localizao dos dados e do programa executvel: SPMD (SingleProgram, Multiple Data)

    Single Program: Cada computador executa exatamente o mesmoprograma (embora algumas partes do programa sejam executadassomente pelo Master).Multiple Data: Os dados so divididos e distribudos entre oscomputadores, ou seja, cada computador recebe informaesdiferentes.

    Diviso de trabalhoSPMD-real: O mestre coordena a execuo do programa e o envio erecebimento de mensagens de e para os slaves.O Master tambm recebe sua parte dos dados e realiza sua parte dosclculos.SPMD-ME (mestre-escravo): O mestre apenas coordena a execuodo programa e os slaves realizam os clculos pesados.

    Espera por mensagensOperaes Blocking, Nonblocking, Collective

    Instituto Politcnico - RJ Claudir Oliveira

  • Introduo aos conceitos de MPI Formulao do problema MPI e C++ Modelo Computacional MPI Classificao dos Mtodos de paralelizao Programando com MPI Send/Recv entre dois processos Comunicao Coletiva Decomposiao de dados Aplicao em restaurao de imagens Comunicao unilateralMtodos de paralelizaoClasssificao dos mtodo

    Existem diferentes mtodos ou paradigmas de paralelizao.Algoritmos podem ser classificados segundo alguns critrios:

    Localizao dos dados e do programa executvel: SPMD (SingleProgram, Multiple Data)

    Single Program: Cada computador executa exatamente o mesmoprograma (embora algumas partes do programa sejam executadassomente pelo Master).Multiple Data: Os dados so divididos e distribudos entre oscomputadores, ou seja, cada computador recebe informaesdiferentes.

    Diviso de trabalhoSPMD-real: O mestre coordena a execuo do programa e o envio erecebimento de mensagens de e para os slaves.O Master tambm recebe sua parte dos dados e realiza sua parte dosclculos.SPMD-ME (mestre-escravo): O mestre apenas coordena a execuodo programa e os slaves realizam os clculos pesados.

    Espera por mensagensOperaes Blocking, Nonblocking, Collective

    Instituto Politcnico - RJ Claudir Oliveira

  • Introduo aos conceitos de MPI Formulao do problema MPI e C++ Modelo Computacional MPI Classificao dos Mtodos de paralelizao Programando com MPI Send/Recv entre dois processos Comunicao Coletiva Decomposiao de dados Aplicao em restaurao de imagens Comunicao unilateralMtodos de paralelizaoClasssificao dos mtodo

    Existem diferentes mtodos ou paradigmas de paralelizao.Algoritmos podem ser classificados segundo alguns critrios:

    Localizao dos dados e do programa executvel: SPMD (SingleProgram, Multiple Data)

    Single Program: Cada computador executa exatamente o mesmoprograma (embora algumas partes do programa sejam executadassomente pelo Master).Multiple Data: Os dados so divididos e distribudos entre oscomputadores, ou seja, cada computador recebe informaesdiferentes.

    Diviso de trabalhoSPMD-real: O mestre coordena a execuo do programa e o envio erecebimento de mensagens de e para os slaves.O Master tambm recebe sua parte dos dados e realiza sua parte dosclculos.SPMD-ME (mestre-escravo): O mestre apenas coordena a execuodo programa e os slaves realizam os clculos pesados.

    Espera por mensagensOperaes Blocking, Nonblocking, Collective

    Instituto Politcnico - RJ Claudir Oliveira

  • Introduo aos conceitos de MPI Formulao do problema MPI e C++ Modelo Computacional MPI Classificao dos Mtodos de paralelizao Programando com MPI Send/Recv entre dois processos Comunicao Coletiva Decomposiao de dados Aplicao em restaurao de imagens Comunicao unilateralMtodos de paralelizaoClasssificao dos mtodo

    Existem diferentes mtodos ou paradigmas de paralelizao.Algoritmos podem ser classificados segundo alguns critrios:

    Localizao dos dados e do programa executvel: SPMD (SingleProgram, Multiple Data)

    Single Program: Cada computador executa exatamente o mesmoprograma (embora algumas partes do programa sejam executadassomente pelo Master).Multiple Data: Os dados so divididos e distribudos entre oscomputadores, ou seja, cada computador recebe informaesdiferentes.

    Diviso de trabalhoSPMD-real: O mestre coordena a execuo do programa e o envio erecebimento de mensagens de e para os slaves.O Master tambm recebe sua parte dos dados e realiza sua parte dosclculos.SPMD-ME (mestre-escravo): O mestre apenas coordena a execuodo programa e os slaves realizam os clculos pesados.

    Espera por mensagensOperaes Blocking, Nonblocking, Collective

    Instituto Politcnico - RJ Claudir Oliveira

  • Introduo aos conceitos de MPI Formulao do problema MPI e C++ Modelo Computacional MPI Classificao dos Mtodos de paralelizao Programando com MPI Send/Recv entre dois processos Comunicao Coletiva Decomposiao de dados Aplicao em restaurao de imagens Comunicao unilateralComunicaao-P-a-PComunicao P-a-P: Bloqueante x No-bloqueantes

    Send/Receiver - Bloqueante3 Primitivas Bloqueantes: Geram deadlock

    MPI_Send(&buf, count, datatype, dest, tag, comm) MPI_Recv(&buf, count, datatype, source, tag, comm, &status)

    Se no for devidamente implementado, isso pode causar um impasse, umasituao em que um processador no pode enviar uma mensagem, porqueno pode ser recebido por outro processador. Aqui est um cenrio famoso.

    Instituto Politcnico - RJ Claudir Oliveira

  • Introduo aos conceitos de MPI Formulao do problema MPI e C++ Modelo Computacional MPI Classificao dos Mtodos de paralelizao Programando com MPI Send/Recv entre dois processos Comunicao Coletiva Decomposiao de dados Aplicao em restaurao de imagens Comunicao unilateralPrimitivas Send/ReceiverPrimitiva para envio de dados (blocking)

    MPI_Send

    Instituto Politcnico - RJ Claudir Oliveira

  • Introduo aos conceitos de MPI Formulao do problema MPI e C++ Modelo Computacional MPI Classificao dos Mtodos de paralelizao Programando com MPI Send/Recv entre dois processos Comunicao Coletiva Decomposiao de dados Aplicao em restaurao de imagens Comunicao unilateralPrimitivas Send/ReceiverPrimitiva para recebimento de dados (blocking)

    MPI_Recv

    Instituto Politcnico - RJ Claudir Oliveira

  • Introduo aos conceitos de MPI Formulao do problema MPI e C++ Modelo Computacional MPI Classificao dos Mtodos de paralelizao Programando com MPI Send/Recv entre dois processos Comunicao Coletiva Decomposiao de dados Aplicao em restaurao de imagens Comunicao unilateral

    1 // Send/Recv entre dois processos// Codigo usando primitivas MPI em C

    3 i n t main ( i n t argc , char a rgv [ ] ){

    5 i n t rank ;i n t dados = 500 ;

    7 MPI_Status s t a t u s ;

    9 i f ( MPI_In it (&argc , &argv ) != MPI_SUCCESS )e x i t (1 ) ;

    11

    MPI_Comm_Rank(MPI_COMM_WORLD, &rank ) ;13

    i f ( rank == 0)15 MPI_Send(&dados , 1 , MPI_INT , 1 , MPI_ANY_TAG,

    MPI_COMM_WORLD) ;

    17 e l s e i f ( rank == 1)MPI_Recv(&dados , 1 , MPI_INT , 0 , MPI_ANY_TAG,

    MPI_COMM_WORLD, &s t a t u s ) ;19

    MPI_Fina l i ze ( ) ;21 }

    Instituto Politcnico - RJ Claudir Oliveira

  • Introduo aos conceitos de MPI Formulao do problema MPI e C++ Modelo Computacional MPI Classificao dos Mtodos de paralelizao Programando com MPI Send/Recv entre dois processos Comunicao Coletiva Decomposiao de dados Aplicao em restaurao de imagens Comunicao unilateralComunicaao-P-a-PComunicao P-a-P: Bloqueante x No-bloqueantes

    Para que comunicao No-bloqueante?Evitar os DeadlockPermitir simultaneidade entre computao e comunicaao;

    Message Prefetching: Esconder a latncia da comunicao;

    Isend/Ireceiver - No-bloqueante3 Primitivas No-bloqueantes

    MPI_Isend(&buf, count, datatype, dest, tag, comm, &request) MPI_Irecv(&buf, count, datatype, source, tag, comm, &request)

    Ao solicitar, o objeto Request retorna o status de envio ou dorecebimentoTipo de averiguao do Request:

    MPI_Wait: Bloqueia a execuo at o send ou receiver se complete;MPI_Test: True ou False (Se a operao completou, request retornaMPI_REQUEST_NULL)

    Instituto Politcnico - RJ Claudir Oliveira

  • Introduo aos conceitos de MPI Formulao do problema MPI e C++ Modelo Computacional MPI Classificao dos Mtodos de paralelizao Programando com MPI Send/Recv entre dois processos Comunicao Coletiva Decomposiao de dados Aplicao em restaurao de imagens Comunicao unilateralComunicaao-P-a-PComunicao P-a-P: Bloqueante x No-bloqueantes

    Para que comunicao No-bloqueante?Evitar os DeadlockPermitir simultaneidade entre computao e comunicaao;

    Message Prefetching: Esconder a latncia da comunicao;

    Isend/Ireceiver - No-bloqueante3 Primitivas No-bloqueantes

    MPI_Isend(&buf, count, datatype, dest, tag, comm, &request) MPI_Irecv(&buf, count, datatype, source, tag, comm, &request)

    Ao solicitar, o objeto Request retorna o status de envio ou dorecebimentoTipo de averiguao do Request:

    MPI_Wait: Bloqueia a execuo at o send ou receiver se complete;MPI_Test: True ou False (Se a operao completou, request retornaMPI_REQUEST_NULL)

    Instituto Politcnico - RJ Claudir Oliveira

  • Introduo aos conceitos de MPI Formulao do problema MPI e C++ Modelo Computacional MPI Classificao dos Mtodos de paralelizao Programando com MPI Send/Recv entre dois processos Comunicao Coletiva Decomposiao de dados Aplicao em restaurao de imagens Comunicao unilateralComunicaao-P-a-PComunicao P-a-P: Bloqueante x No-bloqueantes

    Para que comunicao No-bloqueante?Evitar os DeadlockPermitir simultaneidade entre computao e comunicaao;

    Message Prefetching: Esconder a latncia da comunicao;

    Isend/Ireceiver - No-bloqueante3 Primitivas No-bloqueantes

    MPI_Isend(&buf, count, datatype, dest, tag, comm, &request) MPI_Irecv(&buf, count, datatype, source, tag, comm, &request)

    Ao solicitar, o objeto Request retorna o status de envio ou dorecebimentoTipo de averiguao do Request:

    MPI_Wait: Bloqueia a execuo at o send ou receiver se complete;MPI_Test: True ou False (Se a operao completou, request retornaMPI_REQUEST_NULL)

    Instituto Politcnico - RJ Claudir Oliveira

  • Introduo aos conceitos de MPI Formulao do problema MPI e C++ Modelo Computacional MPI Classificao dos Mtodos de paralelizao Programando com MPI Send/Recv entre dois processos Comunicao Coletiva Decomposiao de dados Aplicao em restaurao de imagens Comunicao unilateralComunicaao-P-a-PComunicao P-a-P: Bloqueante x No-bloqueantes

    Para que comunicao No-bloqueante?Evitar os DeadlockPermitir simultaneidade entre computao e comunicaao;

    Message Prefetching: Esconder a latncia da comunicao;

    Isend/Ireceiver - No-bloqueante3 Primitivas No-bloqueantes

    MPI_Isend(&buf, count, datatype, dest, tag, comm, &request) MPI_Irecv(&buf, count, datatype, source, tag, comm, &request)

    Ao solicitar, o objeto Request retorna o status de envio ou dorecebimentoTipo de averiguao do Request:

    MPI_Wait: Bloqueia a execuo at o send ou receiver se complete;MPI_Test: True ou False (Se a operao completou, request retornaMPI_REQUEST_NULL)

    Instituto Politcnico - RJ Claudir Oliveira

  • Introduo aos conceitos de MPI Formulao do problema MPI e C++ Modelo Computacional MPI Classificao dos Mtodos de paralelizao Programando com MPI Send/Recv entre dois processos Comunicao Coletiva Decomposiao de dados Aplicao em restaurao de imagens Comunicao unilateralComunicaao-P-a-PComunicao P-a-P: Bloqueante x No-bloqueantes

    Para que comunicao No-bloqueante?Evitar os DeadlockPermitir simultaneidade entre computao e comunicaao;

    Message Prefetching: Esconder a latncia da comunicao;

    Isend/Ireceiver - No-bloqueante3 Primitivas No-bloqueantes

    MPI_Isend(&buf, count, datatype, dest, tag, comm, &request) MPI_Irecv(&buf, count, datatype, source, tag, comm, &request)

    Ao solicitar, o objeto Request retorna o status de envio ou dorecebimentoTipo de averiguao do Request:

    MPI_Wait: Bloqueia a execuo at o send ou receiver se complete;MPI_Test: True ou False (Se a operao completou, request retornaMPI_REQUEST_NULL)

    Instituto Politcnico - RJ Claudir Oliveira

  • Introduo aos conceitos de MPI Formulao do problema MPI e C++ Modelo Computacional MPI Classificao dos Mtodos de paralelizao Programando com MPI Send/Recv entre dois processos Comunicao Coletiva Decomposiao de dados Aplicao em restaurao de imagens Comunicao unilateralPrimitivas Isend/IrecvPrimitiva no-bloqueante para envio de dados (non-blocking)

    MPI_Isend

    Instituto Politcnico - RJ Claudir Oliveira

  • Introduo aos conceitos de MPI Formulao do problema MPI e C++ Modelo Computacional MPI Classificao dos Mtodos de paralelizao Programando com MPI Send/Recv entre dois processos Comunicao Coletiva Decomposiao de dados Aplicao em restaurao de imagens Comunicao unilateralPrimitivas Isend/IrecvPrimitiva no-bloqueante para recebimento de dados (non-blocking)

    MPI_Irecv

    Instituto Politcnico - RJ Claudir Oliveira

  • Introduo aos conceitos de MPI Formulao do problema MPI e C++ Modelo Computacional MPI Classificao dos Mtodos de paralelizao Programando com MPI Send/Recv entre dois processos Comunicao Coletiva Decomposiao de dados Aplicao em restaurao de imagens Comunicao unilateralIsend/IrecvExempo bsico de uso: Isend/ Irecv entre dois processos

    1 int main(int argc , char *argv[]){2 int numtasks , workers = 4, rank , next , prev , buf[2], tag1 =1,

    tag2 =2; // workers = size request3

    4 MPI :: Init(argc , argv);5 MPI_Request Rq[4]; // Identificador de requisicao6 MPI :: Status statsRq [4];// Status de comunicacao MPI7

    8 rank = MPI :: COMM_WORLD . Get_rank ();9 numtasks = MPI :: COMM_WORLD . Get_size ();

    10

    11 prev = rank -1; next = rank+1;12 if (rank == 0) prev = numtasks - 1;13 if (rank == ( numtasks - 1)) next = 0;14

    15 Rq[0] = MPI :: COMM_WORLD .Irecv (& buf[0] ,1,MPI ::INT ,prev ,tag1);16 Rq[1] = MPI :: COMM_WORLD .Irecv (& buf[1] ,1,MPI ::INT ,next ,tag2);17 Rq[2] = MPI :: COMM_WORLD .Isend (&rank ,1, MPI ::INT ,prev ,tag2);18 Rq[3] = MPI :: COMM_WORLD .Isend (&rank ,1, MPI ::INT ,next ,tag1);19

    20 //{do algum_trabalho }21 MPI :: Request :: Waitall (workers , Rq , statsRq );22 MPI :: Finalize ();23 } Instituto Politcnico - RJ Claudir Oliveira

  • Introduo aos conceitos de MPI Formulao do problema MPI e C++ Modelo Computacional MPI Classificao dos Mtodos de paralelizao Programando com MPI Send/Recv entre dois processos Comunicao Coletiva Decomposiao de dados Aplicao em restaurao de imagens Comunicao unilateralIsend/IrecvExempo bsico de uso: Isend/ Irecv entre dois processos

    Exemplo prtico: Calcular uma aproximao para a funo seno.

    sin(x) =

    n=0

    (1)n(2n1)!x

    2n1

    Instituto Politcnico - RJ Claudir Oliveira

  • Introduo aos conceitos de MPI Formulao do problema MPI e C++ Modelo Computacional MPI Classificao dos Mtodos de paralelizao Programando com MPI Send/Recv entre dois processos Comunicao Coletiva Decomposiao de dados Aplicao em restaurao de imagens Comunicao unilateralComunicaao ColetivaComunicao Coletiva

    Na comunicao coletiva, todos os processadores esto envolvidosno processo de comunicao.Caso em que voc precisa de comunicao coletiva: Se umprocessador quer dizer a todos os outros processadores que terminoude computar algo (em vez de escrever um lao com as operaesSend/Receiver ).

    Primitivas3 Um para vrios: MPI_Bcast, MPI_Scatter

    A operao Broadcast consiste no envio de dados a partir de umprocessador para os outros.MPI_Bcast(&buffer, count, datatype, root, comm)

    Instituto Politcnico - RJ Claudir Oliveira

  • Introduo aos conceitos de MPI Formulao do problema MPI e C++ Modelo Computacional MPI Classificao dos Mtodos de paralelizao Programando com MPI Send/Recv entre dois processos Comunicao Coletiva Decomposiao de dados Aplicao em restaurao de imagens Comunicao unilateralComunicaao ColetivaComunicao Coletiva

    Na comunicao coletiva, todos os processadores esto envolvidosno processo de comunicao.Caso em que voc precisa de comunicao coletiva: Se umprocessador quer dizer a todos os outros processadores que terminoude computar algo (em vez de escrever um lao com as operaesSend/Receiver ).

    Primitivas3 Um para vrios: MPI_Bcast, MPI_Scatter

    A operao Broadcast consiste no envio de dados a partir de umprocessador para os outros.MPI_Bcast(&buffer, count, datatype, root, comm)

    Instituto Politcnico - RJ Claudir Oliveira

  • Introduo aos conceitos de MPI Formulao do problema MPI e C++ Modelo Computacional MPI Classificao dos Mtodos de paralelizao Programando com MPI Send/Recv entre dois processos Comunicao Coletiva Decomposiao de dados Aplicao em restaurao de imagens Comunicao unilateralComunicaao ColetivaComunicao Coletiva

    Na comunicao coletiva, todos os processadores esto envolvidosno processo de comunicao.Caso em que voc precisa de comunicao coletiva: Se umprocessador quer dizer a todos os outros processadores que terminoude computar algo (em vez de escrever um lao com as operaesSend/Receiver ).

    Primitivas3 Um para vrios: MPI_Bcast, MPI_Scatter

    A operao Broadcast consiste no envio de dados a partir de umprocessador para os outros.MPI_Bcast(&buffer, count, datatype, root, comm)

    Instituto Politcnico - RJ Claudir Oliveira

  • Introduo aos conceitos de MPI Formulao do problema MPI e C++ Modelo Computacional MPI Classificao dos Mtodos de paralelizao Programando com MPI Send/Recv entre dois processos Comunicao Coletiva Decomposiao de dados Aplicao em restaurao de imagens Comunicao unilateralComunicaao ColetivaComunicao Coletiva

    Na comunicao coletiva, todos os processadores esto envolvidosno processo de comunicao.Caso em que voc precisa de comunicao coletiva: Se umprocessador quer dizer a todos os outros processadores que terminoude computar algo (em vez de escrever um lao com as operaesSend/Receiver ).

    Primitivas3 Um para vrios: MPI_Bcast, MPI_Scatter

    A operao Broadcast consiste no envio de dados a partir de umprocessador para os outros.MPI_Bcast(&buffer, count, datatype, root, comm)

    Instituto Politcnico - RJ Claudir Oliveira

  • Introduo aos conceitos de MPI Formulao do problema MPI e C++ Modelo Computacional MPI Classificao dos Mtodos de paralelizao Programando com MPI Send/Recv entre dois processos Comunicao Coletiva Decomposiao de dados Aplicao em restaurao de imagens Comunicao unilateralComunicaao ColetivaComunicao Coletiva

    Primitivas3 MPI_Gather3 MPI_Reduce3 Vrios para vrios: MPI_Allreduce, MPI_Allgather3 Sincronizao: MPI_Barrier (MPI_Barrier(comm))

    MPIGather consiste em recolher os dados de um grupo deprocessador e fazer algo com eles.

    Por exemplo, o processador master pode querer recolher a soluo decada processador de coloc-los em uma matriz final.MPI_Gather(&sendbuf, sendcnt, sendtype, &recvbuf, recvcount,recvtype, root, comm)

    Instituto Politcnico - RJ Claudir Oliveira

  • Introduo aos conceitos de MPI Formulao do problema MPI e C++ Modelo Computacional MPI Classificao dos Mtodos de paralelizao Programando com MPI Send/Recv entre dois processos Comunicao Coletiva Decomposiao de dados Aplicao em restaurao de imagens Comunicao unilateralExemploExemplo: MPI_Scatter / MPI_Gather

    Multiplicao de Matriz

    1 MPI MASTER = 0;2

    3 for (int i = 0; i < NIterac ; i ++)4 {5 MPI_Scatter (...); // Master faz a distribuicao do trabalho

    p/ slaves6

    7 if(Rank == MPI_MASTER )8 Fill_Matrix_A_With_New_Data (); // Raiz9

    10 else11 Computer (); // slaves12 // Raiz coleta os resultados dos slaves13 MPI_Gather (...);14

    15 if (Rank == MPI_MASTER )16 Write_Results ();17 }

    Instituto Politcnico - RJ Claudir Oliveira

  • Introduo aos conceitos de MPI Formulao do problema MPI e C++ Modelo Computacional MPI Classificao dos Mtodos de paralelizao Programando com MPI Send/Recv entre dois processos Comunicao Coletiva Decomposiao de dados Aplicao em restaurao de imagens Comunicao unilateralPrimitiva coletiva MPI_ReduceComunicao coletiva MPI_Reduce:

    Vrios para um: MPI_Reduce Consiste na coleta de dados dosprocessadores e aplica uma operao algbrica (soma, produto, etc..) sobre esses valores.

    Algumas operaes coletivas tipo reduo: MPI_SUM,MPI_PROD, MPI_MAX, MPI_LAND ...(114 padro)

    Instituto Politcnico - RJ Claudir Oliveira

  • Introduo aos conceitos de MPI Formulao do problema MPI e C++ Modelo Computacional MPI Classificao dos Mtodos de paralelizao Programando com MPI Send/Recv entre dois processos Comunicao Coletiva Decomposiao de dados Aplicao em restaurao de imagens Comunicao unilateral

    ss

    MPI_BARRIER: Todos os processos que as invocam so bloqueadosat que todos os processos do comunicador invoquem a barreira.MPI_Prob: Chamanda equvoca. Ele aceita a mensagem eatualiza o status mas no transferir os dados de/para qualquer lugar16 operaes coletivas

    Instituto Politcnico - RJ Claudir Oliveira

  • Introduo aos conceitos de MPI Formulao do problema MPI e C++ Modelo Computacional MPI Classificao dos Mtodos de paralelizao Programando com MPI Send/Recv entre dois processos Comunicao Coletiva Decomposiao de dados Aplicao em restaurao de imagens Comunicao unilateralExemplo de programa MPIExemplos de aplicao das primitivas de comunicao Coletiva

    Exemplo prtico: Calcular uma aproximao para a funo seno.

    sin(x) =

    n=0

    (1)n(2n1)!x

    2n1

    Instituto Politcnico - RJ Claudir Oliveira

  • Introduo aos conceitos de MPI Formulao do problema MPI e C++ Modelo Computacional MPI Classificao dos Mtodos de paralelizao Programando com MPI Send/Recv entre dois processos Comunicao Coletiva Decomposiao de dados Aplicao em restaurao de imagens Comunicao unilateralModeloe de decomposioOpes de decomposio de dados

    5 Os modelos mais comuns so denominados:Decomposio funcional : decompe o problema em funo dacomputao;Decomposio de domnio : decompe em grupos e distribui porentre mltiplos processadores;

    Trs opes para decomposio:Particionamento de bloco em linha ou coluna (Striped Partition)3 Divide os elementos da matriz em grupo de linhas ou colunas ;3 Cada processo responsvel por um grupo contnuo de linhas(m/p) ou ou colunas (n/p) ;Decomposio de blocos em tabuleiros - 2D3Matrix dividida em blocos 2D alinhando com a grade (gradevirtual) de r linhas e n colunas;3Cada processo responsvel por um bloco de matriz contendo, nomximo, m/r linhas ou n/c colunas;ddd

    Instituto Politcnico - RJ Claudir Oliveira

  • Introduo aos conceitos de MPI Formulao do problema MPI e C++ Modelo Computacional MPI Classificao dos Mtodos de paralelizao Programando com MPI Send/Recv entre dois processos Comunicao Coletiva Decomposiao de dados Aplicao em restaurao de imagens Comunicao unilateralProcessamento ParaleloParticionamento de bloco em Coluna: Matriz x vetor

    1 // Multiplicacao de Matriz e vetor2 Entrada : Matriz mat[m][n] Vec[n]3 Saida: out[m]4 for(int i = 0; i < m; i++ ){5 out[i] = 0;6 for(int j = 0; j < n; j++ )7 out[i] += mat[i][j] * Vec[j];8 }

    Suponha que cada tarefa primitiva i tenha coluna i da matriz eelemento i de entrada e de sada de vetores;

    A b = c

    a0,0 a0,1 a0,n1a1,0 a1,1 a1,n1...

    .... . . a2,n1

    am1,0 am1,1 am1,n1

    b0b1...

    bn1

    =[c0 c1 cn1

    ]

    c0 = a0,0b0 + a0,1b1+ +a0,n1c1 = a1,0b0 + a1,1b1+ +a1,n1...

    ......

    ...cm1 = am1,0b0 + am1,1b1+ am1,n1bn1

    O clculo comea com cada tarefa j multiplicando a sua coluna de Apor bj , resultando em um vector de resultados parciaisNo fim do clculo, cada tarefa necessita de apenas um nicoelemento de vetor ci resultante;

    Instituto Politcnico - RJ Claudir Oliveira

  • Introduo aos conceitos de MPI Formulao do problema MPI e C++ Modelo Computacional MPI Classificao dos Mtodos de paralelizao Programando com MPI Send/Recv entre dois processos Comunicao Coletiva Decomposiao de dados Aplicao em restaurao de imagens Comunicao unilateralModelos de decomposioModelos de decomposio

    Casos: Striped Partition e Overlapping Blocks ou Multisplittings

    Diviso dos blocos ?Unidades Homogneas e Heterogneas

    Instituto Politcnico - RJ Claudir Oliveira

  • Introduo aos conceitos de MPI Formulao do problema MPI e C++ Modelo Computacional MPI Classificao dos Mtodos de paralelizao Programando com MPI Send/Recv entre dois processos Comunicao Coletiva Decomposiao de dados Aplicao em restaurao de imagens Comunicao unilateralProcessamento ParaleloAplicao das funes Nonblocking

    3 Emprego da funo Nonblocking em processamento de imagens.

    Figura: Modelo de decomposio de domnio (Oliveira C., 2011)

    Decomposio usada em ambiente paralelo SPMD

    Instituto Politcnico - RJ Claudir Oliveira

  • Introduo aos conceitos de MPI Formulao do problema MPI e C++ Modelo Computacional MPI Classificao dos Mtodos de paralelizao Programando com MPI Send/Recv entre dois processos Comunicao Coletiva Decomposiao de dados Aplicao em restaurao de imagens Comunicao unilateral

    Processamento Paralelo

    3 Abordagem computacional que emprega tcnicas de decomposiode domnio.

    Figura: Distribuio da imagens entre os processadores

    Instituto Politcnico - RJ Claudir Oliveira

  • Introduo aos conceitos de MPI Formulao do problema MPI e C++ Modelo Computacional MPI Classificao dos Mtodos de paralelizao Programando com MPI Send/Recv entre dois processos Comunicao Coletiva Decomposiao de dados Aplicao em restaurao de imagens Comunicao unilateralProcessamento ParaleloMPE - Jumpshot

    3 MPE - Multi - Processing Environment

    Instituto Politcnico - RJ Claudir Oliveira

  • Introduo aos conceitos de MPI Formulao do problema MPI e C++ Modelo Computacional MPI Classificao dos Mtodos de paralelizao Programando com MPI Send/Recv entre dois processos Comunicao Coletiva Decomposiao de dados Aplicao em restaurao de imagens Comunicao unilateral

    SpeedU

    3 Abordagem computacional que emprega tcnicas de decomposiode domnio.

    1 2 3 4 5 6 7 8Num. Processadores

    0.0

    0.5

    1.0

    1.5

    2.0

    2.5

    3.0

    3.5

    Spee

    dUP

    Imagem 256x256Imagem 512x512Imagem 1024x1024

    Instituto Politcnico - RJ Claudir Oliveira

  • Introduo aos conceitos de MPI Formulao do problema MPI e C++ Modelo Computacional MPI Classificao dos Mtodos de paralelizao Programando com MPI Send/Recv entre dois processos Comunicao Coletiva Decomposiao de dados Aplicao em restaurao de imagens Comunicao unilateralComunicao unilateralComunicao unilateral - MPI - 2

    Two-sided communication: Comunicao nos dois lados;Processo envia (send) e recebe (recv) explicitamente;Grau de sincronizao;A operao recv no pode ser concluida antes do envio ser iniciado;

    Chamada de One-sided communication: Processo envia (ou recebe)dados do outro sem interferncia explicita do outro;

    Pode reduzir a sincronizao e assim melhorar o desempenho;Pode reduzir a movimentao de dados;Pode simplificar a programao: Um nico lado define acomunicao;

    Ppotencialmente Eficiente: Usa novas funcionalidades das placasde comunicao de redes rpidas

    RDMA (Remote Direct Memory Access) permite leitura/escrita namemria sem interromper a CPU

    Entretanto gera condies de corrida inesperadas e difceis dedetectar (Acesso simultneo local e remoto mesma posio damemria)

    Instituto Politcnico - RJ Claudir Oliveira

  • Introduo aos conceitos de MPI Formulao do problema MPI e C++ Modelo Computacional MPI Classificao dos Mtodos de paralelizao Programando com MPI Send/Recv entre dois processos Comunicao Coletiva Decomposiao de dados Aplicao em restaurao de imagens Comunicao unilateralComunicao unilateralComunicao unilateral - MPI - 2

    Semntica separa comunicao de sincronismoAs semticas bloqueantes MPI_Send e MPI_Recv contmcomunicao e sincronismoMas, MPI_Isend e MPI_Irecv realizam comunicao enquantoMPI_Wait faz sincronizao

    Para enviar dados, o processo que emite a comunicao (envio) deveindicar onde colocar os dados na memria do outroPara receber dados, o processo que emite a comunicao (recepo)deveindicar onde retirar os dados da memria do outro

    Instituto Politcnico - RJ Claudir Oliveira

  • Introduo aos conceitos de MPI Formulao do problema MPI e C++ Modelo Computacional MPI Classificao dos Mtodos de paralelizao Programando com MPI Send/Recv entre dois processos Comunicao Coletiva Decomposiao de dados Aplicao em restaurao de imagens Comunicao unilateralComunicao unilateralJanela de Comunicao

    O conceito de janela (window) de memria expe trecho da memriade um processo a outros

    Necessrio para que outros processos possam citar memria alheiaTambm define quais processos podem acessar a janelaProcessos distintos podem expor trechos distintos de memria (cadaprocesso expe sua janela)

    Em operaes de envio/recepo de mensagens, o trecho damemria alheia especificado por:

    target_disp: displacement da posio inicial da janela alheiatarget_count: quantos elementos do tipo target_datatype seroenviadostarget_datatype: tipo MPI no destino O trecho de memria alheiaobrigatoriamente est contido na janela exposta pelo processo alvo

    O trecho de memria alheia obrigatoriamente est contido na janelaexposta pelo processo alvo;

    Instituto Politcnico - RJ Claudir Oliveira

  • Introduo aos conceitos de MPI Formulao do problema MPI e C++ Modelo Computacional MPI Classificao dos Mtodos de paralelizao Programando com MPI Send/Recv entre dois processos Comunicao Coletiva Decomposiao de dados Aplicao em restaurao de imagens Comunicao unilateralComunicao unilateralPrimitivas e Exemplo de uso

    MPI_Win_Get (...): pode ser usado para agarrar os dados damemria de um processo remotoMPI_Win_Put (...)MPI_Win_Accumulate(...)_Put() e _Get() e _Accumulate permitem um processo para acessarum outro espao de endereo, sem qualquer participao explcita;Chamadas para estas rotinas sao bloqueantesSignifica que eles iniciam a transferncia, mas a transferncia noprecisa completar antes do retorno de chamadasNecessidade de um mecanismo de sincronizao independenteMPI_Win_fence (). Buffers afetadas no devem ser modificados ato retorno de chamada de sincronizao.MPI_Win_free (MPI_Win *win)MPI_Win_fence (...)EXEMPLO: Escreva uma um programa que usa MPI_ Get () paraextrair valores de matrizes de processos remotos e armazen-los emmatrizes locais.

    Instituto Politcnico - RJ Claudir Oliveira

  • Introduo aos conceitos de MPI Formulao do problema MPI e C++ Modelo Computacional MPI Classificao dos Mtodos de paralelizao Programando com MPI Send/Recv entre dois processos Comunicao Coletiva Decomposiao de dados Aplicao em restaurao de imagens Comunicao unilateral

    Referncias

    KE MARTIN BURTSCHER, E. S. J. Reducing communication timethrough message pre- fetching. In: Intl. Conf. on parallel anddistributed processing techniques and applications. [S.l.: s.n.], 2005.p. 62005. .

    OLIVEIRA C. Implementao paralela do algoritmo iterativo debusca do parmetro de regularizao timo para o funcional deTikhonov no problema de restaurao de imagens. Dissertao deMestrado - Universidade do Estado do Rio de Janeiro - UERJ/IPRJ,2012.D. Tompa; Morton, J; Jernigan, E., Perceptually based imagecomparison, Vol. 1, N. 1, Proceedings 2000 International Conferenceon Image Processing Cat No00CH37101, Ieee, p. 489492, 2000.

    Stutz, D. ; A. J. Silva Neto, Fundamentos de Computao Paralelapara a Restaurao de Imagens de Microscopia de Fora Atmica,Vol. 58, Notas em Matemtica Aplicada, SBMAC, So Carlos, 2011,ISBN 978-85-86883-52-1 (e-ISBN 978-85-86883-3)

    Instituto Politcnico - RJ Claudir Oliveira

    Introduo aos conceitos de MPIInstalao e execuoMPI e C/C++Estrutura de cdigo MPI Classificao dos Mtodos de paralelizaoComunicao Ponto-a-PontoComunicao ColetivaDecomposio de dadosAplicao em restaurao de imagensComunicao unilateral