15.07.2013 Views

ISCTE – ESCOLA DE GESTÃO - Universidade Técnica de Lisboa

ISCTE – ESCOLA DE GESTÃO - Universidade Técnica de Lisboa

ISCTE – ESCOLA DE GESTÃO - Universidade Técnica de Lisboa

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

Com base no algoritmo <strong>de</strong> Zhao et al, o array é dividido em chunks, cada um dos quais <strong>de</strong>ve ter uma<br />

dimensão que lhe permita existir em memória. No seguimento da notação utilizada, um chunk po<strong>de</strong> ser<br />

um chunk nuclear (core chunk) ou um chunk cubói<strong>de</strong> (cuboid chunk). A maioria dos chunks cubói<strong>de</strong>s são<br />

pequenos e acedidos mais frequentemente, pelo que <strong>de</strong>vem ser separados dos chunks nucleares para<br />

assegurar um acesso rápido aos primeiros. Porém, como nem todos os chunks <strong>de</strong> um cubo têm o<br />

mesmo volume, é necessário <strong>de</strong>terminar qual o tamanho dos chunks. Para esse fim, é estabelecido um<br />

limite e verifica-se se o tamanho da maior dimensão po<strong>de</strong> ser usado como limite para todas as<br />

dimensões. Tomando o exemplo do cubo 3D da figura 12 e assumindo um limite máximo <strong>de</strong> 27 células,<br />

ao seleccionar o valor <strong>de</strong> |D0| = 5 verifica-se que um chunk teria 5 x 4 x 3 = 60 células, o que ultrapassa o<br />

limite pré-estabelecido. A estratégia passa por dividir o valor <strong>de</strong> |D0| por 2 e adicionar 1 ao resultado<br />

obtido, enquanto o valor obtido não respeitar o limite estabelecido [Tam1998]. A figura abaixo mostra o<br />

cubo C após ter sofrido chunking.<br />

Figura 18 <strong>–</strong> Representação do cubo C com 18 chunks [Tam1998]<br />

Cada chunk é tratado como um cubo, o que significa que conceptualmente existem dois mo<strong>de</strong>los<br />

multidimensionais: o mo<strong>de</strong>lo global, que <strong>de</strong>termina os i<strong>de</strong>ntificadores dos chunks, e o mo<strong>de</strong>lo local, que<br />

<strong>de</strong>termina os afastamentos (offsets) das células <strong>de</strong>ntro <strong>de</strong> cada chunk. Logo, cada célula do cubo está<br />

sempre associada a um vector global e um vector local, que po<strong>de</strong>m ser obtidos a partir do en<strong>de</strong>reço da<br />

célula. Tendo em conta a divisão do cubo em chunks, a última célula cubói<strong>de</strong> do cubo C encontra-se em<br />

V(5, 4, 3) e é agora a única célula do chunk 17. Para obter o vector global GV = (gv0, gv1, gv2) para esta<br />

célula, começa-se em v0 e compara-se esse valor com o tamanho do primeiro segmento da dimensão<br />

D0, que é 2 neste caso. Como 5 ≥ 3, toma-se o tamanho do segmento seguinte, que é 2, e como<br />

5 ≥ 3 + 2, termina-se no último segmento e conclui-se que gv0 = 2. Da mesma forma, para as dimensões<br />

37

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!