Algoritmos Paralelos Introdução (Jaja)

Tamanho: px
Começar a partir da página:

Download "Algoritmos Paralelos Introdução (Jaja)"

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 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 mais

Modelo de Programação Paralela

Modelo 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 mais

Exercícios (Ian Foster s Book)

Exercí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 mais

Definindo melhor alguns conceitos

Definindo 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 mais

Modelos para Concorrência

Modelos 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 mais

Organização e comunicação em plataformas paralelas

Organizaçã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 mais

Curso de Programação Distribuída e Paralela 29/09/2008. Informática UFRGS. Sistemas Operacionais II (C. Geyer) Sincronização 1. Pg.

Curso 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 mais

Nem 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 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 mais

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

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 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 mais

Computadores e Programação (DCC/UFRJ)

Computadores 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 mais

ANÁ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. 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 mais

ANÁLISE DE COMPLEXIDADE DOS ALGORITMOS

ANÁ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 mais

Análise de complexidade

Aná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 mais

Análise de Algoritmos Estrutura de Dados II

Aná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 É 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 mais

ao paradigma imperativo

ao 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 mais

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

AULA 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 mais

Programação Concorrente e Paralela

Programaçã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 mais

Introdução à Ciência da Computação II

Introduçã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 mais

Toward an Architecture-Independent Analysis of Parallel Algorithms

Toward 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 mais

Preliminares. Profa. Sheila Morais de Almeida. agosto

Preliminares. 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 mais

1. 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 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 mais

Bacharelado em Sistemas de Informação Sistemas Operacionais. Prof. Filipo Mór

Bacharelado 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 mais

Complexidade de algoritmos Notação Big-O

Complexidade 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 mais

Análise de Complexidade de Algoritmos. mario alexandre gazziro

Aná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 mais

2. Complexidade de Algoritmos

2. 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 mais

COMPLEXIDADE DE ALGORITMOS

COMPLEXIDADE 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 mais

ALGORITMOS AVANÇADOS UNIDADE I Análise de Algoritmo - Notação O. Luiz Leão

ALGORITMOS 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 mais

Faculdade 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 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 mais

Arquitetura e Organização de Computadores

Arquitetura 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 mais

Universidade 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 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 mais

Teoria da computabilidade Indecidíveis Decidíveis

Teoria 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 mais

Introdução OpenMP. Nielsen Castelo Damasceno

Introduçã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 mais

Aula 1. Teoria da Computação III

Aula 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 mais

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

Paralelizaçã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 mais

Arquiteturas de Sistemas de Processamento Paralelo. Arquiteturas SIMD

Arquiteturas 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 mais

OpenMP: Variáveis de Ambiente

OpenMP: 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 mais

CT-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 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 mais

Benchmarks. 1. Introdução

Benchmarks. 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 mais

Projeto e Análise de Algoritmos

Projeto 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 mais

Programação de Computadores:

Programaçã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 mais

Difusão e Coleta em uma rede. Algoritmos Distribuídos Andrews (C. Geyer) Difusão e Coleta: Probe/Echo 1

Difusã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 mais

Parte I Multiprocessamento

Parte 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 mais

Algoritmos Distribuídos. AD Modelo Computacional 1

Algoritmos 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 mais

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

SSC 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 mais

Teoria da Computação Aula 9 Noções de Complexidade

Teoria 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 mais

ESTRUTURA DE DADOS I AULA I

ESTRUTURA 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 mais

ESTRUTURAS DE DADOS prof. Alexandre César Muniz de Oliveira

ESTRUTURAS 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 mais

Disciplina: Arquitetura de Computadores

Disciplina: 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 mais

Programação Distribuída e Paralela Apresentação

Programaçã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 mais

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

Programaçã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 mais

Decisões arquiteturais importantes. Projeto arquitetural x projeto de algoritmos. Decomposição de dados. Decomposição de dados

Decisõ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 mais

ESTRUTURAS DE DADOS E ALGORITMOS APRESENTAÇÃO DO CURSO E INTRODUÇÃO

ESTRUTURAS 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 mais

PIPELINE. Introdução ao Pipeline. PIPELINE Ciclo de Instruções. PIPELINE Ciclo de Instruções. PIPELINE - Exemplo. PIPELINE Considerações

PIPELINE. 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 mais

PROGRAMAÇÃO OBJECTIVOS DA CADEIRA

PROGRAMAÇÃ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 mais

Complexidade de Tempo e Espaço

Complexidade 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 mais

Cérebro humano versus Computador digital

Cé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 mais

4) Defina o que vem a ser um algoritmo, e porque, o mesmo depende do processo.

4) 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 mais

Multiprocessamento. 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 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 mais

Computação Paralela (CUDA)

Computaçã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 mais

SSC510 Arquitetura de Computadores. 6ª aula

SSC510 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 mais

Quantidade de memória necessária

Quantidade 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 mais

Programaçã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 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 mais

Algoritmos 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 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 mais

Lista 1 - PMR2300. Fabio G. Cozman 3 de abril de 2013

Lista 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 mais

Modelagem e implementação de programas concorrentes

Modelagem 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 mais

Algoritmo. Exemplo. Definição. Programação de Computadores Comparando Algoritmos. Alan de Freitas

Algoritmo. 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 mais

Sistemas Distribuídos

Sistemas 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 mais

Programaçã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. 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 mais

Estatística e Modelos Probabilísticos - COE241

Estatí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 mais

Introdução ao CUDA. Material elaborado por Davi Conte.

Introduçã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 mais

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

Sistema 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 mais

Estrutura 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 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 mais

Arquiteturas Paralelas

Arquiteturas 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 mais

Análise de algoritmos

Aná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 mais

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

Paralelismo 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 mais

Programação: Vetores

Programaçã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 mais

Arranjo de Processadores

Arranjo 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 mais

AULA 03: PROCESSAMENTO PARALELO: MULTIPROCESSADORES

AULA 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 mais

TÉCNICO DE INFORMÁTICA - SISTEMAS

TÉ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 mais

William Stallings Arquitetura e Organização de Computadores 8 a Edição

William 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 mais

SEMÂNTICA 02/09/2013. Conceitos de LPs - Semântica

SEMÂ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 mais

Introdução à Computação

Introduçã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 mais

PCC104 Projeto e Análise de Algoritmos

PCC104 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 mais

Paralelismo em Computadores com Tecnologia Multicore

Paralelismo 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 mais

Introduçã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 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 mais

ORGANIZAÇÃ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 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 mais

Marcelo Keese Albertini Faculdade de Computação Universidade Federal de Uberlândia

Marcelo 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 mais

Caracterização de Sistemas Distribuídos

Caracterizaçã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 mais

Algoritmos Computacionais

Algoritmos 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 mais

Medida 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 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 mais

Teoria da Computação Aula 8 Noções de Complexidade

Teoria 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 mais

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

Té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 mais

Aula 3: Algoritmos: Formalização e Construção

Aula 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 mais

1 a Lista Professor: Claudio Fabiano Motta Toledo Estagiário PAE: Jesimar da Silva Arantes

1 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 mais

Arquitetura de Computadores II

Arquitetura 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 mais

Ementário das disciplinas do curso de Engenharia de Software

Ementá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