Escolar Documentos
Profissional Documentos
Cultura Documentos
1) Suponha que um vetor de 10.000 posições será alocado a 20 elementos de processamento de forma
cíclica, ou seja, o dado armazenado na primeira posição será alocado ao primeiro elemento de
processamento, o da segunda posição será alocado ao segundo e assim por diante.
b) Que elemento de processamento é responsável pela posição j, onde 0 <= j < 10.000? Considere que os
elementos de processamento são numerados a partir de 0.
Solução:
Nesse caso, cada posição j do vetor ficará em um elemento de processamento de mesmo índice.
Agora considere que temos um vetor de 40 posições e 20 elementos de processamento e a alocação ocorre de
forma cíclica.
Resposta:
a) A quantidade de posições do vetor que serão processadas por cada elemento de processamento é dada
por: quantidade de posições do vetor / pelo número de elementos de processamento. Para este exercício
10.000/20=500
b) O elemento de processamento responsável pela posição j do vetor em uma alocação cíclica é dado por:
j%número de elementos de processamento (resto da divisão inteira)
2) Para o problema da questão anterior, se a alocação de trabalho aos elementos de processamento for em
blocos (subvetores), ou seja, o primeiro bloco alocado ao primeiro elemento de processamento, o segundo
bloco ao segundo elemento de processamento e assim por diante, como ficariam as respostas
das letras a) e b)?
Solução:
Na letra a), dividimos o número total de posições pelo número de elementos de processamento. Para este
exercício 10.000/20=500. Mas se essa divisão não for exata temos que atribuir as posições aos elementos de
processamento. Por exemplo, 10050/20 = 502 e sobram 10 posições. Essas 10 posições podem ser atribuídas aos
10 primeiros elementos de processamento, visando balancear a carga de trabalho dos elementos de
processamento. Como a alocação é em blocos, os elementos de processamentos de índices 0 a 9, por exemplo,
poderiam ficar responsáveis por blocos contíguos de 503 posições do vetor e de 10 a 19 por 502 posições.
Se (quantidade de posições do vetor % pelo número de elementos de processamento ==0){
tamanho do bloco = quantidade de posições do vetor / pelo número de elementos de processamento
} else {
tamanho do bloco = quantidade de posições do vetor / pelo número de elementos de processamento
restante = quantidade de posições do vetor % pelo número de elementos de processamento
para cada elemento de processamento 0 <= p < restante {
tamanho do bloco = tamanho do bloco +1;
}
}
Resposta da letra a):
Para a quantidade de posições do vetor igual a 10000, a divisão é exata, não há resto, então o tamanho do bloco
é de 500 elementos.
Exemplo:
Para um total de 10000 posições no vetor:
tamanho do bloco = quantidade de posições do vetor / pelo número de elementos de processamento
tamanho do bloco = 500
Intervalo de cada elemento de processamento é dado:
identificador do elemento de processamento*tamanho do bloco <= j < identificador do elemento de
processamento*tamanho do bloco +tamanho do bloco.
Elemento de processamento 0: 0*500 <= j < 0*500 + 500 => 0 <= j < 500
Elemento de processamento 1: 1*500 <= j < 1*500 + 500 => 500 <= j < 1000
Assim, cada elemento de processamento poderá fazer o cálculo do seu intervalo de posições no vetor baseado na
expressão E1.
Resposta da letra b)
Elemento de processamento = j / tamanho do bloco
3) O grafo de tarefas mostrado na Figura 1.10 representa uma aplicação de processamento de imagens.
Cada círculo representa um tarefa sequencial. Há 12 tarefas: uma tarefa de entrada, 10 tarefas de
computação e uma tarefa de saída. Cada uma das 12 tarefas podem ser realizada em uma unidade de
tempo do processador. A tarefa de entrada deve ser completada antes de qualquer tarefa computacional
começar. Todas as 10 tarefas computacionais devem completar antes da tarefa de saída começar. A tarefa
de entrada consome a largura de banda inteira do dispositivo de entrada. A tarefa de saída consome a
largura de banda inteira do dispositivo de saída. Qual é o grau máximo de concorrência e o tamanho do
caminho crítico?
Solução:
O grau máximo de concorrência é o número máximo de tarefas independentes (sem arestas entre elas) que
podem ser executadas ao mesmo tempo. Para este grafo, o grau máximo de dependência é 10.
O tamanho do caminho crítico é o tamanho do maior caminho entre um nó raiz e um nó folha. Para este grafo, o
tamanho do caminho crítico é 3.
4) Considere os grafos de tarefas da Figura 1.11 e assuma que cada tarefa gasta uma unidade de tempo
para ser executada e o tempo de comunicação entre os elementos de processamento é zero. Determine: i) o
grau máximo de concorrência; ii) o tamanho do caminho crítico
Solução:
(a) 8 4
(b) 8 4
(c) 8 7
(d) 2 8
(e) 8 15