• Nenhum resultado encontrado

5. O DESEMPENHO DO ALGORITMO DE "RAY TRACING" EM

5.4. Particionamento de Quadros

O particionamento de quadros é caracterizado pelo processamento de imagens

completas em cada nó do sistema. Dessa forma, este tipo de particionamento se distingue

dos demais por ser aplicável apenas às situações onde se deseja gerar um conjunto de

imagens e não apenas uma. Este é o caso das animações, uma aplicação bastante comum,

onde cada imagem é denominada quadro. Tradicionalmente, para cada segundo de

animação, é necessária a geração de 30 quadros

10

.

Na geração de animações é comum a movimentação dos objetos do cenário,

incluindo fontes de luz e observador, de quadro para quadro. Ao iniciar-se o processamento

de nova cena (cinematográfica) pode ocorrer total mudança de cenário, requerendo um

banco de dados totalmente diferente. Dessa forma, os nós do sistema estarão sempre

operando com dados distintos (apesar de, às vezes, bastante semelhantes). Esta

característica torna necessária a disponibilidade de memória local, em cada nó, suficiente

para o armazenamento completo do banco de dados do cenário de trabalho.

Apesar de os dados contidos na memória local de cada nó serem distintos, esta

implementação será considerada como apresentando replicação total dos dados pois, para

fins práticos, apresenta inconvenientes típicos de outras implementações com esta mesma

característica.

A implementação desta técnica se faz geralmente num esquema "fazenda de

processadores", com um nó gerenciando a execução das tarefas.

Deve-se notar que o particionamento de quadros não é um caso particular do

particionamento de imagens com o tamanho do pacote de pontéis (partição) igual ao

tamanho da imagem. Diferentemente do primeiro caso, neste último apenas uma imagem

estaria sendo processada em dado instante (com todos os nós, exceto um, ociosos !)

implicando no pior balanceamento de carga possível.

O particionamento de quadros é especialmente interessante para uso em

multicomputadores distribuídos, interligados por rede, pelas seguintes razões:

• processadores de estações de trabalho tipicamente passam 90 a 95% do tempo

em estado ocioso (edição de texto, leitura de correspondência, etc.) (GREEN,

1991);

10 Se a animação for tranferida para película cinematográfica, 24 quadros/s são suficientes. Dependendo da finalidade da animação pode-se repetir duas vezes cada quadro reduzindo estes valores à metade.

• estações de trabalho modernas dispõem de boa capacidade de memória (> 16

Mbytes) permitindo a replicação de dados ou uso de memória virtual;

• suportam mecanismo de comunicação que permite fácil transferência de dados e

resultados de imagem;

A tab. 5.1 apresenta uma comparação das características dos particionamentos de

quadros e imagem, com especial atenção para o caso de usar-se um ambiente de

processamento distribuído (rede de computadores) (BLOOMER, 1992).

PARTICIONAMENTO

DE QUADROS

PARTICIONAMENTO

DE IMAGEM

V

ISUALIZAÇÃO

INTERATIVA

não acelera acelera

A

NIMAÇÃO

acelera acelera

S

OBRECARGA PARA

CONTROLE DA REDE

baixa maior

S

OBRECARGA COM BANCO DE DADOS

baixa, bancos de dados

diferentes

maior, mesmo banco de

dados

T

OLERÂNCIA A FALHAS

granularidade espessa granularidade fina

R

ECUPERAÇÃO DE

FALHAS

granularidade espessa granularidade fina

TAB. 5.1 - Comparação entre partic. de quadros e de imagem para redes de comp.

Conforme destacado na tabela 5.1 o particionamento de quadros, por não acelerar

(via paralelismo) a geração individual dos quadros, não se presta como alternativa para

visualização interativa. Independentemente do número de processadores disponíveis, a

geração de um quadro será executada sempre no mesmo tempo.

As características de tolerância e recuperação de falhas, bastante importantes na

geração de longas animações (Stöβer et alli, 1988), são negativas no particionamento de

quadros pois implica geralmente em desperdício de toda ou parte de uma imagem enquanto

o particionamento de imagem reduz esta perda a apenas um pacote de pontéis, isto é, uma

pequena fração da imagem.

Finalmente, é importante ressaltar que os resultados do particionamento de quadros

devem ser avaliados considerando-se seu ambiente típico de processamento, estações de

trabalho em rede, e nunca um multicomputador, mais adequado às outras modalidades de

particionamento já apresentadas. Sob este enfoque, esta metodologia pode se constituir em

eficiente ferramenta para aproveitamento do grande poder de processamento disponível em

redes de estações de trabalho cujas taxas de utilização são bastante baixas.

As qualidades do particionamento de quadros são mostradas na figura 5.19, abaixo:

DESEMPENHO DO PARTICIONAMENTO DE QUADROS

Características

D

ese

m

p

enho

PROC. BALANC. COMUNIC. MEMÓRIA EFICIÊNCIA RESTR.ALG.

FIG. 5.19 - Desempenho do particionamento de quadros

A) Sobrecargas de Processamento

Na prática, as implementações de "ray tracing" paralelo por particionamento de

quadros equivalem a computadores executando tarefas totalmente independentes (sem

cooperação entre sí) porém sob uma coordenação central. A única forma de sobrecarga está

relacionada com esta coordenação, e pode ser considerada bastante pequena apesar de

algumas implementações alocarem um nó somente para esta atividade.

Em ambientes de processamento distribuído, normalmente o processamento de uma

animação por "ray tracing" se fará como tarefa de fundo (background) para aproveitamento

do período ocioso dos processadores da rede.

B) Balanceamento

É mais difícil obter-se bom balanceamento no particionamento de quadros pois a

granularidade das tarefas é muito elevada.

Neste tipo de implementação, geralmente é feita alocação dinâmica e o

particionamento é uniforme (um quadro). Pode-se prever um balanceamento com

características parecidas ao de particionamento de imagens com granularidade muito

grande, portanto, ruim.

Próximo ao fim do processamento de todas as imagens, quando o estoque de

imagens a gerar tiver se esgotado, grande parte dos processadores tende a ficar ociosa

enquanto apenas um ou alguns nós completam suas tarefas. Sendo a granularidade elevada,

a execução de uma tarefa (geração de uma imagem completa) pode levar até horas

significando horas de ciclo ocioso em quase todos os processadores do multicomputador.

C) Comunicação

A comunicação em implementações deste tipo de particionamento tende a ser

pequena se todos os nós têm acesso direto ao sistema de arquivos para armazenamento das

imagens geradas e para a carga das estruturas de dados dos cenários de trabalho.

As mensagens são em pequeno número e muito curtas (controle) ou muito longas

(envio de imagens prontas ao nó com acesso ao sistema de arquivos se este não é local).

Não é requerido nenhum grau de conectividade explícito. A comunicação se faz

exclusivamente com o nó controlador.

D) Uso de Memória

Conforme mencionado, este tipo de implementação implica em disponibilidade de

memória, em todos os nós, suficiente para o armazenamento completo das estruturas de

dados correspondentes a um cenário, sendo equivalente a replicação total dos dados.

E) Ganho de Velocidade e Eficiência

Green (GREEN , 1991) relata o processamento de uma animação com duração de 2

segundos (3600 quadros) em uma rede com 30 estações de trabalho. O processamento

durou 24 dias e 10 horas com tempo efetivo de processamento de 24 horas, resultando em

eficiência aproximada de 80%. Este é o único resultado númerico que dispomos e,

portanto, não deve ser tomado como estimativa geral.

F) Restrições Algorítmicas

Como o algoritmo executado em cada nó é praticamente idêntico ao da versão

seqüencial, não existe qualquer tipo de restrição algorítmica imposta pelo particionamento

de quadros, com uma exceção. Técnicas para aceleração de animações, baseadas na

coerência temporal das imagens são prejudicadas pois não se têm, localmente, informações

sobre outros quadros adjacentes da animação.

A alternativa de alocar-se pacotes de tarefas com várias imagens consecutivas a

cada nó pode atenuar este problema, porém com graves efeitos sobre o balanceamento de

carga no sistema, pois a granularidade das tarefas, já bastante alta, seria aumentada ainda

mais.