APRESENTAÇÃO. Slides baseados no material de Marco A. Zanata Alves - UFPR (2016) Curso: CI316 Programação Paralela INTEL MODERN CODE PARTNER 1

Documentos relacionados
Introdução à Computação: Sistemas de Computação

Programação Concorrente e Paralela

Arquiteturas Paralelas

SSC PROGRAMAÇÃO CONCORRENTE

OpenMP: Variáveis de Ambiente

Programação de Alto Desempenho - 2. Prof: Carla Osthoff

Introdução OpenMP. Nielsen Castelo Damasceno

Programação Paralela e Distribuída 2010/11. Métricas de Desempenho. Ricardo Rocha DCC-FCUP

AULA 06: PROGRAMAÇÃO EM MÁQUINAS PARALELAS

The future is parallel but it may not be easy

PCC104 Projeto e Análise de Algoritmos

Medida de desempenho

Universidade Federal do Rio de Janeiro Informática DCC/IM. Arquitetura de Computadores II. Arquiteturas MIMD. Arquiteturas MIMD

speedup aprimorado aprimorado Fração aprimorada speedup aprimorado Fração aprimorada speedup aprimorado Tempo original Fração aprimorada aprimorado

Exemplo de Arquitetura: Cliente/Servidor com Mestre e Escravos. Interface. Fator de speed-up. Speed-up

DESENVOLVIMENTO DE UM ALGORITMO PARALELO PARA APLICAÇÃO EM CLUSTER DE COMPUTADORES

SSC PROGRAMAÇÃO CONCORRENTE. Aula 03 Terminologia Geral de Computação Paralela Prof. Jó Ueyama

Paralelismo em Computadores com Tecnologia Multicore

Carlos Eduardo Batista Centro de Informática - UFPB

Organização de Computadores II. Arquiteturas MIMD

Arquitetura de Computadores

Organização de Computadores 2005/2006 Processamento Paralelo

Introdução à Computação: Sistemas de Computação

Programação Concorrente e Paralela

Paralelização de Algoritmos de CFD em Clusters Multi-Core MC7. Escola de Verão Arquiteturas Multi-Core

Introdução. Programação Paralela. Motivação. Conhecimento do Hardware. Análise de Desempenho. Modelagem do Problema

Programação Paralela e Distribuída

Introdução ao Processamento de Alto Desempenho

Modelos para Concorrência

de petróleo. Um novo domínio chamado computação de propósito geral em processadores gráficos (GPGPU) surgiu quando os pipelines de gráficos de

Programação Paralela. Profa Mariana Kolberg e Prof. Luiz Gustavo Fernandes

SSC0611 Arquitetura de Computadores

Introdução à OpenMP (Dia 1) Prof. Guido Araujo

Aluno de Pós-Graduação em Engenharia de Software para Dispositivos Móveis pela UNINTER

AULA 03: PROCESSAMENTO PARALELO: MULTIPROCESSADORES

Processamento Paralelo

Programação Concorrente e Paralela. Noemi Rodriguez

Universidade Estadual de Mato Grosso do Sul UEMS Curso de Ciência da Computação Disciplina de Algoritmos Paralelos e Distribuídos

Visualização Distribuída utilizando Agrupamentos de PCs 10

Bibliografia em processamento paralelo

SSC PROGRAMAÇÃO CONCORRENTE. Aula 06 Modelos de Programação Prof. Jó Ueyama e Julio Cezar Estrella

SSC PROGRAMAÇÃO CONCORRENTE. Aula 04 Técnicas de Desenvolvimento de Programas Paralelos Parte 1 Prof. Jó Ueyama

Exemplo Amdahl. O speedup total é dado por:

Monografia de Conclusão do Curso de Graduação em Ciência da Computação. 2

Paralela e Distribuída. Memórias Cache e Arquitecturas Multi-Processador

Análise e desenho de algoritmos Paralelos Implementação em Java

Sistemas Distribuídos e Paralelos

1.1 Descrição do problema A programação genética (PG) é uma meta-heurística utilizada para gerar programas de computadores, de modo que o computador

Guia del Laboratório 2 Desenho e Implementação de algoritmos paralelos Introdução

Laboratório de Programação Paralela. Introdução. Prof. Carlos Bazilio

UNIVERSIDADE FEDERAL DO PARÁ PRÓ-REITORIA DE PESQUISA E PÓS-GRADUAÇÃO DIRETORIA DE PESQUISA PROGRAMA INSTITUCIONAL DE BOLSAS DE INICIAÇÃO CIENTÍFICA

Avaliação de Desempenho

ISPC:A SPMP Compiler for High-Performance CPU Programming

Computadores e Programação (DCC/UFRJ)

Concorrência em Processos

Paralelização do Método de Jacobi em Memória Compartilhada 1

Avaliação de Desempenho

Programação Concorrente e Paralela. Noemi Rodriguez

PROCESSADORES Unidade de Controle Unidade Aritmética e Lógica efetua memória de alta velocidade registradores Program Counter Instruction Register

BALANCEAMENTO DE CARGA EM SISTEMAS MULTIPROCESSADORES UTILIZANDO O MODELO DE PROGRAMAÇÃO CHARM++ 1

Sistema Distribuído. Sistema Distribuído. Aplicações Distribuídas. Conceitos Básicos

Introdução aos Conceitos de Computação Paralela através da estimativa de Pi

ANÁLISE DE DESEMPENHO COM A PARALELIZAÇÃO DO CÁLCULO DE NÚMEROS PERFEITOS 1

Técnicas de Processamento Paralelo na Geração do Fractal de Mandelbrot

Computação de Alto Desempenho Clusters de PCs

Desafios do Mapeamento de Processos em Arquiteturas Many-Core

Linguagem de Programação II

Computação Paralela (CUDA)

Paralelismo de dados. (execução de simultaneidade) Tipo de arquitetura paralela SIMD. SIMD (Single Instruction Multiple Data)

Arquitecturas Paralelas I Computação Paralela em Larga Escala LESI - 4º Ano. Desenvolvimento de Aplicações Paralelas

Microarquiteturas Avançadas

UM ESTUDO COMPARATIVO DE DESEMPENHO UTILIZANDO PROGRAMAÇÃO SEQUENCIAL VS PARALELA APLICADO EM ALGORITMOS GENÉTICOS 1

OpenMP. Slides baseados em tutorial de Tim Mattson da Intel

Arquitetura de Computadores

Paralelismo de dados. (execução de simultaneidade) Tipo de arquitetura paralela SIMD. SIMD (Single Instruction Multiple Data)

Tipos de Sistemas Operacionais

SSC510 Arquitetura de Computadores. 6ª aula

Construtores de Sicronização em OpenMP

Paradigmas de Processamento Paralelo na Resolução do Fractal de Mandelbrot

Programação Concorrente. Prof. Hugo Vieira Neto

INE 5645 PROGRAMAÇÃO PARALELA E DISTRIBUIDA PROVA 2 03/07/2017 ALUNO

Paradigmas de Computação

Desempenho. Na otimização do projeto, as métricas mais importantes são custo e desempenho. Arquiteturas de Alto Desempenho - Prof a Luiza Mourelle 1

Exploração do paralelismo em arquiteturas multicore, multicomputadores e gpus

TÍTULO: PROGRAMAÇÃO PARALELA - UMA INTRODUÇÃO AO PARALELISMO COM A OPENMPI

Sistemas Distribuídos

Memórias Cache em Arquiteturas Multiprocessador e Multicore

COMPARAÇÃO DE DESEMPENHO ENTRE IMPLEMENTAÇÕES DO ALGORITMO JOGO DA VIDA COM PTHREAD E OPEMMP 1

Introdução ao OpenMP

Sistemas MIMD. CES-25 Arquiteturas para Alto Desmpenho. Paulo André Castro

Definindo melhor alguns conceitos

Linguagem de Programação II

Sistemas Operacionais (SO)

Intel Thread Building Blocks (TBB)

Introdução à Programação Paralela através de Padrões. Denise Stringhini Calebe Bianchini Luciano Silva

Paralela e Distribuída. com o MPI e o OpenMP

Transcrição:

INTEL MODERN CODE PARTNER APRESENTAÇÃO Slides baseados no material de Marco A. Zanata Alves - UFPR (2016) Curso: CI316 Programação Paralela INTEL MODERN CODE PARTNER 1

O QUE ESPERAR DESSE WORKSHOP? INTEL MODERN CODE PARTNER 2

PROJETO INTEL MCP Projeto com a Intel com foco principal em organização de workshops sobre programação paralela moderna com OpenMP Discutir sobre oportunidades de execução paralela em termos de desempenho e eficiência energética Explorar os desafios da área, lei de Amdahl, falso compartilhamento, overhead, etc. INTEL MODERN CODE PARTNER 3

EQUIPE Philippe Olivier Alexandre Navaux GPPD - UFRGS Marco A. Zanata Alves LSE - UFPR Matthias Diener GPPD - UFRGS Eduardo H. Molina da Cruz GPPD - UFRGS Demais membros (mestrandos e doutorandos) GPPD UFRGS INTEL MODERN CODE PARTNER 4

PROCEDIMENTOS DIDÁTICOS 4 Aulas Expositivas / Práticas 1ª Aula Introdução sobre computação paralela e motivação 2ª Aula Hello World e como as threads funcionam 3ª Aula Funcionalidades básicas do OpenMP 4ª Aula Trabalhando com OpenMP e tópicos avançados Active learning Estamos assumindo que você está confortável em programar em linguagem C INTEL MODERN CODE PARTNER 5

BIBLIOGRAFIA BÁSICA Using OpenMP - Portable Shared Memory Parallel Programming Autores: Barbara Chapman, Gabriele Jost and Ruud van der Pas Editora: MIT Press Ano: 2007 INTEL MODERN CODE PARTNER 6

NÃO TENHA MEDO DE PERGUNTAR!!! INTEL MODERN CODE PARTNER 7

APRESENTAÇÃO DA ÁREA INTEL MODERN CODE PARTNER 8

POR QUE ESTUDAR PROGRAMAÇÃO PARALELA? Os programas já não são rápidos o suficiente? As máquinas já não são rápidas o suficiente? INTEL MODERN CODE PARTNER 9

REQUISITOS SEMPRE MUDANDO INTEL MODERN CODE PARTNER 10

REQUISITOS SEMPRE MUDANDO From: The quiet revolution of numerical weather prediction Peter Bauer, Alan Thorpe & Gilbert Brunet - Nature 525, 47 55 (03 September 2015) NH = North Hemisphere SH = South Hemisphere INTEL MODERN CODE PARTNER 11

Number of Processor Cores EVOLUÇÃO DO INTEL XEON Onde comprar um processador single-core? 30 25 24 20 18 15 8 10 12 10 6 5 4 1 2 0 1998 2000 2002 2004 2006 2008 2010 2012 2014 2016 INTEL MODERN CODE PARTNER 12

PORQUÊ PROGRAMAÇÃO PARALELA? Dois dos principais motivos para utilizar programação paralela são: Reduzir o tempo necessário para solucionar um problema. Resolver problemas mais complexos e de maior dimensão. Outros motivos são:??? INTEL MODERN CODE PARTNER 13

PORQUÊ PROGRAMAÇÃO PARALELA? Dois dos principais motivos para utilizar programação paralela são: Reduzir o tempo necessário para solucionar um problema. Resolver problemas mais complexos e de maior dimensão. Outros motivos são: Utilizar recursos computacionais subaproveitados. Ultrapassar limitações de memória quando a memória disponível num único computador é insuficiente para a resolução do problema. Ultrapassar os limites físicos que atualmente começam a restringir a possibilidade de construção de computadores sequenciais cada vez mais rápidos. INTEL MODERN CODE PARTNER 14

COMO FAZER ATIVIDADES EM PARALELO? NO MUNDO REAL Você pode enviar cartas/mensagens aos amigos e pedir ajuda Você pode criar uma lista de tarefas (pool) Tarefas curtas ou longas? Quando um amigo ficar atoa, pegue uma nova tarefa da lista Você pode ajudar na tarefa ou então ficar apenas gerenciando Mais amigos, mais tempo para eles chegarem/ se acomodarem Muitos amigos olhando e riscando a lista? Precisa gerenciar algo mais? INTEL MODERN CODE PARTNER 15

O QUE É NECESSÁRIO? Definir... O que é uma tarefa Atividades por tarefa (granularidade) Protocolo de trabalho (divisão de tarefas) Como retirar uma tarefa da lista Onde colocar o resultado final Como reportar eventualidades Existe ordenação/sincronia entre as tarefas Existe dependência/conflito por recursos INTEL MODERN CODE PARTNER 16

OPÇÕES PARA CIENTISTAS DA COMPUTAÇÃO 1. Crie uma nova linguagem para programas paralelos 2. Crie um hardware para extrair paralelismo 3. Deixe o compilador fazer o trabalho sujo Paralelização automática Ou crie anotações no código sequencial 4. Use os recursos do sistema operacional Com memória compartilhada threads Com memória distribuída SPMD 5. Use a estrutura dos dados para definir o paralelismo 6. Crie uma abstração de alto nível Objetos, funções aplicáveis, etc. INTEL MODERN CODE PARTNER 17

PRINCIPAIS MODELOS DE PROGRAMAÇÃO PARALELA Programação em Memória Compartilhada (OpenMP, Cilk, CUDA) Programação usando processos ou threads. Decomposição do domínio ou funcional com granularidade fina, média ou grossa. Comunicação através de memória compartilhada. Sincronização através de mecanismos de exclusão mútua. Programação em Memória Distribuída (MPI) Programação usando processos distribuídos Decomposição do domínio com granularidade grossa. Comunicação e sincronização por troca de mensagens. INTEL MODERN CODE PARTNER 18

METODOLOGIA DE PROGRAMAÇÃO DE FOSTER INTEL MODERN CODE PARTNER 19

METODOLOGIA DE PROGRAMAÇÃO DE FOSTER Um dos métodos mais conhecidos para desenhar algoritmos paralelos é a metodologia de Ian Foster (1996). Esta metodologia permite que o programador se concentre inicialmente nos aspectos não-dependentes da arquitetura, como sejam a concorrência e a escalabilidade Somente depois deve-se considerar os aspectos dependentes da arquitetura, como sejam aumentar a localidade e diminuir a comunicação da computação. A metodologia de programação de Foster divide-se em 4 etapas: Decomposição Comunicação Aglomeração Mapeamento INTEL MODERN CODE PARTNER 20

METODOLOGIA DE PROGRAMAÇÃO DE FOSTER Problema INTEL MODERN CODE PARTNER 21

DECOMPOSIÇÃO Uma forma de diminuir a complexidade de um problema é conseguir dividi-lo em tarefas mais pequenas de modo a aumentar a concorrência e a localidade de referência de cada tarefa. Existem duas estratégias principais de decompor um problema: Decomposição do Domínio: decompor o problema em função dos dados. Decomposição Funcional: decompor o problema em função da computação. Um boa decomposição tanto divide os dados como a computação em múltiplas tarefas mais pequenas. INTEL MODERN CODE PARTNER 22

DECOMPOSIÇÃO DE DOMÍNIO Tipo de decomposição em que primeiro se dividem os dados em partições e só depois se determina o processo de associar a computação com as partições. Todas as tarefas executam as mesmas operações. INTEL MODERN CODE PARTNER 23

DECOMPOSIÇÃO FUNCIONAL Tipo de decomposição em que primeiro se divide a computação em partições e só depois se determina o processo de associar os dados com cada partição. Diferentes tarefas executam diferentes operações. INTEL MODERN CODE PARTNER 24

COMUNICAÇÃO A natureza do problema e o tipo de decomposição determinam o padrão de comunicação entre as diferentes tarefas. A execução de uma tarefa pode envolver a sincronização / acesso a dados pertencentes/calculados por outras tarefas. Para haver cooperação entre as tarefas é necessário definir algoritmos e estruturas de dados que permitam uma eficiente troca de informação. Alguns dos principais fatores que limitam essa eficiência são: INTEL MODERN CODE PARTNER 25

COMUNICAÇÃO A natureza do problema e o tipo de decomposição determinam o padrão de comunicação entre as diferentes tarefas. A execução de uma tarefa pode envolver a sincronização/acesso a dados pertencentes/calculados por outras tarefas. Para haver cooperação entre as tarefas é necessário definir algoritmos e estruturas de dados que permitam uma eficiente troca de informação. Alguns dos principais fatores que limitam essa eficiência são: Latência (tempo mínimo de comunicação entre dois pontos) Largura de Banda (quantidade de informação comunicada por unidade de tempo) Espera por sincronização (não contribuem para a computação). INTEL MODERN CODE PARTNER 26

AGLOMERAÇÃO Aglomeração é o processo de agrupar tarefas em tarefas maiores de modo a diminuir os custos de implementação do algoritmo paralelo e os custos de comunicação entre as tarefas. Custos de implementação do algoritmo paralelo: O agrupamento em tarefas maiores permite uma maior reutilização do código do algoritmo sequencial na implementação do algoritmo paralelo. No entanto, o agrupamento em tarefas maiores deve garantir a escalabilidade do algoritmo paralelo de modo a evitar posteriores alterações (e.g. aglomerar as duas últimas dimensões duma matriz de dimensão 8 128 256 restringe a escalabilidade a um máximo de 8 processadores). INTEL MODERN CODE PARTNER 27

AGLOMERAÇÃO Custos de comunicação entre as tarefas: O agrupamento de tarefas elimina os custos de comunicação entre essas tarefas e aumenta a granularidade da computação. O agrupamento de tarefas com pequenas comunicações individuais em tarefas com comunicações maiores permite aumentar a granularidade das comunicações e reduzir o número total de comunicações. INTEL MODERN CODE PARTNER 28

GRANULARIDADE Como agrupar a computação de modo a obter o máximo desempenho? Períodos de computação são tipicamente separados por períodos de comunicação entre as tarefas. A granularidade é a medida qualitativa da razão entre computação e comunicação. O número e o tamanho das tarefas em que a computação é agrupada determina a sua granularidade. A granularidade pode ser fina, média ou grossa. INTEL MODERN CODE PARTNER 29

GRANULARIDADE Granularidade Fina - Grande número de pequenas tarefas. A razão entre computação e comunicação é baixo. (+) Fácil de conseguir um balanceamento de carga eficiente. ( ) O tempo de computação de uma tarefa nem sempre compensa os custos de criação, comunicação e sincronização. ( ) Difícil de se conseguir melhorar o desempenho. Granularidade Grossa - Pequeno número de grandes tarefas. A razão entre computação e comunicação é grande. ( ) Difícil de conseguir um balanceamento de carga eficiente. (+) O tempo de computação compensa os custos de criação, comunicação e sincronização. (+) Oportunidades para se conseguir melhorar o desempenho. INTEL MODERN CODE PARTNER 30

MAPEAMENTO E BALANCEAMENTO DE CARGA O balanceamento de carga refere-se à capacidade de distribuir tarefas pelos processadores de modo a que todos os processadores estejam ocupados todo o tempo. O balanceamento de carga pode ser visto como uma função de minimização do tempo em que os processadores não estão ocupados. O balanceamento de carga pode ser estático (em tempo de compilação) ou dinâmico (em tempo de execução). INTEL MODERN CODE PARTNER 31

BALANCEAMENTO DE CARGA Como dividir esse problema para evitar desbalanceamento de carga? INTEL MODERN CODE PARTNER 32

BALANCEAMENTO DE CARGA Precisamos entender bem o problema! Continente ou Sol ou Calor + trabalho de simulação INTEL MODERN CODE PARTNER 33

FATORES DE LIMITAÇÃO DO DESEMPENHO Código Sequencial: existem partes do código que são inerentemente sequenciais (e.g. iniciar/terminar a computação). Concorrência/Paralelismo: o número de tarefas pode ser escasso e/ou de difícil definição. Comunicação: existe sempre um custo associado à troca de informação e enquanto as tarefas processam essa informação não contribuem para a computação. Sincronização: a partilha de dados entre as várias tarefas pode levar a problemas de contenção no acesso à memória e enquanto as tarefas ficam à espera de sincronizar não contribuem para a computação. Granularidade: o número e o tamanho das tarefas é importante porque o tempo que demoram a ser executadas tem de compensar os custos da execução em paralelo (e.g. custos de criação, comunicação e sincronização). Balanceamento de Carga: ter os processadores maioritariamente ocupados durante toda a execução é decisivo para o desempenho global do sistema. INTEL MODERN CODE PARTNER 34

MÉTRICAS DE DESEMPENHO INTEL MODERN CODE PARTNER 35

MÉTRICAS DE DESEMPENHO PARA APLICAÇÕES PARALELAS Existem várias medidas que permitem medir/avaliar o desempenho duma aplicação paralela. As mais conhecidas são: Speedup (*), Overhead, Eficiência, Custo Isoeficiência, Scaled speedup, Redundância, Utilização, Qualidade, Métrica de Karp- Flatt, outras Existem igualmente várias leis/métricas que permitem balizar o comportamento duma aplicação paralela face ao seu potencial desempenho. As mais conhecidas são: Lei de Amdahl, Lei de Gustafson-Barsis, Lei de Grosch, Conjectura de Minsky, outras INTEL MODERN CODE PARTNER 36

FONTES DE OVERHEAD EM PROGRAMAS PARALELOS Tempo de Execução P0 P1 P2 P3 P4 P5 P6 P7 Processo inativo Comunicação inter-processadores Computação essencial ou excessiva INTEL MODERN CODE PARTNER 37

FONTES DE OVERHEAD EM PROGRAMAS PARALELOS P0 P1 P2 P3 P4 P5 P6 P7 Tempo de Execução Inativo: Acontece devido a desbalanceamento e/ou sincronização Comunicação: Trata-se de troca de mensagens ou acesso a dados compartilhados e sincronização Processamento: O melhor algoritmo sequencial pode ser difícil ou impossível de ser paralelizado. A diferença de trabalho entre o processor paralelo e o serial é chamado de overhead. A inicialização/divisão do trabalho também pode significar overhead. INTEL MODERN CODE PARTNER 38

FONTES DE OVERHEAD EM PROGRAMAS PARALELOS Tempo de Execução P0 P1 Caminho crítico P2 P3 P4 P5 P6 P7 INTEL MODERN CODE PARTNER 39

OVERHEAD O overhead (T O ) pode ser medido como a diferença entre o tempo sequencial e o a soma de todos os (p) tempos paralelo (com todos os sobre-custos) T O = p T p T s T s é o tempo de execução do algoritmo sequencial T p é o tempo de execução do algoritmo paralelo com p processadores INTEL MODERN CODE PARTNER 40

SPEEDUP O speedup é uma medida do grau de desempenho. O speedup mede a razão entre o tempo de execução de duas soluções que resolvem o mesmo problema. Speedup = T antigo T novo T antigo é o tempo de execução de uma solução base T novo é o tempo de execução da nova solução proposta INTEL MODERN CODE PARTNER 41

SPEEDUP EM COMPUTAÇÃO PARALELA O speedup é uma medida do grau de desempenho. O speedup mede a razão entre o tempo de execução sequencial e o tempo de execução em paralelo. S p = T p(1) T p (p) T p (1) é o tempo de execução com um processador T p (p) é o tempo de execução com p processadores 1 CPU 2 CPUs 4 CPUs 8 CPUs 16 CPUs T(p) 1000 520 280 160 100 S(p) 1 1,92 3,57 6,25 10,00 INTEL MODERN CODE PARTNER 42

SPEEDUP - ARMADILHAS Qual o speedup do método de ordenação T odd even (4) considerando os seguintes tempos: T bubble sort (1) = 150 seg. T quick sort (1) = 30 seg. T odd even (1) = 120 seg. T odd even (4) = 40 seg. INTEL MODERN CODE PARTNER 43

SPEEDUP - ARMADILHAS Qual o speedup do T odd even (4) considerando os seguintes tempos: T bubble sort (1) = 150 seg. T quick sort (1) = 30 seg. T odd even (1) = 120 seg. T odd even (4) = 40 seg. S = T bubble sort(1) T odd even (4) = 3.75 S = T odd even(1) T odd even (4) = 3.00 S = T quick sort(1) T odd even (4) = 0.75 INTEL MODERN CODE PARTNER 44

SPEEDUP - ARMADILHAS Qual o speedup do T odd even (4) considerando os seguintes tempos: T bubble sort (1) = 150 seg. T quick sort (1) = 30 seg. T odd even (1) = 120 seg. T odd even (4) = 40 seg. S = T bubble sort(1) T odd even (4) S = T odd even(1) T odd even (4) = 3.00 S = T quick sort(1) T odd even (4) = 0.75 = 3.75 (Enganoso) (Justo, compara o mesmo algoritmo) (Justo, compara com o melhor algoritmo) INTEL MODERN CODE PARTNER 45

SPEEDUP SUPERLINEAR Se um único processador consegue resolver um problema em N segundos, podem N processadores resolver o mesmo problema em > 1segundo tempo = 1 segundo? < 1 segundo INTEL MODERN CODE PARTNER 46

SPEEDUP SUPERLINEAR O speedup diz-se superlinear quando a razão entre o tempo de execução sequencial e o tempo paralelo com p processadores é maior do que p. T(1) T(p) p Alguns dos fatores que podem fazer com que o speedup seja superlinear são:??? INTEL MODERN CODE PARTNER 47

SPEEDUP SUPERLINEAR O speedup diz-se superlinear quando a razão entre o tempo de execução sequencial e o tempo paralelo com p processadores é maior do que p. T(1) T(p) p Alguns dos fatores que podem fazer com que o speedup seja superlinear são: Aumento da capacidade de memória (o problema passa a caber todo em memória). Subdivisão do problema (tarefas menores geram menos cache misses). Aleatoriedade da computação em problemas de optimização ou com múltiplas soluções (ex. achar solução para o problema de n-rainhas). INTEL MODERN CODE PARTNER 48

EFICIÊNCIA E ESCALABILIDADE INTEL MODERN CODE PARTNER 49

EFICIÊNCIA A eficiência é uma medida do grau de aproveitamento dos recursos computacionais. A eficiência mede a razão entre o grau de desempenho e os recursos computacionais disponíveis. E p = S(p) p = T p(1) p T p (p) S(p) é o speedup para p processadores 1 CPU 2 CPUs 4 CPUs 8 CPUs 16 CPUs T(p) 1000 520 280 160 100 S(p) 1 1,92 3,57 6,25 10,00 E(p) 1 0,96 0,89 0,78 0,63 INTEL MODERN CODE PARTNER 50

EFICIÊNCIA E ESCALABILIDADE Uma aplicação é dita de fortemente escalável quando demonstra a capacidade de manter a mesma eficiência à medida que o número de processadores aumenta. Uma aplicação é dita de fracamente escalável quando demonstra a capacidade de manter a mesma eficiência à medida que o número de processadores e a dimensão do problema aumentam proporcionalmente. Uma aplicação é dita não escalável quando não apresenta capacidade de manter eficiência. A escalabilidade de uma aplicação reflete a sua capacidade de utilizar mais recursos computacionais de forma efetiva. Eficiência p = S(p) p INTEL MODERN CODE PARTNER 51

LEI DE AMDAHL (1967) INTEL MODERN CODE PARTNER 52

LEI DE AMDAHL Tempo de execução em um único processador: T(1) Parte sequencial Parte paralelizável 1 β Parte sequencial β = fração de código que é puramente sequencial INTEL MODERN CODE PARTNER 53

LEI DE AMDAHL T 1 Tempo de execução em um único processador Parte sequencial Parte paralelizável Parte seq. 1 β T 2 = T 1 β + 1 β T 1 2 Tempo de execução em 2 processadores Parte sequencial Parte paralelizável Parte sequencial (1 β) T 1 2 INTEL MODERN CODE PARTNER 54

LEI DE AMDAHL Seja 0 β 1 a fração da computação que só pode ser realizada sequencialmente. A lei de Amdahl diz-nos que o speedup máximo que uma aplicação paralela com p processadores pode obter é: S p = β + 1 1 β p A lei de Amdahl também pode ser utilizada para determinar o limite máximo de speedup que uma determinada aplicação poderá alcançar independentemente do número de processadores a utilizar (limite máximo teórico). INTEL MODERN CODE PARTNER 55

EXERCÍCIO: LEI DE AMDAHL Suponha que pretende determinar se é vantajoso desenvolver uma versão paralela de uma determinada aplicação sequencial. Por experimentação, verificou-se que 90% do tempo de execução é passado em procedimentos que se julga ser possível paralelizar. Qual é o speedup máximo que se pode alcançar com uma versão paralela do problema executando em 8 processadores? Qual é o speedup máximo considerando infinitos processadores? S p = β + 1 1 β p INTEL MODERN CODE PARTNER 56

LEI DE AMDAHL Suponha que pretende determinar se é vantajoso desenvolver uma versão paralela de uma determinada aplicação sequencial. Por experimentação, verificou-se que 90% do tempo de execução é passado em procedimentos que se julga ser possível paralelizar. Qual é o speedup máximo que se pode alcançar com uma versão paralela do problema executando em 8 processadores? S p 1 0,1+ 1 0,1 8 4,71 Qual é o speedup máximo considerando infinitos processadores? lim p 1 0 0,1+ 1 0,1 p = 10 INTEL MODERN CODE PARTNER 57

LIMITAÇÕES DA LEI DE AMDAHL A lei de Amdahl ignora o custo das operações de comunicação/sincronização associadas à introdução de paralelismo numa aplicação. Por esse motivo, a lei de Amdahl pode resultar em predições pouco realistas para determinados problemas. A lei de Amdahl também supõe que o problema se manterá inalterado ao aumentar os recursos computacionais. Ou seja, considera que a porcentagem puramente sequencial se manterá mesmo modificando o tamanho do problema. INTEL MODERN CODE PARTNER 58