3 Representação e Reconstrução de ADFs em GPU

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

Download "3 Representação e Reconstrução de ADFs em GPU"

Transcrição

1 3 Representação e Reconstrução de ADFs em GPU A estrutura clássica de uma ADF [24, 17] consiste de uma octree baseada em ponteiros, que armazena oito voxels por célula. Cada voxel corresponde a um valor de distância amostrado em um dos vértices da célula. Esta abordagem tem dois grandes problemas para uma implementação em GPU: 1. Uma vez que cada vértice da octree é compartilhado por várias células, a estrutura acaba por armazenar muitos voxels redundantes. Como a memória das GPUs é bastante limitada, redundâncias podem impedir que uma ADF caiba em memória de vídeo. 2. Percorrer octrees baseadas em ponteiros na GPU é complexo e ineficiente. Visto que as GPUs não têm suporte a recursão e nem operações de escrita livre em memória, é impraticável utilizar uma pilha para percorrer a octree. Mesmo que fosse viável implementar uma pilha, provavelmente o desempenho viria a sofrer por conta da baixa coerência do algoritmo. Para extrair o máximo do poder de processamento paralelo das GPUs, as próximas seções propõem soluções para reduzir a redundância de voxels e permitir que a octree seja percorrida sem uma pilha. 3.1 A Textura de Voxels A replicação de voxels pode fazer com que ADFs minimamente complexas excedam a capacidade de memória das GPUs modernas (em torno de 768 MB). Para controlar a redundância, é preciso desacoplar o armazenamento de voxels da estrutura da octree. Há várias soluções possíveis para este problema, com variados níveis de complexidade e eficiência. Uma solução muito simples que elimina toda redundância foi sugerida por Bærentzen [2]: utilizar uma tabela de dispersão 3-D para armazenar os voxels indexados pela posição do vértice. Porém, nessa solução cada célula acessada exigiria oito consultas à tabela de dispersão, o que afligiria o desempenho da estrutura e provavelmente tornaria seu uso inviável em aplicações interativas. Como o acesso aos voxels tem papel /crucial/ no desempenho, ele deve ser tão simples e coerente quanto possível.

2 Campos de Distância Amostrados Adaptativamente com Aceleração por Placa Gráfica 30 Este trabalho propõe uma abordagem alternativa: armazenar os voxels em uma textura separada da octree, e fazer com que as células guardem ponteiros para os seus voxels. Apesar de soar como uma solução óbvia, na realidade é muito difícil empacotar todos os voxels em uma textura compacta sem replicá-los. Naturalmente, não faz sentido armazenar oito ponteiros em cada célula, já que os ponteiros tomariam quase tanta memória quanto oito amostras de distância. Para que esta abordagem faça sentido, os voxels pertencentes a uma célula precisam ser organizados em blocos contíguos, de maneira que cada célula possa guardar apenas um ponteiro (para o bloco) ao invés de oito. Em última análise, busca-se nesta abordagem: 1. Empacotar todos os voxels em uma textura 3-D compacta, com um único componente do tipo float. 2. Garantir que os voxels pertencentes à mesma célula estejam adjacentes em um bloco de texels. 3. Minimizar a replicação de voxels sempre que possível, empacotando juntos os voxels vizinhos de mesmo nível. A construção de uma textura de voxels pelos critérios acima não é uma tarefa trivial. Apesar de existirem algoritmos baseados em heurísticas capazes de produzir resultados com pouca redundância, encontrar a solução ótima é notoriamente um problema combinatorial NP-difícil, uma vez que o problema se trata de uma variante complexa do problema da mochila (0, 4) (1, 4) (3, 4) (4, 4) (0, 3) (1, 3) (3, 3) (4, 3) (0, 0) (1, 0) Textura de Voxels Voxel único. Voxel replicado. Figura 3.1: Uma quadtree (esquerda) e a sua textura de voxels (direita). Por simplicidade, a solução adotada nesta dissertação elimina apenas a redundância entre células irmãs. Isto é feito facilmente, armazenando os voxels de cada grupo de oito células irmãs em um bloco de 3x3x3 texels.

3 Campos de Distância Amostrados Adaptativamente com Aceleração por Placa Gráfica 31 Uma vez que as octrees das ADFs são árvores cheias, todas as células, exceto a raiz, pertencem a um grupo de oito irmãs. As redundâncias permanecem entre outros tipos de células adjacentes (e.g. células primas) e entre células descendentes, mas esta solução simples reduz consideravelmente (em 57%) o tamanho da textura de voxels, e é suficiente para permitir que ADFs razoavelmente complexas caibam em memória de vídeo. Além disso, já que os voxels das células são organizados em blocos de 2x2x2 texels, é possível explorar a unidade de filtragem de textura das GPUs para obter praticamente de graça valores de distância interpolados trilinearmente. A Figura 3.1 ilustra esta solução em 2-D, com uma quadtree e a sua textura de voxels correspondente. Os voxels são numerados de um a dezoito, e voxels replicados são sombreados em cinza. A posição do bloco de voxels correspondente de cada célula é indicada entre parênteses, no centro das células. 3.2 Visão Geral da Representação das ADFs O espaço de uma ADF é um cubo unitário com o primeiro vértice na origem, como ilustrado na Figura 3.2. A reconstrução do campo de distância e o endereçamento de células é sempre feito neste espaço. A mesma convenção é usada para o espaço local das células da octree. y 1 x Bloco de Voxels Espaço da ADF z Célula Interna Espaços das Células Filhas Voxels para as Oito Células Filhas Figura 3.2: Visão geral da representação de ADF utilizada neste trabalho. As ADFs propostas neste trabalho são representadas em memória de vídeo através de três texturas tridimensionais: Textura de Voxels: armazena os voxels de cada grupo de oito células irmãs em blocos de 3x3x3 texels, como detalhado na Seção 3.1. A textura garante que os oito voxels de cada célula estão sempre juntos, em blocos de 2x2x2 texels.

4 Campos de Distância Amostrados Adaptativamente com Aceleração por Placa Gráfica 32 Textura de Células: armazena cada célula da ADF em um texel. Cada texel guarda duas informações: o identificador da célula, e o endereço para o bloco de voxels da célula, na textura de voxels. Textura de Dispersão: descreve a hierarquia das células. As Seções 3.3 e 3.4 fornecem mais detalhes sobre esta textura. Como as octrees de ADFs são árvores cheias, as células-folha podem ser mantidas implícitas, o que reduz drasticamente (em até 87%) o tamanho da textura de células. Neste esquema, a textura de células armazena somente as células não-folha. Cada célula, ao invés de guardar um ponteiro para seu próprio bloco de voxels, passa a guardar um ponteiro para um bloco de 3x3x3 texels, que contém os voxels dos seus oito filhos (Figura 3.2). 3.3 Octrees Baseadas em Dispersão Espacial Tipicamente, as octrees de ADFs são implementadas com ponteiros. Porém, na arquitetura atual das GPUs, percorrer octrees com ponteiros é complexo e ineficiente. Para superar estas limitações, propõe-se o uso de uma octree que permita acesso aleatório às células. Dado um nível l da octree e um ponto p pertencente ao domínio, a célula de nível l que contém o ponto p deve ser obtida em tempo constante. Esta representação permite que a octree seja percorrida sem uma pilha, e com maior coerência. A solução baseia-se na idéia de uma octree definida implicitamente em uma textura 3-D. Semelhante à maneira como uma árvore binária completa pode ser representada implicitamente em um vetor 1-D, uma octree completa pode ser representada implicitamente em um vetor 3-D. É possível, então, formular uma função que calcula em tempo O (1) a posição de qualquer célula dentro do vetor 3-D. Evidentemente, o custo para se representar ADFs com octrees completas é impraticável, já que as ADFs são inerentemente esparsas e o espaço tomado pelas octrees completas é exponencial na altura da árvore. Como solução, um mecanismo de dispersão espacial 3-D é usado para compactar o vetor 3-D esparso onde a octree implícita é definida. Dados uma octree completa no cubo C = [0, 1) 3, um nível l e um ponto p C, a função S(l, p) = 2 l + 2 l p (3-1) retorna o índice 3-D da célula de nível l que contém o ponto p, e assim define implicitamente a octree no espaço U N 3 U = [ 1, 2 (sup l+1) 1 ] 3 (3-2)

5 Campos de Distância Amostrados Adaptativamente com Aceleração por Placa Gráfica 33 onde sup l é o nível máximo da octree. Uma octree baseada em dispersão espacial é criada combinando-se a função S(l, p) com uma função de dispersão tridimensional H(k U). O acesso a uma célula é sempre feito em dois passos: 1. A função S(l, p) é usada para gerar uma chave k = S(l, p) para a célula que deseja-se acessar. 2. A função H(k) recebe como entrada a chave e calcula o endereço real da célula em um vetor compacto, usando como base um algoritmo de dispersão espacial. Esta função também pode indicar um erro, caso a chave não corresponda a nenhuma célula da octree. Já que a função S(l, p) é claramente O(1), o acesso às células poderá ser feito em tempo constante se H(k) também for O(1). A Seção 3.4 mostra como é possível garantir que a função de dispersão espacial seja de fato O(1). A Figura 3.3 ilustra os passos necessários para que os voxels nos vértices de uma célula sejam acessados. Inicialmente, a função S(l, p) gera uma chave k U, que identifica a célula de nível l que contém o ponto p. Esta chave é passada à função de dispersão 3-D H(k), que utiliza uma textura de dispersão auxiliar para calcular a posição real da célula em uma textura de células compacta. A partir do texel da célula obtém-se a posição v do bloco de voxels da célula na textura de voxels. Finalmente, o acesso aos voxels é representado na figura pela função A(v). S(l, p) Textura de Dispersão q Textura de Voxels k H(k) Domínio U v Textura de Células A(v) A(H(S(l, p))) Figura 3.3: Ilustração em 2-D do acesso aos voxels nos vértices de uma célula de uma octree baseada em dispersão espacial. Qualquer algoritmo que precise percorrer a octree deve trabalhar com o conceito de uma posição p e um nível l correntes. Através da função S(l, p), esses valores indicam qual é a célula corrente. Desse modo, cada passo de um algoritmo de percorrimento pode:

6 Campos de Distância Amostrados Adaptativamente com Aceleração por Placa Gráfica 34 a) Pular para uma célula adjacente, somando-se ±2 l a um ou mais componentes do vetor 3-D p. b) Subir ou descer na hierarquia através do decremento ou incremento de l, respectivamente. Por exemplo, a chamada S ( l, p + ( 2 l, 0, 0) ) fornece a chave para a célula à esquerda da célula corrente. 3.4 Dispersão Espacial Perfeita A escolha do algoritmo de dispersão 3-D é determinante na eficiência de uma octree baseada em dispersão espacial. Infelizmente, os algoritmos de dispersão tradicionais são inapropriadas para arquiteturas SIMD (Single- Instruction, Multiple-Data) como as GPUs. No artigo [20], Lefebvre e Hoppe apontam que os algoritmos de dispersão costumam resolver colisões realizando uma seqüência de acessos (probes) na tabela de dispersão. O número desses acessos pode variar para cada consulta, em função do número de colisões ocorridas para cada chave. Este tipo de tratamento para as colisões é ineficiente nas GPUs, porque o paralelismo SIMD faz com que todos os dados de um mesmo bloco esperem sempre pelo maior número de acessos. Por exemplo, em um bloco de 16 chaves que devem ser consultadas, se 15 das 16 consultas fizerem menos de 3 acessos e apenas uma consulta fizer 10 acessos, todas as 16 consultas levarão o tempo de 10 acessos. Nas GPUs, o paralelismo SIMD ocorre no processamento de fragmentos, após a rasterização. Geralmente a tela é dividida em blocos com tamanhos que variam entre 4x4 até 16x16 fragmentos, e cada bloco é processado de forma independente por um grupo de processadores. Até a introdução das GeForce 8, no final de 2006, todas as GPUs eram equipadas com processadores vetoriais especializados no processamento de fragmentos. Desde então, as novas GPUs abandonaram os processadores vetoriais e adotaram uma arquitetura escalar baseada em processadores de fluxo (stream processors) [18]. A nova arquitetura traz um aumento de desempenho de até dez vezes, ao permitir maior paralelismo. No entanto, o modelo de processamento para fragmentos continua sendo SIMD. Para tirar bom proveito do paralelismo SIMD, todas as consultas devem realizar o mesmo número de acessos à tabela de dispersão. Isto pode ser conseguido se uma função de dispersão for pré-calculada de forma a garantir

7 Campos de Distância Amostrados Adaptativamente com Aceleração por Placa Gráfica 35 que não existam colisões entre as chaves de uma octree. Neste caso, todas as consultas seriam feitas com um único acesso, através de uma função de dispersão perfeita. As funções de dispersão perfeitas são funções injetoras para um certo domínio (e.g. conjunto de chaves). Quando a cardinalidade do contradomínio (a tabela de dispersão) é igual à cardinalidade do domínio, a função de dispersão perfeita é mínima. Infelizmente, as funções de dispersão perfeitas mínimas são extremamente raras. Por isso, na prática utilizam-se funções não-mínimas com um contradomínio de tamanho aceitável, que desperdice pouca memória. Este trabalho utiliza dispersão 3-D perfeita para representar octrees através da técnica exposta na Seção 3.3. Neste esquema, a função H(k) é gerada para um conjunto estático de células, de forma que cada chave k seja mapeada para um texel diferente da textura de células. As subseções seguintes oferecem uma visão geral de como as funções de dispersão 3-D perfeitas são geradas, e como elas são utilizadas em GPU Função de Dispersão Espacial Perfeita O esquema de dispersão espacial perfeita utilizado neste trabalho é baseado no método proposto por Lefebvre e Hoppe [20]. Este método, projetado especialmente para GPUs, permite armazenar um conjunto de dados esparsos em uma textura compacta através de uma função de dispersão 2-D ou 3-D. A função funciona com um número fixo de operações aritméticas e um único acesso a textura, o que a torna extremamente eficiente. No artigo [20], Lefebvre e Hoppe relatam que o método é capaz de compactar elementos espalhados por uma textura de em uma textura densa de As funções de dispersão espacial são definidas em um domínio U uma grade d-dimensional com u = ū d elementos, denotada por Z d ū = [0, ū 1] d. Toda função de dispersão perfeita h(p) é restrita a um subconjunto S U de n elementos, onde cada posição p S possui um valor associado D(p). O objetivo da função de dispersão é mapear o conjunto de valores esparsos D(p) em uma textura compacta H[h(p)], onde: A textura H é um vetor d-dimensional, de tamanho m = m d n, que contém todos os valores {D(p) : p S}. A função h(p) : U H é injetora quando restrita a S. Ou seja, cada ponto p S é mapeado para uma posição única em H.

8 Campos de Distância Amostrados Adaptativamente com Aceleração por Placa Gráfica 36 A função de dispersão espacial perfeita proposta por Lefebvre e Hoppe [20] é dada por onde: h(p) = (h 0 (p) + Φ [h 1 (p)]) mod m (3-3) A textura Φ, denominada textura de solução, é um vetor d-dimensional, de tamanho r = r d, que contém vetores d-dimensionais. A função h 0 (p) mapeia o ponto p do domínio U para a textura H, utilizando apenas endereçamento modular (p mod m). A função h 1 (p) mapeia o ponto p do domínio U para a textura Φ, também utilizando endereçamento modular (p mod r). Para que este método de dispersão espacial funcione, é preciso encontrar uma textura Φ de tamanho r = r d que resolva todas as colisões de h(p), p S. Como ilustrado na Figura 3.4 (à direita), cada elemento de Φ guarda uma translação que é aplicada aos pontos {h 1 1 (q) S}. Para uma textura Φ suficientemente grande, essa translação pode resolver todas as colisões da função de dispersão. A idéia é que o tamanho m da textura H seja sempre o menor possível para acomodar os n elementos de S, mas que a textura Φ possa crescer até um tamanho que permita uma solução para todas as colisões. Como um texel de Φ tem normalmente um custo de memória menor que um texel de H, é geralmente preferível que r cresça, e não m. Não obstante, quase sempre a textura Φ permanece menor que H. p p S U S = n Domínio U (tamanho u = u d ) h h 1 (p) 1 q Textura de Solução Ф (tamanho r = r d ) h 1 Ф[q] h h 0 (p) 0 + D(p) = H[h(p)] s = h(p) Textura H (tamanho m = m d ) 1 h 1 (q) S U Domínio U h 0 Ф[q] q Textura H Textura Ф Figura 3.4: Método de dispersão perfeita proposto por Lefebvre e Hoppe [20]. A implementação da função de dispersão h(p) em GPU requer um número fixo de instruções e um único acesso a textura. Todas as operações de módulo podem vir de graça se as texturas forem configuradas para o modo de endereçamento wrap. Observe que, neste esquema, a textura de células referida na Seção 3.3 seria H, enquanto que a textura de dispersão seria Φ. Apesar de funcionar relativamente bem para a compactação de texturas onde os domínios são geralmente menores que este método não

9 Campos de Distância Amostrados Adaptativamente com Aceleração por Placa Gráfica 37 escala bem para domínios maiores, que possam conter qualquer inteiro. Em particular, esta limitação compromete o uso do método para a representação de octrees (Seção 3.3), já que o domínio de uma octree baseada em dispersão espacial cresce muito rápido e.g para uma octree de altura 10 e para uma octree de altura 12. A razão da baixa escalabilidade da função de dispersão proposta por Lefebvre e Hoppe é que, sempre que dois pontos p 1, p 2 S forem divisíveis simultaneamente por m e r, não existirá instância de Φ com tamanho r que torne a função injetora. Nesses casos, a estratégia proposta seria aumentar r, mas para domínios grandes e com muitos elementos, é comum que não exista valor de r aceitável que satisfaça este critério. Lefebvre e Hoppe mencionam no trabalho [20] que domínios grandes, onde ū > m r, podem gerar problemas; mas argumentam que, na prática, r é sempre grande o suficiente para que ū m r. No entanto, este problema foi observado na prática ao se tentar gerar funções de dispersão perfeitas para octrees esparsas de altura superior a 8. Para a grande maioria das octrees, o algoritmo despendia horas procurando uma instância válida de Φ, sem sucesso. Esta dissertação propõe duas alterações simples na função h(p), para permitir que ela funcione mesmo quando duas chaves p 1, p 2 S forem simultaneamente divisíveis por m e r. A saber: A textura de solução Φ passa a armazenar um valor w (escalar) a mais por texel. No caso 3-D, a textura passaria a ter quatro canais. A função h 0 (p), responsável por mapear p U em H utilizando (p mod m), é substituída pela operação (p mod w). Com as alterações, a função fica da seguinte forma: h(p) = ((p mod w) + (x, y, z)) mod m, onde (x, y, z, w) = Φ [h 1 (p)] Esta nova função concede um grau de liberdade adicional para o mecanismo de dispersão. A chance de encontrar uma função injetora aumenta consideravelmente, enquanto que o custo da função mantém-se praticamente o mesmo. Quando dois pontos p 1, p 2 S forem simultaneamente divisíveis por m e r, o valor w pode ser escolhido de forma que p 1 e p 2 não colidam. Com este novo método, o tempo médio de geração para as funções de dispersão perfeitas das octrees baixou, de horas, para menos de um minuto.

10 Campos de Distância Amostrados Adaptativamente com Aceleração por Placa Gráfica Geração da Função de Dispersão Espacial Perfeita A geração de uma função de dispersão espacial perfeita pelo método descrito na Seção envolve encontrar tamanhos m e r, e valores adequados para a textura Φ, de maneira a tornar a função h(p) injetora quando restrita a S. Naturalmente, deseja-se que m e r sejam tão pequenos quanto possível. A estratégia sugerida por Lefebvre e Hoppe [20] é que H seja sempre a menor textura regular capaz de comportar os n elementos de S; ou seja, o menor tamanho m tal que m = m d n. Já o tamanho da textura Φ é estabelecido como o menor valor r para o qual o algoritmo de geração (da função de dispersão perfeita) consegue encontrar uma função injetora. O problema de encontrar valores para a textura Φ é equivalente ao problema de compressão de matrizes esparsas, que é NP-completo. Por isso, o algoritmo proposto por Lefebvre e Hoppe [20] baseia-se em uma heurística gulosa e probabilística. A geração de uma textura Φ de tamanho r pode requerer várias tentativas, especialmente quando r é próximo do tamanho ótimo. Uma abordagem possível para a geração da textura Φ consiste em começar com um valor de r pequeno, fazer múltiplas tentativas para cada r, e caso uma textura de solução válida não seja encontrada, selecionar um valor de r maior e repetir o processo. O algoritmo guloso sugerido por Lefebvre e Hoppe [20] para preencher a textura Φ ainda sem considerar o componente adicional w, proposto nesta dissertação segue aos seguintes passos: 1. Uma grade d-dimensional Φ, com o mesmo tamanho da textura Φ, é criada. Cada célula guarda uma lista de pontos e uma translação. 2. Todos os pontos p S são mapeados para Φ através da função h 1 (p). 3. As células da grade Φ são ordenadas de acordo com o número de pontos mapeados para cada uma delas; ou seja, h 1 1 (q). 4. Uma grade d-dimensional H, com o mesmo tamanho da textura H, é criada. Cada célula guarda um booleano que indica se ela já foi ocupada. Todas as células são inicialmente marcadas vazias. 5. Para cada célula de Φ, em ordem decrescente de pontos mapeados, busca-se uma translação t que, quando aplicada ao pontos {h 1 1 (q)} através da função h(p), mapeie-os para células vazias de H. A busca começa por um t aleatório e depois prossegue linearmente.

11 Campos de Distância Amostrados Adaptativamente com Aceleração por Placa Gráfica 39 Caso uma translação válida seja encontrada, ela é salva na célula. As células de H ocupadas pelos pontos são marcadas ocupadas. Caso nenhuma translação seja válida, o algoritmo falha. 6. A textura Φ é preenchida com as translações salvas em Φ. A idéia deste algoritmo guloso é tentar resolver os casos mais difíceis primeiro; ou seja, achar valores para as células de Φ que têm mais pontos. No último estágio, quando h 1 1 (q) = 1, a solução é trivial e o algoritmo não pode mais falhar. Esta heurística aumenta consideravelmente as chances de sucesso, apesar de o algoritmo ainda depender da sorte para que as translações escolhidas nos primeiros passos se encaixem. Observe que, em geral, ao aumentar r, o número de pontos mapeados em cada célula de Φ diminui, e a chance de sucesso do algoritmo aumenta. Quando o componente w é adicionado à textura Φ, um novo passo precisa ser acrescentado ao algoritmo que gera Φ. Para que as translações de Φ sejam calculadas, as células já devem ter um valor de w associado. Por isso, o novo passo deve ser introduzido imediatamente após o passo 3. Para cada célula, o valor de w deve ser determinado pelo seguinte algoritmo: Algoritmo 3.1 Cálculo do componente w da textura Φ. 1: function compute w(c Φ ) calcula w para uma célula C Φ 2: if not contain collisions(c Φ, m) then testa um w neutro 3: return m a célula não contém colisões 4: end if 5: w 1 procura por um valor de w que resolva as colisões 6: repeat 7: w next coprime(w, m, r) 8: if w > m then 9: error( nenhum valor de w pode resolver as colisões ) 10: end if 11: until not contains collisions(c Φ, w) 12: return w 13: end function A função contains collisions(c Φ, w) testa se, utilizando um certo valor de w na função de dispersão, uma certa célula de Φ contém colisões. Já a função next coprime(c, a, b) retorna o primeiro número maior que c que não seja divisível nem por a nem por b. Os valores de w que podem resolver as colisões dentro de uma célula são sempre co-primos de m e r; por isso, a função só testa valores que satisfaçam este critério.

12 Campos de Distância Amostrados Adaptativamente com Aceleração por Placa Gráfica Reconhecimento de Células Inexistentes A função de dispersão espacial h(p), definida na Seção 3.4.1, é injetora somente quando restrita ao conjunto de pontos para o qual ela foi gerada. Caso a função seja usada com qualquer outro ponto v / S, o mapeamento é feito para a posição de um ponto p S aleatório. Este esquema é suficiente quando se tem garantia de que as chaves consultadas serão sempre válidas. Porém, na implementação de uma octree baseada em dispersão espacial, deve ser possível consultar se uma determinada célula da octree existe ou não. Infelizmente, a função h(p) não dispõe de informação suficiente para gerar esta resposta. Este problema pode ser solucionado de forma simples se os elementos do domínio forem armazenados no contradomínio da função. Ou seja, se os pontos p S forem armazenados nos texels correspondentes da textura H. Desta forma, é possível verificar se um ponto p consultado pertence ou não a S, testando se o texel H[h(p)] contém p. Na implementação de uma octree baseada em dispersão espacial, a solução análoga seria armazenar as chaves das células, geradas pela função S(l, p), na textura de células. Porém, para poupar memória, ao invés de armazenar as chaves diretamente, a solução adotada armazena identificadores que são gerados a partir das chaves das células. Esta técnica requer 4 bytes por célula da octree, ao invés dos 12 necessários para armazenar uma chave. 3.5 Reconstrução do Campo de Distância O primeiro passo no sentido de reconstruir o campo de distância em um certo ponto p é encontrar a menor célula da ADF que contenha p. Uma vez encontrada esta célula, o valor de distância no ponto pode ser obtido trivialmente através de interpolação trilinear com os voxels da célula. Esta interpolação pode ser feita praticamente de graça, pela GPU, se a opção de filtragem trilinear estiver habilitada para a textura de voxels. Encontrar a menor célula da ADF que contenha p envolve uma busca na octree. Graças à representação baseada em dispersão espacial que permite acesso aleatório às células esta busca pode ser feita de múltiplas formas. Em todos os casos, a função S(l, p) é usada para obter a célula de nível l que contém p. O objetivo é encontrar o maior valor de l para o qual exista uma célula. Três alternativas foram testadas: 1. Busca linear. 2. Busca binária.

13 Campos de Distância Amostrados Adaptativamente com Aceleração por Placa Gráfica Busca linear com coerência. Abaixo encontram-se pseudo-códigos para estes algoritmos. Por questões de simplicidade, os códigos desprezam o fato de que as células-folha da octree são mantidas implicitamente. Busca Linear: começa pelo primeiro nível da octree (l = 1) e vai descendo um nível de cada vez, até encontrar a menor célula que contenha p. 1: function query(p) busca a menor célula que contém p 2: v menor célula encontrada até o momento 3: for l 1, do 4: k S(l, p) chave para a célula de nível l que contém p 5: v H(k) acesso à textura de células 6: if not exists(v, k) then verifica se a célula existe 7: break caso não existam mais células, pára 8: end if 9: v v atualiza a menor célula 10: end for 11: return v retorna a menor célula 12: end function Este é o mais simples dos três algoritmos testados. Alternativamente, este algoritmo poderia começar a busca pelo nível máximo da octree, e retornar a primeira célula encontrada de baixo para cima. Busca Binária: realiza uma busca binária entre o primeiro nível e o nível máximo da octree, em busca do nível da menor célula. 1: function query(p) busca a menor célula que contém p 2: v menor célula encontrada até o momento 3: l min 1 menor nível válido da ADF 4: l max maxlevel maior nível válido da ADF 5: while l min l max do 6: l 1(l 2 min + l max ) 7: k S(l, p) chave para a célula de nível l que contém p 8: v H(k) acesso à textura de células 9: if exists(v, k) then verifica se a célula existe 10: v v célula existe; atualiza a menor célula 11: l min l + 1 busca por células abaixo do nível l 12: else nenhuma célula encontrada neste nível 13: l max l 1 busca por células acima do nível l 14: end if

14 Campos de Distância Amostrados Adaptativamente com Aceleração por Placa Gráfica 42 15: end while 16: return v retorna a menor célula 17: end function A busca binária pode oferecer bom desempenho para árvores muito altas. Porém, como as ADFs dificilmente ultrapassam o nível 12, constatou-se que não há vantagem na busca binária. Testes com ADFs de nível 8 mostraram que, em CPU, a busca binária é tão rápida quanto a busca linear. Em GPU, porém, a busca binária foi mais lenta que a linear. Busca Linear com Coerência: realiza uma busca linear a partir de um nível l qualquer. Se uma célula existir no nível l, a busca continua a descer até encontrar a menor célula. Caso contrário, a busca sobe nível a nível e retorna a primeira célula encontrada de baixo para cima. 1: function query(p, l) 2: k S(l, p) chave para célula de nível l que contém p 3: v H(k) acesso à textura de células 4: if exists(v, k) then verifica se a célula existe 5: while l < maxlevel do a célula existe; tenta descer mais 6: k S(l + 1, p) tenta obter a célula um nível abaixo 7: v H(k) 8: if exists(v, k) then 9: l l + 1 atualiza último nível válido 10: v v atualiza menor célula 11: else 12: break não existem mais células abaixo 13: end if 14: end while 15: else a célula não existe 16: while l > 0 do busca a menor célula de baixo para cima 17: l l 1 tenta obter uma célula um nível acima 18: k S(l, p) 19: v H(k) 20: if exists(v, k) then 21: break menor célula encontrada 22: end if 23: end while 24: end if 25: return v, l retorna a menor célula e o último nível válido 26: end function

15 Campos de Distância Amostrados Adaptativamente com Aceleração por Placa Gráfica 43 Esta técnica permite que os algoritmos explorem coerência espacial. Por exemplo, considere um algoritmo de lançamento de raios para visualização volumétrica que precise amostrar o campo de distância em intervalos regulares ao longo de um raio. Este algoritmo pode guardar o nível da célula utilizada em cada passo, e no passo seguinte recomeçar a busca a partir desse nível. Para ADFs de nível 9, esta estratégia mostrou ser em torno de 30% mais rápida que uma busca linear comum. A implementação real desta função é feita em GLSL (OpenGL Shading Language) e encontra-se disponível nos apêndices. As funções acima retornam o endereço v do bloco de voxels da menor célula que contém um ponto p. Esse endereço é um vetor 3-D, e indica a posição central do primeiro texel do bloco de voxels da célula. Com a opção de filtragem trilinear habilitada para a textura de voxels, o seguinte comando GLSL pode ser utilizado para reconstruir o valor de distância no ponto p: ( ) v + p cell texture3d voxelt exture, voxeltexturedim (3-4) onde p cell é o ponto p transformado para o espaço local da célula, e voxeltexturedim são as dimensões da textura de voxels.

Matemática Discreta 12

Matemática Discreta 12 Universidade Federal do Vale do São Francisco Curso de Engenharia da Computação Matemática Discreta 12 Prof. Jorge Cavalcanti jorge.cavalcanti@univasf.edu.br - www.univasf.edu.br/~jorge.cavalcanti 1 Introdução

Leia mais

FUNDAMENTOS DE ARQUITETURAS DE COMPUTADORES MEMÓRIA CACHE CAPÍTULO 5. Cristina Boeres

FUNDAMENTOS DE ARQUITETURAS DE COMPUTADORES MEMÓRIA CACHE CAPÍTULO 5. Cristina Boeres FUNDAMENTOS DE ARQUITETURAS DE COMPUTADORES MEMÓRIA CACHE CAPÍTULO 5 Cristina Boeres Introdução! Diferença de velocidade entre Processador e MP O processador executa uma operação rapidamente e fica em

Leia mais

Organização e Arquitetura de Computadores I

Organização e Arquitetura de Computadores I Organização e Arquitetura de Computadores I Memória Cache Slide 1 Introdução Tamanho Função de Mapeamento Política de Escrita Tamanho da Linha Número de Memórias Cache Cache em Níveis Slide 2 Introdução

Leia mais

Memória. Memória Cache

Memória. Memória Cache Memória Memória Cache Revisão - Memória Principal Memória que armazena os dados e programas em linguagem de máquina em execução corrente Razoavelmente barata Tempo de acesso da ordem de nano-segundos a

Leia mais

SUMÁRIO. Fundamentos Árvores Binárias Árvores Binárias de Busca

SUMÁRIO. Fundamentos Árvores Binárias Árvores Binárias de Busca ÁRVORES SUMÁRIO Fundamentos Árvores Binárias Árvores Binárias de Busca 2 ÁRVORES Utilizadas em muitas aplicações Modelam uma hierarquia entre elementos árvore genealógica Diagrama hierárquico de uma organização

Leia mais

6 Resultados Estratégias Consideradas

6 Resultados Estratégias Consideradas Resultados 38 6 Resultados Este capítulo mostra algumas estratégias consideradas antes de chegarmos ao sistema proposto, mostra também os resultados obtidos ilustrados por diversos experimentos computacionais,

Leia mais

Linguagem de Maquina II. Visão Geral

Linguagem de Maquina II. Visão Geral Linguagem de Maquina II Visão Geral Revisão A linguagem de máquina é composta de seqüências binárias (1's e 0's) São interpretadas como instruções pelo hardware A linguagem de montagem e a linguagem de

Leia mais

Endereçamento Aberto

Endereçamento Aberto Endereçamento Aberto ACH2002 - Introdução à Ciência da Computação II Delano M. Beder Escola de Artes, Ciências e Humanidades (EACH) Universidade de São Paulo dbeder@usp.br 11/2008 Material baseado em slides

Leia mais

Tabelas de hash Acabamos de estudar como implementar uma tabela hashing aberta e estudaremos agora como implementar uma tabela hashing fechada ou

Tabelas de hash Acabamos de estudar como implementar uma tabela hashing aberta e estudaremos agora como implementar uma tabela hashing fechada ou Tabelas de hash Acabamos de estudar como implementar uma tabela hashing aberta e estudaremos agora como implementar uma tabela hashing fechada ou também denominada de tabela hashing com endereçamento aberto.

Leia mais

Princípio da Localidade Apenas uma parte relativamente pequena do espaço de endereçamento dos programas é acessada em um instante qualquer Localidade

Princípio da Localidade Apenas uma parte relativamente pequena do espaço de endereçamento dos programas é acessada em um instante qualquer Localidade Memória Cache Princípio da Localidade Apenas uma parte relativamente pequena do espaço de endereçamento dos programas é acessada em um instante qualquer Localidade Temporal Um item referenciado tende a

Leia mais

Hashing: conceitos. Hashing

Hashing: conceitos. Hashing Hashing: conceitos hashing é uma técnica conhecida como espalhamento, mapeamento ou randomização que tenta distribuir dados em posições aleatórias de uma tabela (array) associa cada objeto (de um determinado

Leia mais

Linguagens de Programação Aula 11

Linguagens de Programação Aula 11 Linguagens de Programação Aula 11 Celso Olivete Júnior olivete@fct.unesp.br Na aula passada Uma definição de subprograma descreve as ações representadas pelo subprograma Subprogramas podem ser funções

Leia mais

Árvores. Thiago Martins, Fabio Gagliardi Cozman. PMR2300 / PMR3201 Escola Politécnica da Universidade de São Paulo

Árvores. Thiago Martins, Fabio Gagliardi Cozman. PMR2300 / PMR3201 Escola Politécnica da Universidade de São Paulo PMR2300 / PMR3201 Escola Politécnica da Universidade de São Paulo Árvore: estrutura composta por nós e arestas entre nós. As arestas são direcionadas ( setas ) e: um nó (e apenas um) é a raiz; todo nó

Leia mais

ÁRVORES E ÁRVORE BINÁRIA DE BUSCA

ÁRVORES E ÁRVORE BINÁRIA DE BUSCA ÁRVORES E ÁRVORE BINÁRIA DE BUSCA Prof. André Backes Definição 2 Diversas aplicações necessitam que se represente um conjunto de objetos e as suas relações hierárquicas Uma árvore é uma abstração matemática

Leia mais

Prof. Fernando V. Paulovich 3 de agosto de SCC Computação Gráca

Prof. Fernando V. Paulovich  3 de agosto de SCC Computação Gráca Dispositivos de Saída e SCC0250 - Computação Gráca Prof. Fernando V. Paulovich http://www.icmc.usp.br/~paulovic paulovic@icmc.usp.br Instituto de Ciências Matemáticas e de Computação (ICMC) Universidade

Leia mais

Edital de Seleção 024/2017 PROPESP/UFAM. Prova de Conhecimento. Caderno de Questões

Edital de Seleção 024/2017 PROPESP/UFAM. Prova de Conhecimento. Caderno de Questões Edital de Seleção 024/2017 PROPESP/UFAM Prova de Conhecimento Caderno de Questões CANDIDATO: «Nome» INSCRIÇÃO: «Inscrição» Assinatura conforme identidade INSTRUÇÕES PARA O CANDIDATO: Verifique o seu nome

Leia mais

Transformação de Chave. (Hashing)

Transformação de Chave. (Hashing) UNIVERSIDADE ESTADUAL DE MARINGÁ DEPARTAMENTO DE INFORMÁTICA Transformação de Chave (Hashing) e Gomes da Costa yandre@din.uem.br 1 Transformações de Chave, ou Tabela Hash, ou Tabelas de Dispersão; Hashing

Leia mais

ESTRATÉGIAS DE ALOCAÇÃO AULA 11 Sistemas Operacionais Gil Eduardo de Andrade

ESTRATÉGIAS DE ALOCAÇÃO AULA 11 Sistemas Operacionais Gil Eduardo de Andrade ESTRATÉGIAS DE ALOCAÇÃO AULA 11 Sistemas Operacionais Gil Eduardo de Andrade O conteúdo deste documento é baseado no livro do Prof. Dr. Carlos Alberto Maziero, disponível no link: http://dainf.ct.utfpr.edu.br/~maziero

Leia mais

A inserção da chave 6 da árvore acima resulta na árvore abaixo.

A inserção da chave 6 da árvore acima resulta na árvore abaixo. 149 Árvores B+ As operações nas árvores B+ não são muito diferentes das operações das árvores B. Inserir uma chave em uma folha que ainda tenha algum espaço exige que se coloque as chaves desta folha em

Leia mais

Matrizes esparsas: definição

Matrizes esparsas: definição Matrizes esparsas: definição o objetivo é mostrar os métodos de armazenamento e manipulação de matrizes esparsas esparsidade de uma matriz é a relação entre o número de elementos nulos de uma matriz e

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

Modelagem Geométrica. André Tavares da Silva. Capítulo 12 do Foley Capítulo 4 de Azevedo e Conci Capítulo 11 de Mortenson

Modelagem Geométrica. André Tavares da Silva. Capítulo 12 do Foley Capítulo 4 de Azevedo e Conci Capítulo 11 de Mortenson Modelagem Geométrica André Tavares da Silva andre.silva@udesc.br Capítulo 12 do Foley Capítulo 4 de Azevedo e Conci Capítulo 11 de Mortenson Representações Decomposição Espacial Quadtrees Octrees BSPtree

Leia mais

Árvores. Thiago Martins, Fabio Gagliardi Cozman. PMR2300 / PMR3201 Escola Politécnica da Universidade de São Paulo

Árvores. Thiago Martins, Fabio Gagliardi Cozman. PMR2300 / PMR3201 Escola Politécnica da Universidade de São Paulo PMR2300 / PMR3201 Escola Politécnica da Universidade de São Paulo Árvore: estrutura composta por nós e arestas entre nós. As arestas são direcionadas ( setas ) e: um nó (e apenas um) é a raiz; todo nó

Leia mais

Arquitetura de Computadores. Processamento Paralelo

Arquitetura de Computadores. Processamento Paralelo Arquitetura de Computadores Processamento Paralelo 1 Multiprogramação e Multiprocessamento Múltiplas organizações de computadores Single instruction, single data stream - SISD Single instruction, multiple

Leia mais

4 Impostores com Relevo

4 Impostores com Relevo 63 4 Impostores com Relevo I just wish... I wish I knew what I'm supposed to do. That's all. I just wish I knew. (The Matrix) 4.1 Introdução Os objetos modelados por texturas com relevo, por corrigirem

Leia mais

Dicionários. Prof. César Melo

Dicionários. Prof. César Melo Dicionários Prof. César Melo Definição Estruturas que permitem a recuperação da informação a partir do seu valor; Contrasta com filas e pilhas que é posicional; Três operações: Inserção(k, d), chave k;

Leia mais

4 Modelos Propostos para Otimização de Planejamentos com Restrições de Precedência 4.1 Representação com Algoritmos Genéticos

4 Modelos Propostos para Otimização de Planejamentos com Restrições de Precedência 4.1 Representação com Algoritmos Genéticos 46 4 Modelos Propostos para Otimização de Planejamentos com Restrições de Precedência 4.1 Representação com Algoritmos Genéticos Para definir a representação de um modelo para problemas de planejamento

Leia mais

Computação Gráfica. Representação e Modelagem

Computação Gráfica. Representação e Modelagem Computação Gráfica Representação e Modelagem Professora: Sheila Cáceres Baseado nos slides da Prof. Soraia Musse Modelagem Área da Computação Gráfica que estuda a criação de modelos dos objetos reais.

Leia mais

Organização e Arquitetura de Computadores I

Organização e Arquitetura de Computadores I Organização e Arquitetura de Computadores I BARRAMENTO Slide 1 Sumário Introdução Componentes de Computador Funções dos Computadores Estruturas de Interconexão Interconexão de Barramentos Slide 2 Introdução

Leia mais

INTRODUÇÃO À TECNOLOGIA DA INFORMAÇÃO ACESSO, ATRIBUTOS E OPERAÇÕES COM ARQUIVOS PROFESSOR CARLOS MUNIZ

INTRODUÇÃO À TECNOLOGIA DA INFORMAÇÃO ACESSO, ATRIBUTOS E OPERAÇÕES COM ARQUIVOS PROFESSOR CARLOS MUNIZ INTRODUÇÃO À TECNOLOGIA DA OPERAÇÕES COM ARQUIVOS PROFESSOR CARLOS MUNIZ INTRODUÇÃO O Sistema de Arquivos é o modo como as informações são armazenadas nos dispositivos físicos de armazenamento, exemplo

Leia mais

Árvores & Árvores Binárias

Árvores & Árvores Binárias Árvores & Árvores Binárias Problema Implementações do TAD Lista Linear Lista encadeada eficiente para inserção e remoção dinâmica de elementos, mas ineficiente para busca Lista seqüencial (ordenada) Eficiente

Leia mais

Transformação de Chave - Hashing

Transformação de Chave - Hashing UNIVERSIDADE ESTADUAL DE MARINGÁ DEPARTAMENTO DE INFORMÁTICA Transformação de Chave (Hashing) e Gomes da Costa yandre@din.uem.br 1 Transformações de Chave, ou Tabela Hash, ou Tabelas de Dispersão; Hashing

Leia mais

Tabelas Hash. informação, a partir do conhecimento de sua chave. Hashing é uma maneira de organizar dados que:

Tabelas Hash. informação, a partir do conhecimento de sua chave. Hashing é uma maneira de organizar dados que: Tabelas Hash Tabelas Hash O uso de listas ou árvores para organizar informações é interessante e produz bons resultados. Porem, em nenhuma dessas estruturas se obtém o acesso direto a alguma informação,

Leia mais

ESTRUTURA DE DADOS E ALGORITMOS. Hashing (Tabela de Dispersão) Cristina Boeres

ESTRUTURA DE DADOS E ALGORITMOS. Hashing (Tabela de Dispersão) Cristina Boeres ESTRUTURA DE DADOS E ALGORITMOS Hashing (Tabela de Dispersão) Cristina Boeres Motivação! Os métodos de pesquisa vistos até agora buscam informações armazenadas com base na comparação de suas chaves! Para

Leia mais

SSC0611 Arquitetura de Computadores

SSC0611 Arquitetura de Computadores SSC0611 Arquitetura de Computadores 5ª e 6ª Aulas Revisão de Hierarquia de Memória Profa. Sarita Mazzini Bruschi sarita@icmc.usp.br 1 Memória Memória Todo componente capaz de armazenar bits de informação

Leia mais

Fundamentos de Sistemas Operacionais

Fundamentos de Sistemas Operacionais Fundamentos de Sistemas Operacionais Aula 6 Gerenciamento de Memória Prof. Galvez Considerações Gerais Multiprogramação implica em manter-se vários processos em memória Memória necessita ser alocada de

Leia mais

Tabelas de Hash MBB. Novembro de Algoritmos e Complexidade LEI-LCC

Tabelas de Hash MBB. Novembro de Algoritmos e Complexidade LEI-LCC Tabelas de Hash Algoritmos e Complexidade LEI-LCC 2010-2011 MBB Novembro de 2010 Tabelas e Acesso a Informação As estruturas de dados apresentadas anteriormente têm como objectivo o armazenamento de informação,

Leia mais

Introdução Métodos de Busca Parte 1

Introdução Métodos de Busca Parte 1 Introdução Métodos de Busca Parte 1 SCC-201 Introdução à Ciência da Computação II Rosane Minghim 2009 Importância em estudar busca Busca é uma tarefa muito comum em computação? Vários métodos e estruturas

Leia mais

QUESTÕES DE PROVAS ANTIGAS

QUESTÕES DE PROVAS ANTIGAS CT-24 QUESTÕES DE PROVAS ANTIGAS ) Preencha a tabela abaixo com Î ou Ï: ω(log n) Θ(n) O(n log n) Ω(n 2 ) o(n ) 6n + 2n 2 + 2.log n + 4n + n.log n + log n 2) Dada a árvore binária abaixo, escreva os seus

Leia mais

Acesso Sequencial Indexado

Acesso Sequencial Indexado Acesso Sequencial Indexado Utiliza o princípio da pesquisa seqüencial cada registro é lido seqüencialmente até encontrar uma chave maior ou igual a chave de pesquisa. Providências necessárias para aumentar

Leia mais

Árvores B. Prof. Márcio Bueno. / Fonte: Material da Prof a Ana Eliza Lopes Moura

Árvores B. Prof. Márcio Bueno. / Fonte: Material da Prof a Ana Eliza Lopes Moura Árvores B Prof. Márcio Bueno ed2tarde@marciobueno.com / ed2noite@marciobueno.com Fonte: Material da Prof a Ana Eliza Lopes Moura Situação Problema Memória Principal Volátil e limitada Aplicações Grandes

Leia mais

Capítulo 11 Sistemas de Arquivos

Capítulo 11 Sistemas de Arquivos Sistemas Operacionais Prof. Esp. André Luís Belini Bacharel em Sistemas de Informações MBA em Gestão Estratégica de Negócios Capítulo Sistemas de s Introdução O armazenamento e a recuperação de informações

Leia mais

Tabelas Hash O Que é uma Tabela Hash? O Que é uma Tabela Hash? O Que é uma Tabela Hash? Inserindo um Novo Registro. O Que é uma Tabela Hash?

Tabelas Hash O Que é uma Tabela Hash? O Que é uma Tabela Hash? O Que é uma Tabela Hash? Inserindo um Novo Registro. O Que é uma Tabela Hash? Tabelas Hash O Que é uma Tabela Hash? Nesta aula são discutidos modos de armazenar informações em um vetor, e depois procurar por uma informação Tabelas Hash constituem uma abordagem comum para o problema

Leia mais

Tabelas Hash. Prof. Túlio Toffolo BCC202 Aulas 23 e 24 Algoritmos e Estruturas de Dados I

Tabelas Hash. Prof. Túlio Toffolo  BCC202 Aulas 23 e 24 Algoritmos e Estruturas de Dados I Tabelas Hash Prof. Túlio Toffolo http://www.toffolo.com.br BCC202 Aulas 23 e 24 Algoritmos e Estruturas de Dados I Pesquisa em Memória Primária Introdução - Conceitos Básicos Pesquisa Sequencial Pesquisa

Leia mais

Capítulo 8: Memória Principal. Operating System Concepts 8 th Edition

Capítulo 8: Memória Principal. Operating System Concepts 8 th Edition Capítulo 8: Memória Principal Silberschatz, Galvin and Gagne 2009 Objetivos Fornecer uma descrição detalhada das várias formas de organizar a memória do computador Discutir várias técnicas de gerenciamento

Leia mais

CONJUNTO DE INSTRUÇÕES

CONJUNTO DE INSTRUÇÕES CONJUNTO DE INSTRUÇÕES 1 CARACTERÍSTICAS DE INSTRUÇÕES DE MÁQUINA Quando um programador usa uma linguagem de alto-nível, como C, muito pouco da arquitetura da máquina é visível. O usuário que deseja programar

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

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

Arquitecturas Paralelas I Computação Paralela em Larga Escala LESI - 4º Ano. Desenvolvimento de Aplicações Paralelas Arquitecturas Paralelas I Computação Paralela em Larga Escala LESI - 4º Ano Desenvolvimento de Aplicações Paralelas (gec.di.uminho.pt/lesi/ap10203/aula06aplicaçõespar.pdf) João Luís Ferreira Sobral Departamento

Leia mais

Buscas Informadas ou Heurísticas - Parte III

Buscas Informadas ou Heurísticas - Parte III Buscas Informadas ou Heurísticas - Parte III Prof. Cedric Luiz de Carvalho Instituto de Informática - UFG Mestrado em Ciência da Computação / 2006 BUSCA SMA* (Simplified Memory-Bounded A*) BUSCA SMA* (Simplified

Leia mais

Organização de Computadores

Organização de Computadores Organização de Computadores Aula 25 Conjunto de Instruções: Modos de Endereçamento e Formatos Rodrigo Hausen 11 de novembro de 2011 http://cuco.pro.br/ach2034 1/26 Apresentação 1. Bases Teóricas 2. Organização

Leia mais

EA075 Memória virtual

EA075 Memória virtual EA075 Memória virtual Faculdade de Engenharia Elétrica e de Computação (FEEC) Universidade Estadual de Campinas (UNICAMP) Prof. Levy Boccato 1 Motivação Problema: programas cujos tamanhos ultrapassavam

Leia mais

Correção de Erros. Erros de memória de semicondutores podem ser:

Correção de Erros. Erros de memória de semicondutores podem ser: Correção de Erros Erros de memória de semicondutores podem ser: Erros graves que constitui um defeito físico permanente; Erros moderados, onde a(s) célula(s) não são capazes de armazenar os dados ou fazem

Leia mais

Gerência de Memória. Paginação

Gerência de Memória. Paginação Gerência de Memória Paginação Endereçamento Virtual (1) Espaço de endereçamento dos processos não linearmente relacionado com a memória física Cada vez que são usados, os endereços virtuais são convertidos

Leia mais

indexação e hashing Construção de Índices e Funções Hash Diego Gomes Tomé - MSc. Informática Orientador: Prof. Dr. Eduardo Almeida October 13, 2016

indexação e hashing Construção de Índices e Funções Hash Diego Gomes Tomé - MSc. Informática Orientador: Prof. Dr. Eduardo Almeida October 13, 2016 indexação e hashing Construção de Índices e Funções Hash Diego Gomes Tomé - MSc. Informática Orientador: Prof. Dr. Eduardo Almeida October 13, 2016 Universidade Federal do Paraná indexação e hashing Índices

Leia mais

Sistemas Operacionais

Sistemas Operacionais Sistemas Operacionais GERÊNCIA da MEMÓRIA MACHADO/MAIA: CAPÍTULO 09 Prof. Pedro Luís Antonelli Anhanguera Educacional Gerenciamento da Memória Programas precisam ser trazidos para a memória para serem

Leia mais

Programação II. Árvores Binárias (Binary Trees) Bruno Feijó Dept. de Informática, PUC-Rio

Programação II. Árvores Binárias (Binary Trees) Bruno Feijó Dept. de Informática, PUC-Rio Programação II Árvores Binárias (Binary Trees) Bruno Feijó Dept. de Informática, PUC-Rio Árvores Dados organizados de maneira hierárquica Exemplos: arquivos em diretórios, subdivisão de espaço 2D em um

Leia mais

Classificação e Pesquisa de Dados. Aula 23 Organização de Arquivos: Arquivos Indexados, Diretos e Arquivos Invertidos

Classificação e Pesquisa de Dados. Aula 23 Organização de Arquivos: Arquivos Indexados, Diretos e Arquivos Invertidos Classificação e Pesquisa de Dados Aula 23 Organização de Arquivos: Arquivos Indexados, Diretos e Arquivos Invertidos UFRGS INF1124 Arquivo indexado - AI Indicação de uso Baixa freqüência de acessos seqüenciais

Leia mais

Introdução Paradigmas

Introdução Paradigmas Introdução Paradigmas Recursividade Algoritmos tentativa e erro Divisão e conquista Programação dinâmica Algoritmos gulosos Algoritmos aproximados 1 Introdução O projeto de algoritmos requer abordagens

Leia mais

ACH2025. Laboratório de Bases de Dados Aula 8. Indexação e Hashing Parte 1. Professora: Fátima L. S. Nunes SISTEMAS DE INFORMAÇÃO

ACH2025. Laboratório de Bases de Dados Aula 8. Indexação e Hashing Parte 1. Professora: Fátima L. S. Nunes SISTEMAS DE INFORMAÇÃO ACH2025 Laboratório de Bases de Dados Aula 8 Indexação e Hashing Parte 1 Professora: Fátima L. S. Nunes Conceitos básicos Boa parte das consultas a BD referem-se a apenas uma parte pequena dos registros.

Leia mais

Dicionários. TAD Orientado a conteúdo

Dicionários. TAD Orientado a conteúdo Dicionários TAD Orientado a conteúdo Dicionários efinição: Tipo abstrato de dados orientado a onteúdo. Contrasta com as PILHAs e FILAs que são orientadas a posição. perações implementadas: Inserir(d,x)

Leia mais

Árvores & Árvores Binárias

Árvores & Árvores Binárias SCE 182 SCC122 Algoritmos Estruturas e Estruturas de Dados de Dados I Árvores & Árvores Binárias Prof. Material Original: Walter Aoiama Nagai; Maria das Graças Volpe Nunes; Definições Árvore T é um conjunto

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

Ambiente de tempo de Execução Cap. 7

Ambiente de tempo de Execução Cap. 7 Ambiente de tempo de Execução Cap. 7 Introdução Subdivisão da memória usada pelo programa em tempo de execução Segmento de Código Segmento Estático (segmento de dados) Pilha Área de memória livre Heap

Leia mais

Algoritmos de pesquisa. Tabelas de dispersão/hash

Algoritmos de pesquisa. Tabelas de dispersão/hash Algoritmos de pesquisa Tabelas de dispersão/hash Introdução Motivação: Considerar o problema de pesquisar um determinado valor num vetor. Se o vetor não está ordenado, a pesquisa requer O(n) de complexidade.

Leia mais

Gerência de Memória. Gerência de Memória Introdução e Particionamento. Novo capítulo. Aulas anteriores. Plano da aula. Memória lógica & física

Gerência de Memória. Gerência de Memória Introdução e Particionamento. Novo capítulo. Aulas anteriores. Plano da aula. Memória lógica & física Aulas anteriores Gerência de Memória Introdução e Particionamento Marcelo Johann Ciclo de Compilação, ligação e carga INF - Sistemas Operacionais I N - Marcelo Johann - 9/ Aula : Slide INF - Sistemas Operacionais

Leia mais

Capítulo 5 Livro do Mário Monteiro Conceituação. Elementos de projeto de memória cache

Capítulo 5 Livro do Mário Monteiro Conceituação. Elementos de projeto de memória cache Capítulo 5 Livro do Mário Monteiro Conceituação Princípio da localidade Funcionamento da memória cache Elementos de projeto de memória cache Mapeamento de dados MP/cache Algoritmos de substituição de dados

Leia mais

Gerência de memória III

Gerência de memória III Gerência de memória III Eduardo Ferreira dos Santos Ciência da Computação Centro Universitário de Brasília UniCEUB Maio, 2016 1 / 45 Sumário 1 Memória Virtual Segmentação Paginação 2 Alocação de páginas

Leia mais

Arquitetura de Computadores Unidade Central de Processamento CPU

Arquitetura de Computadores Unidade Central de Processamento CPU Arquitetura de Computadores Unidade Central de Processamento CPU CPU Funções realizadas pelo processador: Função controle Responsável pela busca, interpretação e controle da execução das instruções, bem

Leia mais

Organização e Arquitetura de Computadores I

Organização e Arquitetura de Computadores I Organização e Arquitetura de Computadores I Slide 1 Memória Virtual os primeiros computadores (início dos anos 60) tinham memória principal muito reduzida O PDP-1 funcionava com uma memória de 4096 palavras

Leia mais

1 Introdução. I know because I must know. It's my purpose. It's the reason I'm here. (The Matrix) 1.1 Objetivos do trabalho

1 Introdução. I know because I must know. It's my purpose. It's the reason I'm here. (The Matrix) 1.1 Objetivos do trabalho 1 Introdução I know because I must know. It's my purpose. It's the reason I'm here. (The Matrix) 1.1 Objetivos do trabalho Os hardwares gráficos atualmente podem ser considerados como verdadeiros processadores

Leia mais

TGR BCC Representação Computacional de Grafos. Prof. Ricardo José Pfitscher

TGR BCC Representação Computacional de Grafos. Prof. Ricardo José Pfitscher TGR BCC Representação Computacional de Grafos Prof. Ricardo José Pfitscher Cronograma Representação Matriz de djacências Lista de djacências Matriz de Incidências Representação Como podemos representar

Leia mais

Sistemas de Computação. Gerenciamento de memória

Sistemas de Computação. Gerenciamento de memória Gerenciamento de memória Localização de processos Um programa fica armazenado em disco como um arquivo executável binário e tem que ser colocado na memória para começar a ser executado Os processos podem

Leia mais

25/8/2010. Praticamente todas as arquiteturas de computadores fornecem mais de um modo de

25/8/2010. Praticamente todas as arquiteturas de computadores fornecem mais de um modo de Arquitetura de Computadores Conjuntos de Instruções: modos de endereçamento e formatos Prof. Marcos Quinet Universidade Federal Fluminense P.U.R.O. Endereçamento Normalmente, os campos de endereço são

Leia mais

Sequência 17 Organização e Hierarquia de Memória

Sequência 17 Organização e Hierarquia de Memória Arquitetura de Computadores Os cincos componentes clássicos do computador Sequência 17 Organização e Hierarquia de Memória Seq.17 Memórias - conceitos 1 Seq.17 Memórias - conceitos 2 Memória A memória

Leia mais

Tecnólogo em Análise e Desenvolvimento de Sistemas. Sistemas Operacionais (SOP A2)

Tecnólogo em Análise e Desenvolvimento de Sistemas. Sistemas Operacionais (SOP A2) Tecnólogo em Análise e Desenvolvimento de Sistemas Sistemas Operacionais (SOP A2) Conceitos de Hardware e Software Referências: Arquitetura de Sistemas Operacionais. F. B. Machado, L. P. Maia. Editora

Leia mais

Lista de Exercícios 07 Introdução à Ciência de Computação II (SCC0201/501)

Lista de Exercícios 07 Introdução à Ciência de Computação II (SCC0201/501) Lista de Exercícios 07 Introdução à Ciência de Computação II (SCC0201/501) Prof. Moacir P. Ponti Jr. 24 de novembro de 2010 1 Hashing 1. Suponha uma tabela hash de tamanho 10 com endereçamento aberto para

Leia mais

MC3305 Algoritmos e Estruturas de Dados II. Aula 02 Hashing. Prof. Jesús P. Mena-Chalco.

MC3305 Algoritmos e Estruturas de Dados II. Aula 02 Hashing. Prof. Jesús P. Mena-Chalco. MC3305 Algoritmos e Estruturas de Dados II Aula 02 Hashing Prof. Jesús P. Mena-Chalco jesus.mena@ufabc.edu.br 2Q-2015 1 Sobre a busca de dados/chaves 2 Busca em tabelas (vetores/arrays) Para se resolver

Leia mais

Árvores Binárias. SCC Algoritmos e Estruturas de Dados I. Prof. Fernando V. Paulovich

Árvores Binárias. SCC Algoritmos e Estruturas de Dados I. Prof. Fernando V. Paulovich Árvores Binárias SCC0202 - Algoritmos e Estruturas de Dados I Prof. Fernando V. Paulovich *Baseado no material do Prof. Gustavo Batista. Figuras editadas por Isadora Maria Mendes http://www.icmc.usp.br/~paulovic

Leia mais

Sistemas Operacionais. Prof. André Y. Kusumoto

Sistemas Operacionais. Prof. André Y. Kusumoto Sistemas Operacionais Prof. André Y. Kusumoto andrekusumoto.unip@gmail.com Implementação são implementados através da criação, para cada arquivo no sistema, de uma estrutura de dados Descritor de arquivo

Leia mais

Tabelas de dispersão/hash

Tabelas de dispersão/hash Tabelas de dispersão/hash 1 Tabelas de dispersão/hash 1. Considere uma tabela de hash de tamanho m = 1000 e a função de hash h(k)= [m.(k.a % 1)], com A=( 5-1)/2. Calcule os valores de hash das chaves 61,

Leia mais

Sistemas Operacionais. - Gerência de Memória -

Sistemas Operacionais. - Gerência de Memória - Sistemas Operacionais - Gerência de Memória - Gerenciamento de Memória A organização e a gerência de memória são fatores importantes no projeto de sistemas operacionais Um dos objetivos é desenvolver um

Leia mais

Grafos - Representação

Grafos - Representação Grafos - Representação É importante salientar outra diferença relevante entre a representação de matriz de adjacência e a representação ligada de grafos. Na representação de matriz está implícita a possibilidade

Leia mais

Prova Didática Grafos: Árvores Geradoras e Caminhos Mínimos, Análise de Complexidade

Prova Didática Grafos: Árvores Geradoras e Caminhos Mínimos, Análise de Complexidade Prova Didática Grafos: Árvores Geradoras e Caminhos Mínimos, Análise de Complexidade Gustavo E.A.P.A. Batista 25 de janeiro de 2005 1 Contextualização 2 Caminhos Mínimos Caminhos Mínimos de uma Origem

Leia mais

Processamento digital de imagens

Processamento digital de imagens Processamento digital de imagens Agostinho Brito Departamento de Engenharia da Computação e Automação Universidade Federal do Rio Grande do Norte 23 de novembro de 2016 Compressão de imagens engloba técnicas

Leia mais

Árvores Conceitos gerais

Árvores Conceitos gerais http://www.mysticfractal.com/ FractalImaginator.html Árvores Conceitos gerais 9/11 Nesta aula veremos conceitos e definições sobre árvores Diferentemente das estruturas de pilhas, filas e listas que são

Leia mais

Compressão de Textos. Introdução. Introdução. Introdução. O volume de informação textual disponível on-line é imenso:

Compressão de Textos. Introdução. Introdução. Introdução. O volume de informação textual disponível on-line é imenso: Compressão de Textos Estrutura de Dados II Prof. Guilherme Tavares de Assis Universidade Federal de Ouro Preto UFOP Instituto de Ciências Exatas e Biológicas ICEB Departamento de Computação DECOM O volume

Leia mais

Memória Virtual. Prof. M.Sc. Bruno R. Silva CEFET-MG Campus VII

Memória Virtual. Prof. M.Sc. Bruno R. Silva CEFET-MG Campus VII Prof. M.Sc. Bruno R. Silva CEFET-MG Campus VII Permitir o compartilhamento seguro e eficiente da memória entre vários programas Remover os transtornos de programação de uma quatidade pequena e limitada

Leia mais

Geração Procedural de Terrenos em GPU

Geração Procedural de Terrenos em GPU Geração Procedural de Terrenos em GPU Felipe Gomes Sampaio Universidade Federal de Juiz de Fora Departamento de Ciência da Computação Orientadora: Jesuliana Nascimento Ulysses Agenda Introdução GPU Terrenos

Leia mais

Backtracking. Túlio Toffolo Marco Antônio Carvalho BCC402 Aula 10 Algoritmos e Programação Avançada

Backtracking. Túlio Toffolo  Marco Antônio Carvalho BCC402 Aula 10 Algoritmos e Programação Avançada Backtracking Túlio Toffolo www.toffolo.com.br Marco Antônio Carvalho marco.opt@gmail.com BCC402 Aula 10 Algoritmos e Programação Avançada Backtracking Backtracking é um refinamento do algoritmo de busca

Leia mais

COMUNICAÇÃO DIGITAL INTRODUÇÃO À TEORIA DE INFORMAÇÃO

COMUNICAÇÃO DIGITAL INTRODUÇÃO À TEORIA DE INFORMAÇÃO COMUNICAÇÃO DIGITAL INTRODUÇÃO À TEORIA DE INFORMAÇÃO Evelio M. G. Fernández - 2011 Introdução à Teoria de Informação Em 1948, Claude Shannon publicou o trabalho A A Mathematical Theory of Communications.

Leia mais

Gerência de memória II

Gerência de memória II Gerência de memória II Eduardo Ferreira dos Santos Ciência da Computação Centro Universitário de Brasília UniCEUB Maio, 2017 1 / 48 Sumário 1 Memória Virtual Segmentação Paginação 2 Alocação de páginas

Leia mais

Árvores Auto-ajustadas

Árvores Auto-ajustadas Árvores Árvores Auto-ajustadas As árvores binárias de pesquisa são projetadas para um acesso rápido à informação. A velocidade das operações de inserção, remoção e busca realizadas sobre as árvores é mais

Leia mais

Paginação e Segmentação. Memória Principal

Paginação e Segmentação. Memória Principal Paginação e Segmentação Memória Principal Paginação Memória Principal Paginação A paginação é um recurso gerenciado por Hardware; Ela divide a memória física em várias partes de tamanho igual, chamados

Leia mais

Estruturas de Dados 2

Estruturas de Dados 2 Estruturas de Dados 2 Técnicas de Projeto de Algoritmos Força Bruta IF64C Estruturas de Dados 2 Engenharia da Computação Prof. João Alberto Fabro - Slide 1/36 Técnica de Projeto de Algoritmos por Força

Leia mais

TÉCNICAS DE CODIFICAÇÃO DE SINAIS

TÉCNICAS DE CODIFICAÇÃO DE SINAIS TÉCNICAS DE CODIFICAÇÃO DE SINAIS COMPRESSÃO SEM PERDAS Evelio M. G. Fernández - 2010 Exemplo Símbolo Prob I II III IV A 1/2 00 0 0 0 B 1/4 01 11 10 01 C 1/8 10 00 110 011 D 1/8 11 01 1110 0111 Entropia

Leia mais

Seminário de Robótica Bruno de Abreu Silva

Seminário de Robótica Bruno de Abreu Silva Seminário de Robótica Bruno de Abreu Silva 1 Introdução Conceitos gerais Métodos de planejamento de rotas 2 Dadas as configurações inicial e final de um robô, descobrir uma sequência de movimentos a ser

Leia mais

INF Fundamentos da Computação Gráfica Professor: Marcelo Gattass Aluno: Rogério Pinheiro de Souza

INF Fundamentos da Computação Gráfica Professor: Marcelo Gattass Aluno: Rogério Pinheiro de Souza INF2608 - Fundamentos da Computação Gráfica Professor: Marcelo Gattass Aluno: Rogério Pinheiro de Souza Trabalho 02 Visualização de Imagens Sísmicas e Detecção Automática de Horizonte Resumo Este trabalho

Leia mais

Prof. Leonardo Augusto Casillo

Prof. Leonardo Augusto Casillo UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO Aula 2 Estrutura de um processador Prof. Leonardo Augusto Casillo Arquitetura de Von Neumann: Conceito de programa armazenado; Dados

Leia mais

Problema do Caminho Hamiltoniano

Problema do Caminho Hamiltoniano Universidade de São Paulo Escola de Artes, Ciências e Humanidades Bacharelado em Sistemas de Informação Introdução à Ciência da Computação II Professores Luciano Digiampietri e Fábio Nakano Data de entrega:

Leia mais