Algoritmos Paralelos Introdução (Jaja)
|
|
- Simone Faro Bugalho
- 6 Há anos
- Visualizações:
Transcrição
1 Algoritmos Paralelos Introdução (Jaja) Programação distribuída e paralela (C. Geyer) Algoritmos Paralelos 1
2 Autoria! Autores " C. Geyer! Local " II-UFRGS " Disciplina: Programação Distribuída e Paralela " Versão # V35, abril de 2012 Programação distribuída e paralela (C. Geyer) Algoritmos Paralelos 2
3 Súmula! Súmula (slides) " conceitos básicos # algoritmos paralelos # speedup # eficiência # outros " modelos de máquina paralela # DAG: conceito # PRAM # outros # definição # exemplos: matriz X vetor, soma de n elementos, matriz X matriz Programação distribuída e paralela (C. Geyer) Algoritmos Paralelos 3
4 ! Súmula (slides) Súmula " desempenho de algoritmos paralelos # outras medidas de desempenho # descrição de algoritmos paralelos em 2 níveis # princípio de escalonamento # noções de ótimo " técnicas básicas de paralelização (obs. outros slides) # árvore # divisão e conquista # particionamento # saltos via ponteiros Programação distribuída e paralela (C. Geyer) Algoritmos Paralelos 4
5 Bibliografia! Bibliografia " Jaja, J. An Introduction to Parallel Algorithms. Addison- Wesley, Reading, # algoritmos em máquina abstrata PRAM " Kumar, V. et alli. Introduction to Parallel Computing - Design and Analysis of Algorithms. The Benjamin/ Cummings Publishing Company, Redwood, # algoritmos em máquinas com topologia real # matrizes e hipercubos " Leighton, T. Introduction to Parallel Algorithms and Architectures: Arrays, Trees and Hypercubes. Morgan Kaufman, San Mateo, # algoritmos em máquinas com topologia real Programação distribuída e paralela (C. Geyer) Algoritmos Paralelos 5
6 ! Termos e áreas Termos e Áreas " processamento paralelo " arquiteturas paralelas " programa paralelo " programação paralela (PP) " ambientes p/pp: linguagens, bibliotecas " algoritmos paralelos # complexidade, teoria " depuração " monitoração " visualização " prova, especificação " compilação: geração automática de código Programação distribuída e paralela (C. Geyer) Algoritmos Paralelos 6
7 Em PDP! Em PDP " 1. conceitos básicos de processamento/programação paralela " 2. máquina abstrata PRAM e algoritmos exemplos " 3. ambiente MPI # algumas técnicas de programação " 4. Ambiente OpenMP! Esses slides " Tópicos 1 e 2 Programação distribuída e paralela (C. Geyer) Algoritmos Paralelos 7
8 Conceitos Básicos! Conceitos básicos " processamento paralelo # executar computações de forma mais rápida que um único processador # usando vários processadores concorrentemente " aplicações # dinâmica de fluídos # previsão de tempo # modelagem e simulação de sistemas muito complexos # processamento de imagens # produção automatizada # inteligência artificial Programação distribuída e paralela (C. Geyer) Algoritmos Paralelos 8
9 Conceitos Básicos! Conceitos básicos " outras definições de processamento paralelo # Wikipedia # Parallel computing is a form of computation in which many calculations are carried out simultaneously, [1] operating on the principle that large problems can often be divided into smaller ones, which are then solved concurrently ("in parallel"). Programação distribuída e paralela (C. Geyer) Algoritmos Paralelos 9
10 Conceitos Básicos! Conceitos básicos " outras definições de processamento paralelo # De Blaise Barney, Lawrence Livermore National Laboratory # parallel computing is the simultaneous use of multiple compute resources to solve a computational problem: # To be run using multiple CPUs # A problem is broken into discrete parts that can be solved concurrently # Each part is further broken down to a series of instructions # Instructions from each part execute simultaneously on different CPUs # Programação distribuída e paralela (C. Geyer) Algoritmos Paralelos 10
11 Conceitos Básicos! Conceitos básicos " outras definições de processamento paralelo # MS # Parallel computing is a form of computation in which many operations are carried out simultaneously. Programação distribuída e paralela (C. Geyer) Algoritmos Paralelos 11
12 Conceitos Básicos! Conceitos básicos " fatores (não tão) recentes favorecendo o processamento paralelo # redução do custo do hardware # permite produção simples de sistemas com muitos processadores # avanços do VLSI: construção de chips com milhões de transistores # cpu s de prateleiras de bom desempenho # capacidade de comunicação eficiente Programação distribuída e paralela (C. Geyer) Algoritmos Paralelos 12
13 Conceitos Básicos! Conceitos básicos " Fatores (não tão) recentes favorecendo o processamento paralelo # Possível aproximação dos limites físicos da velocidade do processador seqüencial # Clusters (máquinas de prateleiras ) # Processadores multicore # Processadores GPU Programação distribuída e paralela (C. Geyer) Algoritmos Paralelos 13
14 Conceitos Básicos! Conceitos básicos (cont.) " computador paralelo ([Jaja 1992]) # coleção de processadores, em geral do mesmo tipo, # localizados a curta distância um do outro # interconectados de algum modo, # que permita coordenação de atividades e troca de informações, # usados preferencialmente para resolver um problema em conjunto Programação distribuída e paralela (C. Geyer) Algoritmos Paralelos 14
15 Conceitos Básicos! Conceitos básicos (cont.) " Definição do Jaja # definição abstrata, suficiente para algoritmos paralelos " Para definições e classificações mais precisas, ver: # Cursos sobre Arquiteturas Paralelas das ERADs # ERAD: Escola Regional de Alto Desempenho # Culler, D. E. And Singh, J. P. Parallel Computer Architecture: A Hardware / Software Approach. Morgan Kaufmann, Programação distribuída e paralela (C. Geyer) Algoritmos Paralelos 15
16 Conceitos Básicos! Conceitos básicos (cont.) " estudo de algoritmos (Jaja) # apropriados para execução em computadores paralelos # ênfase em técnicas, paradigmas e métodos # não em aplicações específicas # critérios de avaliação de algoritmos sequenciais # tempo de execução, uso de espaço, facilidade de programação Programação distribuída e paralela (C. Geyer) Algoritmos Paralelos 16
17 Conceitos Básicos! Conceitos básicos (cont.) " estudo de algoritmos (Jaja) # critérios de avaliação de algoritmos paralelos # situação mais complexa devido parâmetros adicionais como # quantidade de processadores, # capacidade de memórias locais, # esquema de comunicação, # protocolos de sincronização Programação distribuída e paralela (C. Geyer) Algoritmos Paralelos 17
18 Conceitos Básicos! Conceitos básicos (cont.) " notação básica # P: # n: # T * (n): # problema computacional # tamanho da entrada # complexidade seqüencial # prova-se que não há algoritmo que resolva P em tempo menor Programação distribuída e paralela (C. Geyer) Algoritmos Paralelos 18
19 Conceitos Básicos! Conceitos básicos (cont.) " notação básica # A: # T p (n): # algoritmo paralelo # complexidade (tempo) do algoritmo A em p processadores Programação distribuída e paralela (C. Geyer) Algoritmos Paralelos 19
20 Conceitos Básicos! Conceitos básicos (cont.) " critério de speedup: S p (n) # Permite avaliar a qualidade de A # aumento de desempenho obtido por A sobre p processadores # S p (n) = T * (n) / T p (n) # S p (n)! p # idealmente, procura-se A que produza S p (n) " p (próximo de p) Programação distribuída e paralela (C. Geyer) Algoritmos Paralelos 20
21 ! Conceitos básicos (cont.) Conceitos Básicos " critério de speedup: S p (n) # ineficiências diminuem S p (n) # insuficiente concorrência para uso constante dos p processadores # obs: somente isto não reduz S p (n) # mas S p (n) não aumenta # para uma determinada entrada (n), a partir de um certo ponto não há mais tarefas para mais processadores # retardos de comunicação # criação (gerência) das tarefas # overheads para sincronização das tarefas Programação distribuída e paralela (C. Geyer) Algoritmos Paralelos 21
22 Conceitos Básicos! Conceitos básicos (cont.) " critério de speedup: S p (n) # em geral: T 1 (n) > T * (n) # se T * (n) não é conhecido: usa-se o melhor algoritmo seqüencial conhecido Programação distribuída e paralela (C. Geyer) Algoritmos Paralelos 22
23 Conceitos Básicos speedup Ideal 6 5 Normal: sem custos tempo constante speedown Normal: com custos cpus Programação distribuída e paralela (C. Geyer) Algoritmos Paralelos 23
24 Conceitos Básicos! Conceitos básicos (cont.) " critério de speedup: S p (n) # Motivos para redução de S p (n) : 2a curva # Custos de geração de tarefas # Custos de sincronização # Custos de comunicação # Espera em acesso a recursos exclusivos # RAM, HD,... # Limite de tarefas, dado um problema e uma entrada Programação distribuída e paralela (C. Geyer) Algoritmos Paralelos 24
25 Conceitos Básicos! Conceitos básicos (cont.) " critério de speedup: S p (n) # Dificuldade de uso # Como comparar 2 (algoritmos) speedups se # de cpus é diferente? # Exemplo # Alg A: S p (n) = 1000 com cpus # Alg B: S p (n) = 90 com 100 cpus # Qual o melhor algoritmo? Programação distribuída e paralela (C. Geyer) Algoritmos Paralelos 25
26 Conceitos Básicos! Conceitos básicos (cont.) " critério de eficiência # indica efetiva utilização dos p processadores # E p (n) = T 1 (n) / pt p (n) # se E p (n) = 1=> # indica que A é executado aproximadamente p vezes mais rápido usando p processadores que 1 processador # cada processador está fazendo trabalho útil Programação distribuída e paralela (C. Geyer) Algoritmos Paralelos 26
27 Conceitos Básicos! Conceitos básicos (cont.) " critério de eficiência # T # (n): limite inferior do tempo de A, qualquer que seja p # pelos mesmos motivos que reduzem S p (n) # => T # (n)! T p (n) E p (n)! T 1 (n) / pt # (n) # => eficiência diminui rapidamente quando p cresce acima de T 1 (n) / T # (n) # p cresce e T # (n) é constante # T 1 (n) / T # (n): speedup máximo # T 1 (n): constante # T # (n): minimo Programação distribuída e paralela (C. Geyer) Algoritmos Paralelos 27
28 Conceitos Básicos eficiência Ideal Normal: somente p cresce, T # Com custos: Tp aumenta cpus Programação distribuída e paralela (C. Geyer) Algoritmos Paralelos 28
29 Conceitos Básicos! Conceitos básicos " desenvolver algoritmos com o melhor (possível) speedup # modelo deve permitir derivação de estimações de T p (n) e de limites inferiores do melhor speedup Programação distribuída e paralela (C. Geyer) Algoritmos Paralelos 29
30 Conceitos básicos " linguagem mínima para expressão de algoritmos paralelos # atribuição variavel := expressao # blocos begin/end begin end comando comando... comando # comando condicional if (condição) then comando[else comando] Programação distribuída e paralela (C. Geyer) Algoritmos Paralelos 30
31 Conceitos Básicos! Conceitos básicos " loops # for variavel = valor_inicial to valor_final do comando # while condição do comando " término (saída) # Exit " Em resumo # Uma pseudo-linguagem convencional Programação distribuída e paralela (C. Geyer) Algoritmos Paralelos 31
32 Conceitos Básicos! Conceitos básicos " limites de tempo e espaço # expressos como função do tamanho da entrada (n) # quantidade de dados a processar # interesse pelo pior-caso # => expressões do valor máximo de recurso (tempo, espaço) # valores reais (de programas em execução) # normalmente piores devido custos maiores Programação distribuída e paralela (C. Geyer) Algoritmos Paralelos 32
33 Conceitos Básicos! Conceitos básicos (cont.) " notação de limites # T(n) = $ (f(n)); ($ = ómicron) # se existem constantes positivas c e n 0 tais que # T(n)! cf(n), para n % n 0 # T(n) = & (f(n)); (& = ômega) # se existem constantes positivas c e n 0 tais que # T(n) % cf(n), para n % n 0 # T(n) = ' (f(n)) (' = teta) # se T(n) = & (f(n)) e # se T(n) = $ (f(n)) Programação distribuída e paralela (C. Geyer) Algoritmos Paralelos 33
34 Conceitos Básicos! Conceitos básicos (cont.) " estimativa do tempo de execução # pela quantidade de operações básicas # ler e gravar na memória (RAM) # operações básicas aritméticas e lógicas # critério de custo uniforme # o custo de uma operação independe da mesma e do tamanho da palavra Programação distribuída e paralela (C. Geyer) Algoritmos Paralelos 34
35 Modelos de Máquinas Paralelas! Objetivo de um modelo de máquina paralela " modelo geral para descrição e análise de algoritmos paralelos " Simplificar o projeto de algoritmos paralelos " Permitir / simplificar as comparações entre algoritmos! Características desejadas " simplicidade # descrição simples do algoritmo # permita análise matemática de medidas importantes de desempenho # independente de arquitetura de máquinas paralelas (hardware) Programação distribuída e paralela (C. Geyer) Algoritmos Paralelos 35
36 ! Características desejadas " implementabilidade Modelos de Máquinas Paralelas # algoritmos desenvolvidos para o modelo possam ser facilmente implementados em máquinas paralelas (reais) # análise de desempenho do algoritmo com o modelo seja uma boa aproximação do desempenho real do algoritmo na máquina paralela! Modelo único " Não há um modelo aceito pela maioria dos pesquisadores " Há modelos mais populares " Diferentes abordagens " Diferentes graus de complexidade e implementabilidade Programação distribuída e paralela (C. Geyer) Algoritmos Paralelos 36
37 Modelos de Máquinas Paralelas! Modelo grafos acíclicos diretos: DAG " entrada: nodo sem arcos de entrada " operação: nodo cujos arcos de entrada representam os operandos # grau máximo: 2 " saída: nodo sem arco de saída " custo de cada nodo: uniforme " grafo com n nodos de entrada: problema de tamanho de entrada n " mas é possível trabalhar para certos objetivos com grafos de tamanho de entrada genérico Programação distribuída e paralela (C. Geyer) Algoritmos Paralelos 37
38 Modelos de Máquinas Paralelas! Modelo grafos acíclicos diretos: DAG " um algoritmo é uma família de grafos {G n } onde G n representa o algoritmo para a entrada n " útil para análise de problemas numéricos " totalmente independente de arquitetura " condição para análise de desempenho: # cada processador pode acessar dado produzido por outro a custo zero Programação distribuída e paralela (C. Geyer) Algoritmos Paralelos 38
39 Modelos de Máquinas Paralelas! Modelo grafos acíclicos diretos: DAG (cont.) " Escalonamento # custo (tempo) de cada nó: 1 # associar cada nodo i a um processador, usando par (j i, t i ): # j i é o processador do nodo i # t i é a unidade de tempo em que a operação será executada em j i j i, t i j j, t j Nó j Nó i Programação distribuída e paralela (C. Geyer) Algoritmos Paralelos 39
40 Modelos de Máquinas Paralelas! Modelo grafos acíclicos diretos: DAG (cont.) " Escalonamento # custo (tempo) de cada nó: 1 # associar cada nodo i a um processador, usando par (j i, t i ): # considerando 2 nodos i e k se t i = t k então j i not = j k # se tempos iguais -> 2 cpus distintas # se (i, k) é um arco, então t k >= t i + 1 j i, t i Nó i j j, t j Nó j Programação distribuída e paralela (C. Geyer) Algoritmos Paralelos 40
41 Modelos de Máquinas Paralelas! Modelo grafos acíclicos diretos: DAG (cont.) " escalonamento # tempo de nodos entrada: zero => sem processador # um escalonamento # seqüência {(j i, t i ) i (N}, onde N é a quantidade de nodos # definir cpu e tempo para cada nó # complexidade de um escalonamento # max t i(i(n) # = tempo da execução paralela # maior tempo entre todos os nós Programação distribuída e paralela (C. Geyer) Algoritmos Paralelos 41
42 Modelos de Máquinas Paralelas! Modelo grafos acíclicos diretos: DAG (cont.) " complexidade do DAG: # Tp(n) = min{max t i(i(n) } # motivo: # pode-se ter vários escalonamentos para um DAG e p processadores # limite mínimo: # profundidade do DAG ou maior comprimento, para qualquer quantidade de processadores # problema complexo: # como obter o melhor? # dado um problema pode haver milhares de soluções Programação distribuída e paralela (C. Geyer) Algoritmos Paralelos 42
43 Modelos de Máquinas Paralelas! Modelo grafos acíclicos diretos: DAG (cont.) " Exemplo # Grafo para n = 8; 2 cpus # Escalonamento A: max ti = 6 # Escalonamento B: max ti = 4 (melhor) j i, t i Nó i 1, 1 1, 2 1, 3 1, 4 1, 1 2, 1 1, 2 2, 2 2, 3 A 2, 5 1, 3 B 2, 3 2, 6 1, 4 Programação distribuída e paralela (C. Geyer) Algoritmos Paralelos 43
44 Modelos de Máquinas Paralelas! Modelo de memória compartilhada " conjunto de processadores, cada com um índice i # modelo código único em todos os processadores # não há necessidade de criação de tarefas concorrentes (processos, threads, objetos ativos,...) # cada processador pode executar partes (funções) diferentes pelo teste de i " memória global acessível a todos os processadores em leitura/escrita # mas não para aritmética e outras eventuais operações Programação distribuída e paralela (C. Geyer) Algoritmos Paralelos 44
45 Modelos de Máquinas Paralelas! Modelo de memória compartilhada " uma memória local, privada, para cada processador " operações especiais para transferência de dados entre memória global e local # global read(x, y): # variável X global é copiada na local y # global write(u, V): # variável global V é escrita com local U Programação distribuída e paralela (C. Geyer) Algoritmos Paralelos 45
46 Modelos de Máquinas Paralelas Diagrama da arquitetura do modelo de memória compartilhada memória global X V global read(x, y) y u global write(u, V): memórias locais p 1 p 2... p P cpu s Programação distribuída e paralela (C. Geyer) Algoritmos Paralelos 46
47 Modelos de Máquinas Paralelas! Modelo de memória compartilhada (cont.) " submodelo síncrono # todos os processadores operam de forma síncrona; mesmo relógio # mas a cada tempo, cada cpu pode executar uma instrução diferente das executadas pelas outras cpu s # chamado de máquina paralela de acesso randômico (PRAM) # programação mais simples, sincronização implícita " submodelo assíncrono # programador é responsável por incluir mecanismo de sincronização (se necessário) # programação mais complexa Programação distribuída e paralela (C. Geyer) Algoritmos Paralelos 47
48 Modelos de Máquinas Paralelas! Modelo de memória compartilhada (cont.) " Cálculo da complexidade # Considera-se somente operações definidas na máquina " Diversas outras máquinas abstratas consideram # Custos de comunicação # Custos de sincronização " Globalread e Globalwrite # Equivalem a send/receive ao menos para efeito de custos? Programação distribuída e paralela (C. Geyer) Algoritmos Paralelos 48
49 Modelos de Máquinas Paralelas! Exemplo de memória compartilhada : matriz X vetor " solução simples relativamente à complexidade do problema original " entradas: " saída: # matriz A: [N, N] # vetor V: [N] # vetor R: [N] " definição: # R[i] := (A[i, 1] * V[1]) + (A[i, 2] * V[2]) +... (A[i, N] * V[N]) # cada elemento i de R é a soma dos produtos de cada coluna da linha i de A por cada elemento de V # Ri = Ai * V Programação distribuída e paralela (C. Geyer) Algoritmos Paralelos 49
50 Modelos de Máquinas Paralelas! Exemplo de memória compartilhada : matriz X vetor " seqüencial # loop para varrer as linhas de A e elementos de R # loop interno para varrer as colunas de uma linha e de V # multiplicação e soma Programação distribuída e paralela (C. Geyer) Algoritmos Paralelos 50
51 Modelos de Máquinas Paralelas! Exemplo de memória compartilhada : matriz X vetor " caso A[2,2] X 6 7 V[2] (2*6) + (3*7) = 33 (4*6) + (5*7) = 59 = R[2] Programação distribuída e paralela (C. Geyer) Algoritmos Paralelos 51
52 Modelos de Máquinas Paralelas! Exemplo de memória compartilhada : matriz X vetor " idéia de paralelização # considera-se: # p <= N # (N / p) é inteiro = q # divide-se a matriz A em p faixas compostas de q linhas # cada cpu calcula q elementos de R usando sua faixa de A e todo o vetor V A Cpu 1 N = 10 p = 2 q = 5 Cpu 2 R Cpu 1 Cpu 2 Programação distribuída e paralela (C. Geyer) Algoritmos Paralelos 52
53 Modelos de Máquinas Paralelas! Exemplo de memória compartilhada : matriz X vetor " aspectos memória compartilhada # a memória global contem A, V e R; # A e V inicializados # cada cpu precisa ler sua parte de A e todo V para sua memória local # matriz local Z: [q, N] # vetor local X: [N] # cada cpu precisa de um vetor de resultado local # vetor local Y: [q] # cada cpu grava sua parte de R Programação distribuída e paralela (C. Geyer) Algoritmos Paralelos 53
54 Modelos de Máquinas Paralelas! Exemplo de memória compartilhada : matriz X vetor " sintaxe especial memória compartilhada # A(i:j, k:l): # i: # referências parciais a arrays # faixa de A entre # as linhas i e j # e as colunas k e l (inclusives) # índice predefinido contendo o identificador de cada cpu: 1, 2,..., p Programação distribuída e paralela (C. Geyer) Algoritmos Paralelos 54
55 Modelos de Máquinas Paralelas! Exemplo de memória compartilhada : matriz X vetor " código # global_var A: [N, N] % inicializado V: [N] % inicializado R: [N] local_var Z: [N, N] % para qualquer p, q X: [N] Y: [N] % idem Programação distribuída e paralela (C. Geyer) Algoritmos Paralelos 55
56 Modelos de Máquinas Paralelas! Exemplo de memória compartilhada : matriz X vetor " código # begin global_read(a[(q*(i - 1) + 1) : q*i, 1:N], Z) % le faixa de A global_read(v, X) % le V compute Y := Z * X % vetorial: q linhas global_write(y, R[q*(i - 1) + 1) : q*i] % grava faixa de R end " Se N = 8 e p = 4 => q = 2 # Cpu 1: global_read(a[2*(1 1) +1) : 2*1, 1:8], Z) global_read(a[1:2, 1:8], Z) # Cpu 2: global_read(a[3:4, 1:8], Z) # Cpu 3: global_read(a[5:6, 1:8], Z) # Cpu 4: global_read(a[7:8, 1:8], Z) Programação distribuída e paralela (C. Geyer) Algoritmos Paralelos 56
57 Modelos de Máquinas Paralelas! Exemplo de memória compartilhada : matriz X vetor exemplo: " Caso: # n = 8 # #p = 4 # q = 2; 2 linhas por cpu # i = 1(1a cpu) # read das linhas 1 e 2: # q*(i - 1) + 1) = 2*(1-1) + 1 = 1 # q*i = 2 # grava faixa de 1 a 2 nos resultados # idem Programação distribuída e paralela (C. Geyer) Algoritmos Paralelos 57
58 Modelos de Máquinas Paralelas! Exemplo de memória compartilhada : matriz X vetor " complexidade # passo 1: cada cpu transfere n números: O(1) # passo 2: cada cpu transfere n 2 /p números: O(1) # passo 3: cada cpu executa n 2 /p operações: O(n 2 /p) # passo 4: cada cpu transfere n/p números: O(1) # total: O (n 2 /p) # despreza-se os custos # padronização forte de tempos # p.ex.: transferir 1 ou 100 inteiros " complexidade seqüencial # O(n 2 ) # desconsidera-se as operações de loop Programação distribuída e paralela (C. Geyer) Algoritmos Paralelos 58
59 Modelos de Máquinas Paralelas! Exemplo de memória compartilhada : matriz X vetor " speedup # S p (n) = O(n 2 ) / O(n 2 /p) # S p (n) = p " eficiência # para p! n # E p (n) = p/p # E p (n) = 1 " Quantidade máxima de tarefas (cpus): # n " Tempo mínimo # T # (n) = n Programação distribuída e paralela (C. Geyer) Algoritmos Paralelos 59
60 Modelos de Máquinas Paralelas! Exemplo de memória compartilhada : matriz X vetor " exercício # calcular S e E considerando os custos para # n: 2, 4, 8, 16 # p: 1, 2, 4, 8, 16 # colocar em gráficos Programação distribuída e paralela (C. Geyer) Algoritmos Paralelos 60
61 Modelos de Máquinas Paralelas! Exemplo de memória compartilhada : matriz X vetor " sincronização # nenhuma: # não há compartilhamento de dados # não há dependência entre as tarefas # máquina pode ser PRAM (síncrona) ou não Programação distribuída e paralela (C. Geyer) Algoritmos Paralelos 61
62 Modelos de Máquinas Paralelas! Exemplo de memória compartilhada : matriz X vetor " algoritmo alternativo # divisão dos dados pelas colunas # matriz: p blocos Ai (n, q) # vetor: também p blocos Xi de tamanho q # Y := A1X1 + A2X ApXp # cada produto interno (AiXi) produz q valores (parciais) de Y # cada cpu: calcula Zi := AiXi # uma cpu calcula Y: somatório de p blocos Zi # somente todos Zi # exige sincronização # só pode-se somar após cálculos parciais de Z [1-p] Programação distribuída e paralela (C. Geyer) Algoritmos Paralelos 62
63 Modelos de Máquinas Paralelas! Exemplo de algoritmo PRAM: soma de N elementos " entrada " saída # vetor V: [N] # S: " definição # S: V[1] + V[2] V[N] Programação distribuída e paralela (C. Geyer) Algoritmos Paralelos 63
64 Modelos de Máquinas Paralelas! Exemplo de algoritmo PRAM: soma de N elementos " idéia de paralelização # q = N / p; log q é inteiro # não destruir valores de entrada # copiar em vetor auxiliar T # código a seguir: N = p # passo 1 e 2: copia V em um vetor T auxiliar # uso de N cpus # cada cpu soma dois elementos diferentes num 1o passo # passos seguintes somam as somas do passo anterior # quantidade de passos: logn # altura da árvore de tarefas (DAG) Programação distribuída e paralela (C. Geyer) Algoritmos Paralelos 64
65 Modelos de Máquinas Paralelas! Exemplo de algoritmo PRAM: soma de N elementos " problemas # como em cada passo fazer cada cpu somar os elementos corretos? # cada cpu le 2 operandos definidos por i e grava operando i # dependência: cada cpu no passo i le 2 operandos produzidos no passo i-1 # sincronização desnecessária devido sincronismo da PRAM (relógio único e quantidade igual de passos) # a cada passo menos cpus são necessárias Programação distribuída e paralela (C. Geyer) Algoritmos Paralelos 65
66 Modelos de Máquinas Paralelas! Exemplo de algoritmo PRAM: soma de N elementos " exemplo com 8 elementos # log8 = 3 passos # passo 1: # cpu 1: soma T[1] e T[2] e grava T[1] # cpu 2: soma T[3] e T[4] e grava T[2] # cpu 3: soma T[5] e T[6] e grava T[3] # cpu 4: soma T[7] e T[8] e grava T[4] # passo 2: somente cpus 1 e 2 # passo 3: somente cpu 1 Programação distribuída e paralela (C. Geyer) Algoritmos Paralelos 66
67 Modelos de Máquinas Paralelas Soma com n=8 e 8 cpus S = T 1 T 1 Obs: é um DAG T 1 T 2 T 1 T 2 T 3 T 4 T 1 = V 1 T 2 = T 3 = T 4 = T T 8 = V V 2 3 V 5 = T 6 = T 7 = 4 V 5 V 6 V 7 V 8 p p 1 p 2 p p p 5 p 6 p 7 Programação distribuída e paralela (C. Geyer) Algoritmos Paralelos 67
68 Modelos de Máquinas Paralelas! Exemplo de algoritmo PRAM: soma de N elementos " código # global_var V: [N] S T: [N] local_var A Programação distribuída e paralela (C. Geyer) Algoritmos Paralelos 68
69 Modelos de Máquinas Paralelas! Exemplo de algoritmo PRAM: soma de N elementos " código # begin 1. globalread(v[i], A) % copia vetor em 2 passos 2. glowrite(a, T[i]) 3. for (h = 1 to log N) do % loop altura do vetor if (i <= (N/2 h )) then % elimina cpus globalread(t[2i-1], X) globalread(t(2i]), Y) Z := X+Y; globalwrite(z, T[i]) 4. if (i = 1) then S := T[1] Programação distribuída e paralela (C. Geyer) Algoritmos Paralelos 69
70 Modelos de Máquinas Paralelas! Exemplo de algoritmo PRAM: soma de N elementos " complexidade seqüencial # O(n) " complexidade paralela # passos 1, 2 e 4: O(1) # considerando n cpus # passo 3: # loop: log n passos: O(log n) # considerando n/2 cpus # total: O(log n) Programação distribuída e paralela (C. Geyer) Algoritmos Paralelos 70
71 Modelos de Máquinas Paralelas! Exemplo de algoritmo PRAM: soma de N elementos " desempenho # S n (n) = n / log n # E n (n) = n / (n log n) = 1 / log n # #máxima de tarefas # n nos passos 1 e 2 # n/2 no passo 3 (sub passo 1) # T # (n) = log n # usando n cpus # desprezando passos 1 e 2: usando n/2 cpus Programação distribuída e paralela (C. Geyer) Algoritmos Paralelos 71
72 Modelos de Máquinas Paralelas! Tipos de PRAM " critério # acessos concorrentes à mesma posição de memória " notação: # E: acesso exclusivo por uma cpu # C: acesso concorrente por várias cpus # R: em leitura # W: em escrita (e leitura) " EREW: nenhum tipo de acesso concorrente " CREW: leitura concorrente " CRCW: leitura e escrita concorrente Programação distribuída e paralela (C. Geyer) Algoritmos Paralelos 72
73 ! Tipos de PRAM Modelos de Máquinas Paralelas " 3 subtipos de CRCW # semântica em caso de escrita concorrente # comum # permite se as cpus escrevem o mesmo valor # arbitrária # escolhe arbitrariamente uma cpu # prioritária # escolhe a cpu com menor índice " não há diferenças substanciais entre EREW, CREW e CRCW # mas concorrência oferece maior poder # segundo alguns estudos teóricos Programação distribuída e paralela (C. Geyer) Algoritmos Paralelos 73
74 Modelos de Máquinas Paralelas! Notação simplificada " omissão das leituras e escritas na memória global " acessos são implícitos pela referência a variáveis globais " exemplo # comando: A := B + C # onde A, B e C são variáveis globais # significa # global read(b, x) # global read(c, y) # z := x + y # global write(z, A) Programação distribuída e paralela (C. Geyer) Algoritmos Paralelos 74
75 PRAM: matriz X matriz! Exemplo PRAM: matriz X matriz " entrada " saída # A, B: 2 matrizes n x n # n = 2 k, k é inteiro # C = A * B (matriz n x n) " especificação # C i,j = produto da linha Ai por coluna Bj # = A i,1 * B 1, j + A i,2 * B 2,j A i,n * B n,j # total de n 3 multiplicações # cada C i,j : n multiplicações # n 2 C i,j # n 2 : cada linha de A multiplica por cada coluna de B Programação distribuída e paralela (C. Geyer) Algoritmos Paralelos 75
76 ! Exemplo PRAM: matriz X matriz " características # n 3 processadores, indicados por P i,j,m # P i,j,m calcula produto A[i, m] * B[m, j] # para cada par (i, j): PRAM: matriz X matriz # os n processadores P i,j,m, 1! m! n, (variação de m) # calculam a soma dos A[i, m] * B[m, j], 1! m! n, # conforme exemplo soma de elementos de vetor # cada vetor m (m) de n processadores calcula o produto de 1 linha de A (i) por 1 coluna de B (j) # soma de n multiplicações # n 2 somas (n 2 produtos Ci,j) Programação distribuída e paralela (C. Geyer) Algoritmos Paralelos 76
77 PRAM: matriz X matriz! Exemplo PRAM: matriz X matriz (cont.) " código: # referências implícitas à memória global # processadores indicados por i, j, m # C : # n matrizes de n 2 # algoritmo que consome muito espaço Programação distribuída e paralela (C. Geyer) Algoritmos Paralelos 77
78 ! Exemplo PRAM: matriz X matriz (cont.) " código: PRAM: matriz X matriz begin // calcula todos os produtos; n 3 produtos 1. C [i, j, m] = A[i, m] * B[m, j] // loop normal da soma de n elementos (variação em m) // mas n 2 somas (variação em i,j) //! das cpus trabalham mas como na soma, umas mais 2. for h = 1 to log n do if (m! (n / 2 h )) then C [i, j, m) = C [i, j, 2m - 1) + C [i, j, 2m] // todos os p i, j, 1 efetuam cópia 3. if (m == 1) then C[i, j] = C [i, j, 1] end. Programação distribuída e paralela (C. Geyer) Algoritmos Paralelos 78
79 PRAM: matriz X matriz! Exemplo PRAM: matriz X matriz (cont.) " observações # leitura concorrente no passo 1 # por exemplo, P i,1,l, P i,2,l,..., P 1,n,l, acessam A[i, l] # PRAM deve ser CREW # complexidade: O(logn) # passo 1: 1 # passo 2: soma: O(logn) # passo 3: 1 # se o if do passo 3 é eliminado então PRAM deve ser CRCW com valores iguais Programação distribuída e paralela (C. Geyer) Algoritmos Paralelos 79
80 PRAM: matriz X matriz! Exemplo PRAM: matriz X matriz (cont.) " speedup # S(n) = n 3 /logn # Ep(n) = 1/logn # usa n 3 cpus Programação distribuída e paralela (C. Geyer) Algoritmos Paralelos 80
81 PRAM: matriz X matriz! Exercício " desenhe as curvas de S e E para n = 2, 4, 8, 16, 32, # obs: note que p varia com n Programação distribuída e paralela (C. Geyer) Algoritmos Paralelos 81
82 Princípio de Escalonamento! Exemplo soma de n elementos com poucos processadores " Não há cpus suficientes para # a cópia # e para os 1os níveis da árvore " n = 2 k ; p processadores = 2 q ; m = n/p = 2 k - q " Exemplo # n = 16 = 2 4 -> k = 4 # p = 4 = 2 2 => q = 2 # m = 4 # somente 4 cpus copiam # somente 4 cpus efetuam 8 somas (1º nível) Programação distribuída e paralela (C. Geyer) Algoritmos Paralelos 82
83 Princípio de Escalonamento! Exemplo soma de n elementos com poucos processadores " escalonamento # dividir A[n] em p subvetores, cada um de tamanho m elementos # cada pi copia A((m(i - 1) + m), mi) # por exemplo: n = 8, p = 4, m = 2 p1: A(1,2) a B(1, 2) p2: A(3, 4) a B(3, 4) p3:... p4: A(7, 8) a B(7, 8) Programação distribuída e paralela (C. Geyer) Algoritmos Paralelos 83
84 Princípio de Escalonamento! Exemplo soma de n elementos com poucos processadores " n = 2 k ; p processadores = 2 q ; m = n/p = 2 k q " escalonamento # a cada altura h da árvore binária (algoritmo anterior para p = n) # geração de cada B(m) é dividida entre p processadores # qtde de operações concorrentes = n/2 h = 2 k - h # conforme nível da árvore (h) # n = 2 k # se 2 k - h >= p (= 2 q ) ou k - h - q >= 0 então divide 2 k - h entre p processadores se não usar os 2 k - h processadores de menor índice (usual) Programação distribuída e paralela (C. Geyer) Algoritmos Paralelos 84
85 Princípio de Escalonamento! exemplo soma de n elementos com poucos processadores (cont.) " algoritmo nível inferior entradas: A[n] n p: qtde. de processadores i: índice do processador saídas: SUM: soma dos n elementos de A Programação distribuída e paralela (C. Geyer) Algoritmos Paralelos 85
86 Princípio de Escalonamento! exemplo soma... com poucos processadores (cont.) " begin 1. % cópia de um B parcial; por cada processador i for j = 1 to m (= n/p) do B(m(i - 1) + j) := A(m(i - 1) + j) Programação distribuída e paralela (C. Geyer) Algoritmos Paralelos 86
87 Princípio de Escalonamento! exemplo soma... com poucos processadores (cont.) " 2. for h = 1 to logn do % soma: logn passos 2.1. if (k - h - q >= 0) then % caso haja falta de cpus % cada p: efetua vários passos for j = (2k - h - q(i - 1) + 1) to (2k - h - qi) do B(j) := B(2j - 1) + B(2j) 2.2 else if (i <= 2 k- h) then % caso haja suficientes cpus B(i) := B(2i - 1 ) + B(2i) Programação distribuída e paralela (C. Geyer) Algoritmos Paralelos 87
88 Princípio de Escalonamento! exemplo soma... com poucos processadores (cont.) " 3. if (i = 1) then SUM := B(1) Programação distribuída e paralela (C. Geyer) Algoritmos Paralelos 88
89 Princípio de Escalonamento! exemplo soma... com poucos processadores (cont.) " Exercício # Para n = 16 e p = 4, indique o que faz a cpu 2 em cada passo Programação distribuída e paralela (C. Geyer) Algoritmos Paralelos 89
90 Outros Tópicos! Outros conceitos: cap. 1 do Jaja " Escalonamento " Ótimo " Trabalho! Técnicas básicas de paralelização (algoritmos): cap. 2 do Jaja " árvore " divisão e conquista " particionamento " saltos via ponteiros Programação distribuída e paralela (C. Geyer) Algoritmos Paralelos 90
91 Outros Tópicos! Outros algoritmos: resto do Jaja " Sobre strings " Classificação "... Programação distribuída e paralela (C. Geyer) Algoritmos Paralelos 91
92 Revisão! Revisão " áreas do processamento paralelo " razões para maior uso do processamento paralelo " diferenças entre algoritmos seqüenciais e paralelos " razões para estudo especial de algoritmos paralelos " speedup # definição # fórmula # curva ideal # curvas normais (2) # speedup superlinear Programação distribuída e paralela (C. Geyer) Algoritmos Paralelos 92
93 Revisão! Revisão " eficiência # definição # fórmula # limite de T* # curva ideal # curva normal " máquina abstrata ideal " linguagem para máquina abstrata (Jaja) Programação distribuída e paralela (C. Geyer) Algoritmos Paralelos 93
94 Revisão! Revisão " máquina DAG # definição e componentes # entrada # algoritmos família # vantagens e aplicações # desvantagens # escalonamento # restrições # escalonamento ótimo Programação distribuída e paralela (C. Geyer) Algoritmos Paralelos 94
95 Revisão! Revisão " máquina PRAM # memórias # quantidade e tipos # tipos de acesso x instruções # relógios x cpus (sincronização) # vantagem para programador # criação de processos # seleção de processadores/processos Programação distribuída e paralela (C. Geyer) Algoritmos Paralelos 95
96 ! Revisão Revisão " algoritmo M*V # valores de n e p # idéia de paralelização # dependência de dados # S(n) e E(n)? " algoritmo soma de n # valores de n e p # idéia de paralelização # trabalho de cada cpu ao longo do algoritmo # dependência de dados # truque para uso correto dos valores anteriores # S(n) e E(n)? Programação distribuída e paralela (C. Geyer) Algoritmos Paralelos 96
97 Revisão! Revisão " M*M # quantas cpus? # o que faz cada cpu no 1o passo? # qual a memória auxiliar necessária no 1o passo? # o que é feito no 2o passo? # quais cpus trabalham no 2o passo? # o que é feito no 3o e último passo? # qual a complexidade? # qual o S(n)? e a Ep(n)? Programação distribuída e paralela (C. Geyer) Algoritmos Paralelos 97
98 Revisão! Revisão " soma de n elementos com p < n cpus # como é feita a cópia do vetor original (1o passo)? # quantas cpus trabalham? # qual a complexidade geral do 2o passo? # qual a regra para escolha das 2 alternativas no 2o passo? # explique a idéia geral da nova alternativa em relação ao algoritmo orginal (n = p)? Programação distribuída e paralela (C. Geyer) Algoritmos Paralelos 98
Universidade Estadual de Mato Grosso do Sul UEMS Curso de Ciência da Computação Disciplina de Algoritmos Paralelos e Distribuídos
Universidade Estadual de Mato Grosso do Sul UEMS Curso de Ciência da Computação Disciplina de Algoritmos Paralelos e Distribuídos Pensando em Paralelo Pensar em paralelo é uma tarefa que exige disciplina
Leia maisModelo de Programação Paralela
Modelo de Programação Paralela As arquiteturas paralelas e distribuídas possuem muitos detalhes Como especificar uma solução paralela pensando em todos esses detalhes? O que queremos? Eecutar a solução
Leia maisExercícios (Ian Foster s Book)
Exercícios (Ian Foster s Book) 1) If today's workstations execute at operations per second, and performance increases at a rate of 25 percent per year, how long will it be before we have workstations capable
Leia maisDefinindo melhor alguns conceitos
Definindo melhor alguns conceitos Concorrência termo mais geral, um programa pode ser constituído por mais de um thread/processo concorrendo por recursos Paralelismo uma aplicação é eecutada por um conjunto
Leia maisModelos para Concorrência
Modelos para Concorrência Modelos para descrição de concorrência Programa Interdisciplinar de Pós Graduação em Computação Aplicada Universidade do Vale do Rio dos Sinos Gerson Cavalheiro Processamento
Leia maisOrganização e comunicação em plataformas paralelas
Organização e comunicação em plataformas paralelas Processamento Paralelo Prof. Oberlan Romão Departamento de Computação e Eletrônica DCEL Centro Universitário Norte do Espírito Santo CEUNES Universidade
Leia maisCurso de Programação Distribuída e Paralela 29/09/2008. Informática UFRGS. Sistemas Operacionais II (C. Geyer) Sincronização 1. Pg.
Sistemas Operacionais Professor Cláudio Geyer Instituto de - Sistemas Operacionais II (C. Geyer) Sincronização 1 Sistemas Operacionais Professor Cláudio Geyer Instituto de - Pg. 1 1 Tópicos ensinados no
Leia maisNem todos os problemas algorítmicos que podem ser resolvidos em princípio podem ser resolvidos na prática: os recursos computacionais requeridos
Nem todos os problemas algorítmicos que podem ser resolvidos em princípio podem ser resolvidos na prática: os recursos computacionais requeridos (tempo ou espaço) podem ser proibitivos. 1 Suponha que duas
Leia maisAlgoritmos Paralelos usando CGM/MPI: Uma Introdução. Edson Norberto Cáceres e Siang Wun Song DCT/UFMS e DCC/IME/USP DCC-IME-USP - Aula 02
Algoritmos Paralelos usando CGM/MPI: Uma Introdução Edson Norberto Cáceres e Siang Wun Song DCT/UFMS e DCC/IME/USP DCC-IME-USP - Aula 02 Aula 2 - Objetivos Introduzir o conceito de um sistema de computação
Leia maisComputadores e Programação (DCC/UFRJ)
Computadores e Programação (DCC/UFRJ) Aula 3: 1 2 3 Abstrações do Sistema Operacional Memória virtual Abstração que dá a cada processo a ilusão de que ele possui uso exclusivo da memória principal Todo
Leia maisANÁLISE DE ALGORITMOS: PARTE 1. Prof. André Backes. Como resolver um problema no computador? Precisamos descrevê-lo de uma forma clara e precisa
ANÁLISE DE ALGORITMOS: PARTE 1 Prof. André Backes Algoritmos 2 Como resolver um problema no computador? Precisamos descrevê-lo de uma forma clara e precisa Precisamos escrever o seu algoritmo Um algoritmo
Leia maisANÁLISE DE COMPLEXIDADE DOS ALGORITMOS
1/18 ANÁLISE DE COMPLEXIDADE DOS ALGORITMOS Algoritmos 2/18 Algoritmos Algoritmo - sequência de instruções necessárias para a resolução de um problema bem formulado (passíveis de implementação em computador)
Leia maisAnálise de complexidade
Introdução Algoritmo: sequência de instruções necessárias para a resolução de um problema bem formulado (passíveis de implementação em computador) Estratégia: especificar (definir propriedades) arquitectura
Leia maisAnálise de Algoritmos Estrutura de Dados II
Centro de Ciências Exatas, Naturais e de Saúde Departamento de Computação Análise de Algoritmos Estrutura de Dados II COM10078 - Estrutura de Dados II Prof. Marcelo Otone Aguiar marcelo.aguiar@ufes.br
Leia maisÉ interessante comparar algoritmos para valores grandes de n. Para valores pequenos de n, mesmo um algoritmo ineficiente não custa muito para ser
É interessante comparar algoritmos para valores grandes de n. Para valores pequenos de n, mesmo um algoritmo ineficiente não custa muito para ser executado 1 Fazendo estimativas e simplificações... O número
Leia maisao paradigma imperativo
PARADIGMA FUNCIONAL PARADIGMA FUNCIONAL: INTRODUÇÃO G Exemplos de linguagens funcionais LISP - Início: LP puramente funcional - Depois: acréscimo de alguns recursos imperativos (aumentaram eficiência de
Leia maisAULA 06: PROGRAMAÇÃO EM MÁQUINAS PARALELAS
ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES II AULA 06: PROGRAMAÇÃO EM MÁQUINAS PARALELAS Prof. Max Santana Rolemberg Farias max.santana@univasf.edu.br Colegiado de Engenharia de Computação PROGRAMAÇÃO PARALELA
Leia maisProgramação Concorrente e Paralela
projeto de programas paralelos 2016 PCAM problema particionamento comunicacao aglomeracao mapeamento desenhada para memória distribuída mas muitas idéias em comum Particionamento idéia é expor oportunidades
Leia maisIntrodução à Ciência da Computação II
Introdução à Ciência da Computação II 2semestre/200 Prof Alneu de Andrade Lopes Apresentação com material gentilmente cedido pelas profas Renata Pontin Mattos Fortes http://wwwicmcuspbr/~renata e Graça
Leia maisToward an Architecture-Independent Analysis of Parallel Algorithms
1/22 Introdução O algoritmo de aproximação Aplicações em Problemas Concretos Problemas Abertos Referências Toward an Architecture-Independent Analysis of Parallel Algorithms Mijail Gamarra Holguin 18 de
Leia maisPreliminares. Profa. Sheila Morais de Almeida. agosto
Preliminares Profa. Sheila Morais de Almeida DAINF-UTFPR-PG agosto - 2016 Algoritmos Definição - Skiena Algoritmo é a ideia por trás dos programas de computador. É aquilo que permanece igual se o programa
Leia mais1. A pastilha do processador Intel possui uma memória cache única para dados e instruções. Esse processador tem capacidade de 8 Kbytes e é
1. A pastilha do processador Intel 80486 possui uma memória cache única para dados e instruções. Esse processador tem capacidade de 8 Kbytes e é organizado com mapeamento associativo por conjuntos de quatro
Leia maisBacharelado em Sistemas de Informação Sistemas Operacionais. Prof. Filipo Mór
Bacharelado em Sistemas de Informação Sistemas Operacionais Prof. Filipo Mór WWW.FILIPOMOR.COM - REVISÃO ARQUITETURAS PARALELAS Evolução das Arquiteturas Evolução das Arquiteturas Entrada CPU Saída von
Leia maisComplexidade de algoritmos Notação Big-O
Complexidade de algoritmos Notação Big-O Prof. Byron Leite Prof. Tiago Massoni Engenharia da Computação Poli - UPE Motivação O projeto de algoritmos é influenciado pelo estudo de seus comportamentos Problema
Leia maisAnálise de Complexidade de Algoritmos. mario alexandre gazziro
Análise de Complexidade de Algoritmos mario alexandre gazziro Definição A complexidade de um algoritmo consiste na quantidade de esforço computacional necessária para sua execução. Esse esforço é expresso
Leia mais2. Complexidade de Algoritmos
Introdução à Computação II 5952011 2. Complexidade de Algoritmos Prof. Renato Tinós Depto. de Computação e Matemática (FFCLRP/USP) 1 Principais Tópicos 2.1. Introdução 2.1.1. Revisão de Pseudo-Código 2.1.2.
Leia maisCOMPLEXIDADE DE ALGORITMOS
COMPLEXIDADE DE ALGORITMOS Algoritmos Seqüência de instruções necessárias para a resolução de um problema bem formulado Permite implementação computacional COMPLEXIDADE DE ALGORITMOS Um algoritmo resolve
Leia maisALGORITMOS AVANÇADOS UNIDADE I Análise de Algoritmo - Notação O. Luiz Leão
Luiz Leão luizleao@gmail.com http://www.luizleao.com Conteúdo Programático 1.1 - Algoritmo 1.2 - Estrutura de Dados 1.2.1 - Revisão de Programas em C++ envolvendo Vetores, Matrizes, Ponteiros, Registros
Leia maisFaculdade de Computação 3 a Prova de Arquitetura e Organização de Computadores 2 Parte I Prof. Cláudio C. Rodrigues
Faculdade de Computação 3 a Prova de Parte I Prof. Cláudio C. Rodrigues Nome: Matrícula: Valor: 15 Nome: Matrícula: Valor: 15 Nome: Matrícula: Valor: 15 Nome: Matrícula: Valor: 15 Problemas: P1. Qual o
Leia maisArquitetura e Organização de Computadores
Arquitetura e Organização de Computadores Unidade Central de Processamento (CPU) Givanaldo Rocha de Souza http://docente.ifrn.edu.br/givanaldorocha givanaldo.rocha@ifrn.edu.br Baseado nos slides do capítulo
Leia maisUniversidade Federal do RGS Instituto de Informática Departamento de Informática Aplicada
Universidade Federal do RGS Instituto de Informática Departamento de Informática Aplicada Disciplina: INF01151 - Sistemas Operacionais II N Turma: A, 2 Sem/2008 Prof. Cláudio Geyer CURSOS : Ciência da
Leia maisTeoria da computabilidade Indecidíveis Decidíveis
Bacharelado em Ciência da Computação Disciplina: Algoritmos e Estruturas de Dados I Professor: Mário Luiz Rodrigues Oliveira Teoria da computabilidade Indecidíveis Decidíveis Teoria da complexidade Intratáveis:
Leia maisIntrodução OpenMP. Nielsen Castelo Damasceno
Introdução OpenMP Nielsen Castelo Damasceno Computação de auto desempenho Processamento Paralelo Memória Distribuída e Compartilhada Modelo de programação OpenMP Métricas de Desempenho Computação de auto
Leia maisAula 1. Teoria da Computação III
Aula 1 Teoria da Computação III Complexidade de Algoritmos Um problema pode ser resolvido através de diversos algoritmos; O fato de um algoritmo resolver um dado problema não significa que seja aceitável
Leia maisParalelização de Algoritmos de CFD em Clusters Multi-Core MC7. Escola de Verão Arquiteturas Multi-Core
RSS-Verão-01/08 p.1/36 Paralelização de Algoritmos de CFD em Clusters Multi-Core MC7 Escola de Verão 2008 Arquiteturas Multi-Core Renato S. Silva LNCC - MCT Janeiro de 2008 RSS-Verão-01/08 p.2/36 Objetivo:
Leia maisArquiteturas de Sistemas de Processamento Paralelo. Arquiteturas SIMD
Universidade Federal do Rio de Janeiro Pós-Graduação em Informática DCC/IM - NCE/UFRJ Arquiteturas de Sistemas de Processamento Paralelo Arquiteturas SIMD Arquiteturas SIMD Processadores Vetoriais Arquiteturas
Leia maisOpenMP: Variáveis de Ambiente
Treinamento OpenMP C/C++ 1 TREINAMENTO OpenMP C/C++ Módulo 1 Computação de Alto Desempenho Módulo 2 OpenMP: Construtores Paralelos Módulo 3 OpenMP: Diretivas de sincronização Módulo 4 OpenMP: Funções de
Leia maisCT-234. Estruturas de Dados, Análise de Algoritmos e Complexidade Estrutural. Carlos Alberto Alonso Sanches
CT-234 Estruturas de Dados, Análise de Algoritmos e Complexidade Estrutural Carlos Alberto Alonso Sanches Bibliografia T.H. Cormen, C.E. Leiserson and R.L. Rivest Introduction to algorithms R. Sedgewick
Leia maisBenchmarks. 1. Introdução
Benchmarks 1. Introdução Um Benchmark é um programa de teste de desempenho que analisa as características de processamento e de movimentação de dados de um sistema de computação com o objetivo de medir
Leia maisProjeto e Análise de Algoritmos
Projeto e Análise de Algoritmos Aula 01 Complexidade de Algoritmos Edirlei Soares de Lima O que é um algoritmo? Um conjunto de instruções executáveis para resolver um problema (são
Leia maisProgramação de Computadores:
Instituto de C Programação de Computadores: Introdução a Linguagens de Programação Luis Martí Instituto de Computação Universidade Federal Fluminense lmarti@ic.uff.br - http://lmarti.com Seis Camadas Problema
Leia maisDifusão e Coleta em uma rede. Algoritmos Distribuídos Andrews (C. Geyer) Difusão e Coleta: Probe/Echo 1
Algoritmos de Probe/Echo Difusão e Coleta em uma rede Algoritmos Distribuídos Andrews (C. Geyer) Difusão e Coleta: Probe/Echo 1 Autor Autor 1ª versão: Ricardo Castro Mattia Revisões: C. Geyer Local Instituto
Leia maisParte I Multiprocessamento
Sistemas Operacionais I Estrutura dos SO Prof. Gregorio Perez gregorio@uninove.br 2004 Parte I Multiprocessamento Roteiro 1 Multiprocessadores em Sistemas Fortemente Acoplados 1.1 1.2 1.3 Processamento
Leia maisAlgoritmos Distribuídos. AD Modelo Computacional 1
Algoritmos Distribuídos Modelo Computacional Antonio Alfredo Ferreira Loureiro loureiro@dcc.ufmg.br http://www.dcc.ufmg.br/~loureiro AD Modelo Computacional 1 Modelo Computacional Modelo: Esquema que possibilita
Leia maisSSC PROGRAMAÇÃO CONCORRENTE. Aula 03 Terminologia Geral de Computação Paralela Prof. Jó Ueyama
SSC- 0742 PROGRAMAÇÃO CONCORRENTE Aula 03 Terminologia Geral de Computação Paralela Prof. Jó Ueyama Créditos Os slides integrantes deste material foram construídos a par4r dos conteúdos relacionados às
Leia maisTeoria da Computação Aula 9 Noções de Complexidade
Teoria da Computação Aula 9 Noções de Complexidade Prof. Esp. Pedro Luís Antonelli Anhanguera Educacional Análise de um Algoritmo em particular Qual é o custo de usar um dado algoritmo para resolver um
Leia maisESTRUTURA DE DADOS I AULA I
ESTRUTURA DE DADOS I AULA I PROF. ME. HÉLIO ESPERIDIÃO O que é um dado? Dado pode ser definido como a matéria-prima originalmente obtida de uma ou mais fontes (etapa de coleta). o que é a informação A
Leia maisESTRUTURAS DE DADOS prof. Alexandre César Muniz de Oliveira
ESTRUTURAS DE DADOS prof. Alexandre César Muniz de Oliveira 1. Introdução 2. Pilhas 3. Filas 4. Listas 5. Árvores 6. Grafos 7. Complexidade 8. Ordenação 9. Busca Sugestão bibliográfica: ESTRUTURAS DE DADOS
Leia maisDisciplina: Arquitetura de Computadores
Disciplina: Arquitetura de Computadores Estrutura e Funcionamento da CPU Prof a. Carla Katarina de Monteiro Marques UERN Introdução Responsável por: Processamento e execução de programas armazenados na
Leia maisProgramação Distribuída e Paralela Apresentação
Programação Distribuída e Paralela Apresentação Programação Distribuída e Paralela (C. Geyer) Apresentação V4.2 S 1 Autoria Autoria Local Versão 4.2 Fev 2014 C. Geyer INF UFRGS Disciplinas INF01008 Programação
Leia maisProgramação de Alto Desempenho - 2. Prof: Carla Osthoff
Programação de Alto Desempenho - 2 Prof: Carla Osthoff E-mail: osthoff@lncc.br 3- Modelos de programação paralela Shared Memory/Threads Posix Win32 treads OpenMP Message Passing MPI Data Parallel OpenCL/Cuda
Leia maisDecisões arquiteturais importantes. Projeto arquitetural x projeto de algoritmos. Decomposição de dados. Decomposição de dados
Processamento Paralelo Técnicas de Decomposição de Problemas Prof. João Paulo A. Almeida (jpalmeida@inf.ufes.br) Decisões arquiteturais importantes 1. Divisão de responsabilidades entre partes (componentes)
Leia maisESTRUTURAS DE DADOS E ALGORITMOS APRESENTAÇÃO DO CURSO E INTRODUÇÃO
ESTRUTURAS DE DADOS E ALGORITMOS APRESENTAÇÃO DO CURSO E INTRODUÇÃO Adalberto Cajueiro (adalberto@computacao.ufcg.edu.br) Departamento de Sistemas e Computação Universidade Federal de Campina Grande 1
Leia maisPIPELINE. Introdução ao Pipeline. PIPELINE Ciclo de Instruções. PIPELINE Ciclo de Instruções. PIPELINE - Exemplo. PIPELINE Considerações
Arquitetura de Computadores Introdução ao Pipeline PIPELINE Linha de Montagem A produção é dividida em várias etapas Produtos em etapas distintas podem ser desenvolvidos separadamente Pode ser Aplicado
Leia maisPROGRAMAÇÃO OBJECTIVOS DA CADEIRA
PROGRAMAÇÃO Engª Mecânica 2007-2008 Sérgio Rodrigues sergio.rodrigues@ipt.pt OBJECTIVOS DA CADEIRA Fornecer aos alunos os conhecimentos básicos de algoritmia, capacitando-os para o desenho e documentação
Leia maisComplexidade de Tempo e Espaço
Complexidade de Tempo e Espaço Profa. Sheila Morais de Almeida DAINF-UTFPR-PG junho - 2018 Sheila Almeida (DAINF-UTFPR-PG) Complexidade de Tempo e Espaço junho - 2018 1 / 43 Este material é preparado usando
Leia maisCérebro humano versus Computador digital
Cérebro humano versus Computador digital O cérebro humano possui uma rede de neurónios (células nervosas) que formam um sistema de processamento de informação em rede extremamente potente. E isso é um
Leia mais4) Defina o que vem a ser um algoritmo, e porque, o mesmo depende do processo.
Lista de Exercício 1 Algoritmo e Programação 29/08/2018 (Solução) 1) Escreva conforme a premissas computacionais, o que vem a ser, lógica. R: São as premissas básicas para se executar instruções, alocadas
Leia maisMultiprocessamento. Patterson & Hennessy Capítulo 9. Arquitetura e Organização de Computadores Juliano M. Vieira (c) 2011
Multiprocessamento Patterson & Hennessy Capítulo 9 Arquitetura e Organização de Computadores Juliano M. Vieira (c) 2011 Tópicos Abordados Tipos comuns SMP (processamento paralelo) NUMA (placas de alto
Leia maisComputação Paralela (CUDA)
Universidade Federal do Amazonas Faculdade de Tecnologia Departamento de Eletrônica e Computação Computação Paralela (CUDA) Hussama Ibrahim hussamaibrahim@ufam.edu.br Notas de Aula Baseado nas Notas de
Leia maisSSC510 Arquitetura de Computadores. 6ª aula
SSC510 Arquitetura de Computadores 6ª aula PARALELISMO EM NÍVEL DE PROCESSOS PROFA. SARITA MAZZINI BRUSCHI Tipos de Paralelismo Instrução (granulosidade fina) Paralelismo entre as instruções Arquiteturas
Leia maisQuantidade de memória necessária
Tempo de processamento Um algoritmo que realiza uma tarefa em 10 horas é melhor que outro que realiza em 10 dias Quantidade de memória necessária Um algoritmo que usa 1MB de memória RAM é melhor que outro
Leia maisProgramação Paralela e Distribuída Lista de Exercícios P2 2008/1
Programação Paralela e Distribuída Lista de Exercícios P2 2008/1 Sincronização de Relógio Questão 1 Explique por que existe a necessidade de sincronização de relógio em sistemas distribuídos. Questão 2
Leia maisAlgoritmos e Estrutura de Dados. Aula 01 Apresentação da Disciplina e Introdução aos Algoritmos Prof. Tiago A. E. Ferreira
Algoritmos e Estrutura de Dados Aula 01 Apresentação da Disciplina e Introdução aos Algoritmos Prof. Tiago A. E. Ferreira Ementa e Objetivos Ementa: Análise de Algoritmos: Notação O e Análise Assintótica.
Leia maisLista 1 - PMR2300. Fabio G. Cozman 3 de abril de 2013
Lista 1 - PMR2300 Fabio G. Cozman 3 de abril de 2013 1. Qual String é impressa pelo programa: p u b l i c c l a s s What { p u b l i c s t a t i c void f ( i n t x ) { x = 2 ; p u b l i c s t a t i c void
Leia maisModelagem e implementação de programas concorrentes
Modelagem e implementação de programas concorrentes Aula 3 DCC-UFMG 2010 Bibliograa G.R. Andrews. Foundations of Multithreaded, Parallel, and Distributed Programming. Addison-Wesley, 1999. M. Ben-Ari.
Leia maisAlgoritmo. Exemplo. Definição. Programação de Computadores Comparando Algoritmos. Alan de Freitas
Algoritmos Programação de Computadores Comparando Algoritmos Um algoritmo é um procedimento de passos para cálculos. Este procedimento é composto de instruções que definem uma função Até o momento, vimos
Leia maisSistemas Distribuídos
Sistemas Distribuídos Thaís Vasconcelos Batista UFRN DIMAp http://www.dimap.ufrn.br/~thais thais@ufrnet.br Programa do Curso INTRODUÇÃO Conceitos Básicos Sistemas em Rede X Sistemas Distribuídos Necessidade
Leia maisProgramação Paralela. Objetivo: Apresentar conceitos básico de programação paralela com MPI.
Programação Paralela Objetivo: Apresentar conceitos básico de programação paralela com MPI. Apresentação Introdução; Arquiteturas paralelas; Análises de algoritmos; Comunicação em programas paralelos;
Leia maisEstatística e Modelos Probabilísticos - COE241
Estatística e Modelos Probabilísticos - COE241 Aula passada Função Distribuição Condicional Calculando Probabilidades condicionando Esperança Condicional Aula de hoje Análise de Comandos de Programação
Leia maisIntrodução ao CUDA. Material elaborado por Davi Conte.
Introdução ao CUDA Material elaborado por Davi Conte. O objetivo deste material é que o aluno possa iniciar seus conhecimentos em programação paralela, entendendo a diferença da execução de forma sequencial
Leia maisSistema Distribuído. Sistema Distribuído. Aplicações Distribuídas. Conceitos Básicos
Sistema Distribuído Conjunto de máquinas (CPU + memória) interligadas em rede. Sistema Distribuído Sistema operacional distribuído trata este conjunto como um único sistema computacional. Estação 1 Estação
Leia maisEstrutura da Apresentação. Introdução ao Processamento Paralelo e Distribuído. Conceitos em PPD. Conceitos em PPD 4/26/09.
Estrutura da Apresentação Introdução ao rocessamento aralelo e Distribuído Conceitos em rocessamento aralelo e Distribuído; Frentes de trabalho e pesquisa em D; O D no Rio Grande do Sul; Observações finais.
Leia maisArquiteturas Paralelas
ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES Arquiteturas Paralelas Medidas de desempenho Alexandre Amory Edson Moreno Índice 2 1. Introdução 2. Medidas de Desempenho Introdução 3 Aumento de desempenho dos
Leia maisAnálise de algoritmos
Análise de algoritmos SCE-181 Introdução à Ciência da Computação II Alneu Lopes Thiago A. S. Pardo 1 Algoritmo Noção geral: conjunto de instruções que devem ser seguidas para solucionar um determinado
Leia maisParalelismo de dados. (execução de simultaneidade) Tipo de arquitetura paralela SIMD. SIMD (Single Instruction Multiple Data)
Paralelismo de dados (execução de simultaneidade) Em métodos tradicionais de programação (processamento sequencial), uma grande quantidade de dados é processada em um único núcleo de uma CPU, enquanto
Leia maisProgramação: Vetores
Programação de Computadores I Aula 09 Programação: Vetores José Romildo Malaquias Departamento de Computação Universidade Federal de Ouro Preto 2011-1 1/62 Motivação Problema Faça um programa que leia
Leia maisArranjo de Processadores
Um arranjo síncrono de processadores paralelos é chamado arranjo de processadores, consistindo de múltiplos elementos processadores (EPs) sob a supervisão de uma unidade de controle (UC) Arranjo de processadores
Leia maisAULA 03: PROCESSAMENTO PARALELO: MULTIPROCESSADORES
ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES II AULA 03: PROCESSAMENTO PARALELO: MULTIPROCESSADORES Prof. Max Santana Rolemberg Farias max.santana@univasf.edu.br Colegiado de Engenharia de Computação MULTIPROCESSADORES
Leia maisTÉCNICO DE INFORMÁTICA - SISTEMAS
782 - Programação em C/C++ - estrutura básica e conceitos fundamentais Linguagens de programação Linguagem de programação são conjuntos de palavras formais, utilizadas na escrita de programas, para enunciar
Leia maisWilliam Stallings Arquitetura e Organização de Computadores 8 a Edição
William Stallings Arquitetura e Organização de Computadores 8 a Edição Capítulo 8 Suporte do sistema operacional slide 1 Objetivos e funções Conveniência: Tornar o computador mais fácil de usar. Eficiência:
Leia maisSEMÂNTICA 02/09/2013. Conceitos de LPs - Semântica
UNIVERSIDADE ESTADUAL DE SANTA CRUZ CURSO: CIÊNCIA DA COMPUTAÇÃO DISCIPLINA: CONCEITOS DE LINGUAGENS DE PROGRAMAÇÃO DOCENTE: ROGÉRIO VARGAS DISCENTE: MARIANNA NOVAES Semântica SEMÂNTICA Semântica é a área
Leia maisIntrodução à Computação
Universidade Federal do Maranhão Curso de Química Departamento de Informática Introdução à Computação Linguagem Fortran Profa. Msc. Maria Auxiliadora Freire maria@deinf.ufma.br 1 Lógica de Programação
Leia maisPCC104 Projeto e Análise de Algoritmos
PCC104 Projeto e Análise de Algoritmos Joubert de Castro Lima joubertlima@gmail.com Professor Adjunto DECOM UFOP 2010/1 Figuras retiradas do livro Introduction to parallel Computing Programar em paralelo
Leia maisParalelismo em Computadores com Tecnologia Multicore
IFRN - Pau dos Ferros Pau dos Ferros/RN, 25 de fevereiro de 2016 O minicurso Descrição: Para se utilizar os vários núcleos de processamento disponíveis nos computadores atuais de forma eficiente, faz necessário
Leia maisIntrodução à Programação Paralela através de Padrões. Denise Stringhini Calebe Bianchini Luciano Silva
Introdução à Programação Paralela através de Padrões Denise Stringhini Calebe Bianchini Luciano Silva Sumário Introdução: conceitos de paralelismo Conceitos básicos sobre padrões de programação paralela
Leia maisORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES II AULA 02: PROCESSAMENTO PARALELO: PROCESSADORES VETORIAIS
ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES II AULA 02: PROCESSAMENTO PARALELO: PROCESSADORES VETORIAIS Prof. Max Santana Rolemberg Farias max.santana@univasf.edu.br Colegiado de Engenharia de Computação
Leia maisMarcelo Keese Albertini Faculdade de Computação Universidade Federal de Uberlândia
Introdução à Análise de Algoritmos Marcelo Keese Albertini Faculdade de Computação Universidade Federal de Uberlândia Aula de hoje Nesta aula veremos: Sobre a disciplina Exemplo: ordenação Sobre a disciplina
Leia maisCaracterização de Sistemas Distribuídos
Caracterização de Sistemas Distribuídos Roteiro Conceitos de Hardware Conceitos de Software Classificação de Flynn Classificação baseada no acesso a memória 2 Conceitos de HW Múltiplas CPUs Diferentes
Leia maisAlgoritmos Computacionais
UNIDADE 1 Processador e instruções Memórias Dispositivos de Entrada e Saída Software ARQUITETURA BÁSICA UCP Unidade central de processamento MEM Memória E/S Dispositivos de entrada e saída UCP UNIDADE
Leia maisMedida do Tempo de Execução de um Programa. David Menotti Algoritmos e Estruturas de Dados II DInf UFPR
Medida do Tempo de Execução de um Programa David Menotti Algoritmos e Estruturas de Dados II DInf UFPR Classes de Comportamento Assintótico Se f é uma função de complexidade para um algoritmo F, então
Leia maisTeoria da Computação Aula 8 Noções de Complexidade
Teoria da Computação Aula 8 Noções de Complexidade Prof. Esp. Pedro Luís Antonelli Anhanguera Educacional Motivação: Por que estudar algoritmos? Perguntas: - Por que estudar algoritmos se os computadores
Leia maisTécnicas de Processamento Paralelo na Geração do Fractal de Mandelbrot
Técnicas de Processamento Paralelo na Geração do Fractal de Mandelbrot Bruno Pereira dos Santos Dany Sanchez Dominguez Esbel Tomás Evalero Orellana Universidade Estadual de Santa Cruz Roteiro Breve introdução
Leia maisAula 3: Algoritmos: Formalização e Construção
Aula 3: Algoritmos: Formalização e Construção Fernanda Passos Universidade Federal Fluminense Programação de Computadores IV Fernanda Passos (UFF) Algoritmos: Formalização e Pseudo-Código Programação de
Leia mais1 a Lista Professor: Claudio Fabiano Motta Toledo Estagiário PAE: Jesimar da Silva Arantes
SSC0503 - Introdução à Ciência de Computação II 1 a Lista Professor: Claudio Fabiano Motta Toledo (claudio@icmc.usp.br) Estagiário PAE: Jesimar da Silva Arantes (jesimar.arantes@usp.br) 1. O que significa
Leia maisArquitetura de Computadores II
Universidade Estadual de Maringá Centro de Tecnologia Departamento de Informática Arquitetura de Computadores II Prof. Flávio Rogério Uber Informações Úteis Professor: Flávio Rogério Uber Bloco C-56 Sala
Leia maisEmentário das disciplinas do curso de Engenharia de Software
Ementário das disciplinas do curso de Engenharia de Software Currículo 1 C201 Introdução à Engenharia CH Teórica 10 CH Prática 10 CH Total 20 cr 1 Introdução aos conceitos básicos e às aplicações de engenharia.
Leia mais