Programação Paralela e Distribuída com MPI, OpenMP e OpenACC para computação de alto desempenho
Gabriel P. Silva, Calebe P. Bianchini, Evaldo B. CostaConteúdo
A programação paralela nos permite criar aplicações que podem realizar uma quantidade expressiva de cálculos sobre um conjunto significativo de dados, com resultados em prazos muito mais reduzidos, quando comparados com ouso da programação sequencial. Com isso, abrem-se possibilidades para desenvolvimento de modelos computacionais mais sofisticados para a solução de problemas cada vez mais complexos.
Neste livro, os autores apresentam conceitos iniciais do paradigma de programação paralela em um guia seguro, eficiente e produtivo. Você aprenderá sobre as APIs e bibliotecas MPI, para troca de mensagens, além de OpenMP e OpenACC, para uso com o paradigma de memória compartilhada e aceleradores. Ao longo do livro são apresentados exemplos objetivos para o uso de cada uma das funções, diretivas e cláusulas dos paradigmas, bibliotecas e interfaces abordados. Todos cuidadosamente elaborados, compilados e testados em ambientes paralelos, de modo que possam ser baixados e reproduzidos facilmente por estudantes, profissionais e entusiastas. O livro ainda conta com estudos de caso e exercícios ao final de cada capítulo, como forma de fixação e complemento dos conceitos elencados na parte teórica.
Sumário
- 1 Introdução
- 1.1 Exemplos de aplicações paralelas
- 1.2 MPI
- 1.3 OpenMP
- 1.4 OpenACC
- 2 Conceitos básicos
- 2.1 Processos e Threads
- 2.2 Programação paralela
- 2.3 Balanceamento de carga
- 2.4 Avaliação de desempenho
- 2.5 Arquiteturas paralelas
- 2.6 Exercícios propostos
- 3 Comunicação ponto a ponto no MPI
- 3.1 Introdução
- 3.2 Comunicadores
- 3.3 Exemplo de um programa em MPI
- 3.4 Funções de gerenciamento do ambiente
- 3.5 Envio e recepção de mensagens
- 3.6 Identificando as mensagens recebidas
- 3.7 Algumas recomendações
- 3.8 Estudo de caso: método do trapézio
- 3.9 Exercícios propostos
- 4 Comunicação coletiva no MPI
- 4.1 Barreira
- 4.2 Difusão
- 4.3 Distribuição
- 4.4 Coleta
- 4.5 Redução
- 4.6 Redução com difusão
- 4.7 Coleta com difusão
- 4.8 Transposição
- 4.9 Algumas observações
- 4.10 Estudo de caso: multiplicação de matriz por vetor
- 4.11 Exercícios propostos
- 5 Comunicação MPI em detalhes
- 5.1 Introdução
- 5.2 Rotinas de envio e recepção bloqueantes
- 5.3 Rotinas de envio e recepção não bloqueantes
- 5.4 Esperando a mensagem
- 5.5 Modos de comunicação
- 5.6 Evitando o impasse ou deadlock
- 5.7 Considerações de desempenho
- 5.8 Estudo de caso: números primos
- 5.9 Exercícios propostos
- 6 OpenMP
- 6.1 Introdução
- 6.2 Diretivas principais
- 6.3 Funções OPENMP
- 6.4 Cláusulas
- 6.5 Sincronização
- 6.6 Variáveis de ambiente
- 6.7 Erros comuns e recomendações
- 6.8 Estudos de caso
- 6.9 Exercícios
- 7 OpenACC
- 7.1 Modelo de programação OpenACC
- 7.2 Diretivas principais
- 7.3 Movimentação de dados
- 7.4 Cláusulas das diretivas parallel
- 7.5 Cláusulas da diretiva loop
- 7.6 Diretivas avançadas
- 7.7 Funções OpenACC
- 7.8 Variáveis de ambiente
- 7.9 Erros comuns e recomendações
- 7.10 Estudos de caso
- 7.11 Exercícios
- 8 Ambientes de execução
- 8.1 Preparação do ambiente de execução MPI
- 8.2 Preparação do Ambiente de Execução OpenMP
- 8.3 Preparação do ambiente de execução OpenACC
- Referências
Autores
Gabriel P. Silva
Gabriel P. Silva tem doutorado em Engenharia de Sistemas e Computação pela Universidade Federal do Rio de Janeiro. Atualmente é Professor Associado do Instituto de Computação da UFRJ. Tem larga experiência na área de Ciência da Computação, com ênfase em Arquitetura de Sistemas de Computação, atuando principalmente nos seguintes temas: arquitetura de computadores, programação paralela, computação de alto desempenho e internet das coisas.
Calebe P. Bianchini
Calebe P. Bianchini tem mais de 20 anos de experiência com computação paralela e distribuída, participação em diversos projetos de pesquisa e desenvolvimento de software de diversos tamanhos, para diversas empresas (por exemplo, Petrobras, Shell, Intel etc.). Hoje é professor da Universidade Presbiteriana Mackenzie, atuando também com pesquisa, e gerencia pequenas equipes de desenvolvimento de software in-house. Formou-se em Ciência da Computação na UFSCar (2000), com mestrado na UFSCar (2002) e doutorado na POLI/USP (2009).
Evaldo B. Costa
Evaldo B. Costa é Engenheiro de telecomunicações, mestre e doutor em informática pela Universidade Federal do Rio de Janeiro (UFRJ). Possui mais de vinte anos de experiência na área de Tecnologia da Informação e atua principalmente nos seguintes temas: programação paralela e computação de alto desempenho.
Dados do produto
- Número de páginas:
- 364
- ISBN:
- 978-85-5519-303-3
- Data publicação:
- 05/2022