2.4 Abordagens específicas
2.4.1 Placas gráficas
A arquitectura estabelecida actualmente no que respeita ao hardware dedicado para o processamento gráfico, denominado como placa gráfica 5, é principalmente dirigida para o processo de rasterização de imagens partindo de um conjunto de geometria e texturas definidas para um cenário. No entanto, como se pode observar pelas características apresentadas nos últimos modelos de placas gráficas lançadas no mercado, como seja a inclusão de um conjunto de 256 “
stream processors
” (Buck 2004; Nvidia 2008), denota uma tendência para uma maior gama de aplicabilidade deste tipo de recursos em problemas fora do âmbito da computação gráfica, e mais propriamente fora do processo de rasterização.Fora do âmbito dos problemas clássicos em que as placas gráficas podem ser utilizadas encontra-se um conjunto de algoritmos, também clássicos, como seja o caso da
Fast Fourier Transform
(FFT), do cálculo matricial e Álgebra Linear básica (Buck 2004). A implementação destes algoritmos em placas gráficas demonstraram que a sua eficiência rivaliza com as implementações standard no CPU numa grande variedade de problemas do foro do cálculo matemático. A principal vantagem das placas gráficas sobre os modelos genéricos de CPUs é a presença de um elevado número de unidades de vírgula flutuante e cálculo de inteiros, para além do também elevado nível de paralelismo, quer espacial quer temporal, que beneficia amplamente as operações sobre matrizes e valores escalares.Embora as placas gráficas não estejam ainda focadas para implementação de algoritmos da área do
ray tracing
, várias são as primitivas partilhadas entre os algoritmos de rasterização e os algoritmos deray tracing
, fazendo com que este tipo de hardware se apresente atractivo para a implementação dos referidos algoritmos deray tracing
. O rápido desenvolvimento nas arquitecturas das placas gráficas, nomeadamente no poder de cálculo e na razão entre o poder de cálculo e o custo, torna ainda mais fácil e apetecível o desenvolvimento aplicações na área doray tracing
.Uma abordagem mais genérica com o objectivo de criar uma plataforma ou ambiente de desenvolvimento fácil foi desenvolvida por Buck et al. (Buck 2004), baseada no paradigma de
streaming
que é bastante adaptável à arquitectura seguida nas placas gráficas.A definição de uma linguagem de
streaming
de uso generalista por parte de Buck et al. (Buck 2004) para o modelo de programação das placas gráficas, demonstra a versatilidade e o poder do hardware gráfico presente na grande maioria dos computadores pessoais de média e alta gama. A linguagem definida aproveita a arquitectura do tipo SIMD presente nas placas gráficas, os diferentes processadores de vértices e de fragmentos, a memória para texturas e registos internos, para implementar um ambiente de programação orientado ao paradigma destreaming
.As
streams
são matrizes de elementos de tipo de dados homogéneos que podem ser processadas em paralelo por módulos de código denominados dekernels
. O resultado da aplicação doskernels
aos elementos de umastream
de entrada pode ser ligado a outroskernels
para processamento posterior. Parâmetros de entrada simples podem ser colocados nos registos internos da placa gráfica, com acesso apenas de leitura. Toda a especificidade do hardware onde a aplicação é executada é ocultada pelo compilador/linker
e bibliotecas da linguagem definida, restando ao utilizador apenas implementar oskernels
com os algoritmos que pretende executar e indicar as respectivas entradas e saídas,streams
.Este tipo de abordagem tem uma boa adaptação a problemas com um comportamento do tipo SIMD, no entanto subsiste um problema de implementação que pode prejudicar a eficiência. Este problema é a falta de instruções de
branching
(salto do programa para outro bloco de código) nos processadores de vértices e de fragmentos das placas gráficas, que leva à execução completa de um fragmento de código,kernel
neste caso, mesmo que não seja necessário. Esta situação impõe determinadas limitações na implementação de algoritmos quedependam muito deste tipo de facilidade como seja o caso de percorrer uma octree.
Seguindo esta abordagem Purcell et. al (Purcell 2004) implementou um
ray tracer
fotorealista em tempo real. Segundo o autor a tecnologia VLSI (Very-
Large-Scale Integration
) atingiu um patamar capaz de colocar num só chip o poder computacional necessário para uma implementação deray tracer
em tempo real.Ainda segundo o autor, a maioria dos
renderers
fotorealísticos de alta fidelidade geram imagens através de técnicas de iluminação global em cima da componente deray tracing
. Oray tracing
em tempo real tem sido o objectivo procurado pela comunidade de computação gráfica desde de há muitos anos. Infelizmente é um processo bastante oneroso em termos de poder computacional.Purcell (Purcell 2004) apresentada um modelo abstracto de um
stream
processor
para as recentes placas gráficas (GPU), permitindo que o GPU execute programas neste modelo definido. Descreve-se a implementação doray tracer
segundo o modelo destreaming
no GPU, providenciando uma análise sobre a largura de banda e requisitos computacionais da implementação. Oray tracer
implementado é utilizado também para avaliar a simulação de GPUs com modelos de execução avançados.A utilização de técnicas de
photon mapping
no modelo implementado também foi estudada e avaliada. Finalmente são feitas considerações relativamente a tendências relativas à utilização do modelo computacional destreaming
. Os resultados apresentados mostram que umray tracer
baseado no GPU e seguindo uma abordagem de num modelo destreaming
tem o potencial de rivalizar ou mesmo superar algoritmos implementados no CPU, sem fundamentar a necessidade de aquisição de novo hardware, diminuindo desta forma o fosso entrerendering
realístico e interactivo.Purcell (Purcell 2004) ainda refere que apenas em anos recentes os supercomputadores e agrupamentos (
clusters
) de PCs (Samanta 2000; Samanta2000) atingiram um nível suficiente para demonstrar aplicações de algoritmos de
ray tracing
com taxas interactivas que incluem a componente de iluminação global.Ocorreu recentemente um avanço tecnológico na área do hardware gráfico, em que os pipeline funcionais fixos foram substituídos por processadores programáveis de vértices e fragmentos. Num futuro próximo, é provável que o pipeline das placas gráficas evolua para um processador de
streaming
mais genérico, capaz de realizar operações mais complexas que orendering
de triângulos (Purcell 2002).Purcell avaliou a tendência na programabilidade de tais pipelines gráficos e a possibilidade de implementar um
ray tracer
neste tipo de hardware. Utilizado o simulador definido, é analisada a eficiência de uma implementação de um algoritmoray tracing
na nova geração de placas gráficas programáveis. Também é feita a comparação entre o hardware que não permite obranching
utilizando uma implementação de múltipla passagens e uma arquitectura que permite obranching
. Purcell (Purcell 2002) ainda apresenta como é possível implementar outras algoritmos deray tracing
, como seja o caso dowhitted ray tracing
,path
tracing
e algoritmos derendering
híbridos, utilizando a abordagem proposta. Finalmente demonstra que oray tracing
em hardware gráfico poderá ser mais rápido em relação a implementações baseadas no CPU, bem como possa ser uma abordagem competitiva em relação ao modelo derendering
de triângulos.Segundo Thompson et al. (Thompson 2002), recentemente as arquitecturas de hardware para gráficos tiveram a sua ênfase na versatilidade, oferecendo novas e avançadas formas de programar e reconfigurar o pipeline do processo gráfico. Também é estudado se é ou não possível utilizar as arquitecturas de hardware gráfico em problemas e algoritmos de índole genérico, tradicionalmente implementados em processadores vectoriais genéricos.
Thompson et al. apresenta uma plataforma de programação que é aplicada a uma grande variedade de problemas, incluindo a multiplicação de matrizes e 3-SAT. Comparando a eficiência de resultados na implementação em hardware
gráfico, com a implementação standard em CPU, é demonstrado que existe uma melhoria significativa do tempo de execução em muitos dos casos, bem como deixa espaço para futuros melhoramentos. São também analisados pontos onde se detectou constrangimentos no pipeline do hardware gráfico, sendo propostas ligeiras extensões as actuais arquitecturas por forma a contornar estes “
bottlenecks
”, que podem levar a um aumento significativo do poder de cálculo na implementação de algoritmos genéricos. Com base nos resultados obtidos e as tendências na área ao nível da microarquitectura, acredita-se que o hardware gráfico será cada vez mais importante na elevada eficiência dos sistemas computacionais standard.A visão apresentada neste ponto tem em conta apenas a implementação dos algoritmos de