introducao_computacao_paralela
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