Curso 2006-2007.
Registro de Imágenes
utilizando Hardware Gráfio
Componentes del grupo:
Luis Rafael Canet Salazar
Rodrigo González Alberquilla
Salvador de la Puente González
Diretor del proyeto:
Christian Tenllado van der Reijden
Hardware Gráo
Memoria de proyeto n de arrera
presen-tada por Luis Rafael Canet Salazar, Rodrigo
González AlberquillaySalvador delaPuente
González en la Universidad Complutense de
Madrid, realizado bajo la direión de
Chris-tian Tenllado van der Reijden.
En este proyeto, estudiamos el registro de imágenessobre hardware
grá-o. Con esta ténia nos referimos aenontrar una transformaión quehaga
posible elsolapamientoentredos imágenes.
En el Capítulo 1 realizaremos una breve introduión aera del registro
de imágenes, expliando en qué onsiste y uáles son sus apliaiones, y
dis-utiremos diferentes estrategias para llevarlo aabo.
A ontinuaión,desribiremos el algoritmo del que partimos para realizar
el registro, basándonos en el trabajo de I. De Falo et al. [FMS
+
07℄ y
apor-tando nuestras propias mejoras y optimizaiones. Hablaremos también de su
implementaión y analizaremosel rendimientoenCPU.
A lavistade losresultado, propondremos una nueva plataformade
ejeu-ión, la GPU, y detallaremossu estrutura interna.
Seguidamente, estableeremos las bases del Modelo de Proesamiento de
Flujos y trasladaremosel algoritmode registroa este modelo.
Para nalizar,omprobaremosgráamentelosresultadosobtenidostanto
en CPUomo enGPU, observando una mejora importanteen elrendimiento
In this projet, we study the image registration on graphial hardware.
This taskonsists innding a suitabletransformation tomathtwoimages.
InChapter1weintrodueimageregistration,explaining howitworksand
its appliations,and showing dierent approahes to the solution.
After, we desribe the algorithm based on the work of I. De Falo et
al. [FMS
+
07℄, adding our own improvements and optimizations. We write
about itsimplementation and itsCPU performane.
With these results in mind, we introdue a new framework and its
beha-vior, the GPU. Then, we make another approah to the image registration
algorithm, following the guidelines of the Stream-ProessingModel.
In the end, we examine the results between both models, showing how
versidad Complutense de Madrid a difundir y utilizar on nes aadémios,
no omeriales y menionandoexpresamente a susautores, la memoria
desa-rrollada eneste proyeto.
Madrid, a 3 de Julio de 2007.
GPGPU, registro de imágenes, imagen hiperespetral, GPU, informaión
mutua,evoluióndiferenial,sattering, gathering,enaje deimágenes,
Luis.
A mamá, papá, mi hermana Paula, Bea y a mis amigos de aquí yde allí.
Salva.
A mis padres,Estela y todo ASCII.
Damoslas graias a Christian Tenllado, nuestro diretorde proyeto, por
ayudarnosallevarloatérminoyalagentedel DACYApordarnosun espaio
donde trabajar, y failitarnos un framework base. En espeial a Enrique de
la Torre, por mantener los equipos preparados para realizar las pruebas y a
Manuel Prieto por serelreferente enimágeneshiperespetrales.
Luis quiere dar las graiasa Edgardo Mejía, porsu ayuday onsejos; y a
WeneslaoCanet, por sersu mejorreferente.
ASalvador legustaríaagradeerelapoyodetodos susamigos,enespeial
el de Beatriz y su familia; y a sus ompañeros de proyeto por aguantar su
aráter.
Rodrigo quiere agradeer a Christian de nuevo y a Javier Setoain por ser
oídosyrespuestaasusdudas.AEstelaporelapoyoprestadoenlosmomentos
más duros. A Alberto Ferreiro por desubrirnossus seretos ala hora de que
1. Introduión 1
1.1. El Registro deImágenes . . . 1
1.2. Imágenes Hiperespetrales . . . 3
1.3. Algoritmos deRegistro deImágenes . . . 4
1.4. GPGPU . . . 7
1.4.1. Orígenes y evoluión . . . 7
1.4.2. Perspetiva futura . . . 8
1.5. Motivaión. . . 9
1.6. Objetivos . . . 9
1.7. Organizaión del resto deeste doumento. . . 10
2. Algoritmo para el registro de Imágenes Hiperespetrales 11 2.1. Algoritmo deEvoluiónDiferenial . . . 11
2.2. Cálulo dela informaión mutua. . . 15
2.3. Optimizaiones a losalgoritmos . . . 17
2.4. Desripión de ImplementaiónCPU . . . 18
2.4.1. Algoritmo deEvoluiónDiferenial . . . 19
2.5. Resultados obtenidos . . . 24
2.5.1. Plataformas deejeuión . . . 24
2.5.2. Imágenes de prueba. . . 25
2.5.3. Resultados on imágenessintétias . . . 25
2.5.4. Número de generaiones . . . 26
2.5.5. Tamañode lapoblaión . . . 28
2.5.6. Mejoras ala onvergenia . . . 29
2.5.7. Resultados on imágenesreales . . . 30
2.5.8. Tiemposobtenidos . . . 31
3. Arquitetura de la GPU 35 3.1. El pipeline gráo . . . 37
3.2. Evoluióntenológia de losproesadoresgráos . . . 41
3.2.1. Primera generaión . . . 42
3.2.2. Segunda generaión . . . 42
3.2.3. Tererageneraión . . . 43
3.2.4. Cuarta generaión . . . 43
3.2.5. Haia laquinta generaión . . . 44
3.3. Conlusiones. . . 47
4. Registro de imágenes en GPU 49 4.1. El modelo deproesamientode ujos . . . 49
4.1.1. Gathering y sattering . . . 52
4.1.2. El modelo deujos enla GPU . . . 52
4.1.3. Lenguaje de programaión . . . 53
4.1.5. El rasterizador . . . 54
4.1.6. Retroalimentaión . . . 55
4.1.7. Memoria devídeo . . . 56
4.2. Implementaión del modelo de proesamiento de ujos: el fra-mework . . . 56
4.3. Implementaióndel registro deimágenes . . . 57
4.3.1. Cálulo dehistograma . . . 58
4.3.2. Cálulo dela InformaiónMutua . . . 60
4.4. Resultados obtenidos . . . 61
4.4.1. Plataformas deejeuión eimágenes deentrada . . . . 62
4.4.2. Tiemposobtenidos . . . 62
5. Comparaión de rendimiento 67 5.1. Speedup . . . 67
5.2. Tiempodealulo del histograma . . . 69
5.3. Tiempodeálulo del MI . . . 71
5.4. Diferenia entre laversión on mejoras o sinmejoras . . . 72
5.5. Reparto del tiempo deómputo . . . 72
5.6. Conlusiones. . . 73
6. Conlusiones y trabajo futuro 75
Bibliografía i
Índie de guras iii
Introduión
1.1. El Registro de Imágenes
Enel ampo delavisión poromputadora,uando setoman imágenesde
una mismaesenauobjeto,endiferentesinstantesdetiempo,odesde
diferen-tes posiiones, obtenemos informaión que se enuentra en diferentes ejes de
referenia. Sabemos que es informaión de un mismo sujeto o lugar, pero no
podemoshaeruna omparaiónableentrelosdiferentesdatosobtenidos, al
estartomadosendiferentesondiiones.Además,esadifereniadeondiiones
puedeserunaaraterístiadenuestroestudio,omoseriaelasodeimágenes
de un terreno tomadas on un año de diferenia,para omparar la evoluión
de lavegetaión, o estudiarfenómenos meteorológios.
El registro de imágenes onsiste en el estudio e integraión de esa
infor-maión en un únio eje de referenia omo se observa en la gura 1.1, esto
es, una vez tomadaslas imágenes, se analizan lassimilitudes existentes entre
Figura 1.1:El registro de imágenes intenta enontrar latransformaión que traslade al
mismomaroderefereniaambasimágenes.
una imagen a la otra, teniendo la erteza de que la informaión de un punto
superpuestoon otroenlaimagennal,orrespondeon elmismolugarenla
realidad.
Obteniendo esta nueva imagen, fruto de la superposiión de ambas,
po-demos observar los ambios produidos entre unas ondiiones y otras, por
ejemplo on respeto al tiempo.También podemos oger una serie de
imáge-nes deunmismolugar,yrearunanuevaimagenqueinluyaatodas,uniendo
esasimágenesporsuslugares omunes.Estonos permiteobteneruna imagen
mas grandede un lugar, sinapreiarorte alguna entrelas diferentes partes.
Figura 1.2:Representaióndeunaimagenhiperespetral
tamaño que una imagen omún, y que albergan muha mas informaión que
la peribida porel ojo humano,las imágeneshiperespetrales.
1.2. Imágenes Hiperespetrales
Las imágenes hiperespetrales, son imágenes de gran tamaño, on mayor
informaión que una imagenomún. Altomar una deestas imágenes, nosolo
sealmaenalainformaiónbidimensionaltípiadeunaimagenmultiespetral,
sinoqueademásseañadeunonjuntodeanalesalolargodelespetrovisible,
infrarrojo,y ultravioleta.
Esta informaión es tomada por un espetrómetro, que reoge ientos de
bandasespetrales,resultadodelareexióndelaluzenlasdiferentesregiones
uobjetosdelaimagen.Estonos permiteestudiosmuhomasrelevantes,omo
un objeto, omo puedeomprobarse enla gura 1.2.
En el aso que nos oupa, trabajamos on imágenes de poriones de
te-rreno tomadas desde un satélite. Con esta informaión, podemos identiar
las diferentesregionesqueomponenel paisaje,y estudiar laevoluión delas
mismas. Porejemplo, la erosión que produe el agua en el aue de un río, o
el estado deuna formaión roosa.
1.3. Algoritmos de Registro de Imágenes
Paraenfrentarnosalregistrodeimágenes,tenemosdiferentesformasde
en-ontrar latransformaiónqueunialosejesderefereniadelasdosimágenes
[Bro92℄.
El mapeo de puntos, propone la reaión de una serie de puntos de
ontrol, llamados landmarks, en ambas imágenes, que representan una
misma araterístia.Partiendo de esas referenias, seintentaentones
emparejarlos. Una vez emparejados, se utiliza esa transformaión para
todos lospíxeles de laimagen.
El ajuste de superies, valora las superies en vez de los puntos de
ontrol. Utilizando varios algoritmos de segmentaión, puede loalizar
satisfatoriamentesuperiesdealtoontraste.Sidossuperiespueden
ser identiadas por este método en diferentes imágenes, entones se
produe el ajuste de ambas. Este se utiliza espeialmente en imágenes
Medidas desimilitud de Voxels 1
: Estos métodos deregistro utilizan la
imagen entera sinreduirla o segmentarla a lolargo detodoelproeso,
porloqueresultan másablesquelos basadosenpuntos. Sin embargo,
dadoquemanejanunaantidadenormededatos,tienenelinonveniente
del gran oste omputaional queello supone.La idea deestosmétodos
esdenirlosparámetrosdelregistroomounafunióndealgunamedida
de similitud entre las dos imágenes, e intentar maximizar esta medida
de similitud [yJMV07℄.
El métodobasadoenlaintensidad, utilizalasintensidades delaimagen
omo métododeregistro,demodoquenoserequiere unasegmentaión
explíitadeadaimagen.Sinembargo,paralatransformaiónglobalde
laimagenelnúmerodeparámetrosquehandeseroptimizadossueleser
enorme y llevarlo a laprátiapuede resultar imposible [yJMV07℄.
MétodobasadoenlaInformaiónMutua(MutualInformation,MI):Este
métodoestabasadoenmaximizarlaantidaddeinformaiónompartida
porlasdos imágenes.Noseayudadeningúnagenteexterno,opuntode
ontrol enla imagen,y tampoopreisa deuna manipulaiónprevia de
la misma.
Viendo todas estas posibilidades, nos deantamos en nuestro estudio por
la MI, puesto que es la que presenta el menor numero de restriiones. Esto
supone un espaio de búsqueda muy grande, ideal para búsquedas aleatorias
omo lo son los algoritmos evolutivos.[FMS
+
07℄
1
Figura1.3:Losalgoritmosevolutivosserigen por lasmismasleyesquelabiología
Los algoritmos evolutivos son métodos de búsqueda en un espaio de
so-luiones. El nombre se debe, a que al igual que en las reglas de la evoluión
biológia, lassoluiones masaptastienenmasposibilidadesdesobrevivir.
Da-dauna poblaión iniialdesoluiones potenialesaun problema,elalgoritmo
evolutivo seleiona un onjunto de individuos padre, on los que se generan
nuevas soluiones hijo que extienden la poblaión, si superan una funión de
aptitud. Lossupervivientesson soluiones masadeuadasomo seobservaen
Enonreto,vamosautilizarelalgoritmodeEvoluiónDiferenial
(Die-rentialEvolution,DE),omoreomiendaeltrabajodeI.DeFaloetal.[FMS
+
07℄,
en el ual, preisamente, seofreeun métododeregistro deimágenes basado
en MI.
1.4. GPGPU
Cómputo dePropósito GeneralenUnidades deProeso Gráo
(General-Purpose Computing on Graphis Proessing Units,GPGPU) se puede denir
omo el paradigma que promueve la utilizaión de la Unidad de Proeso de
Gráos omo unaunidad deproeso depropósito general.Estenuevopunto
de vista, nae a raíz de la inlusión en la tarjeta gráa de módulos
progra-mables.
1.4.1. Orígenes y evoluión
Las primeras tarjetas gráas surgieron para aliviar la arga del proeso
gráo a la CPU. Esto permitía una mejora en el rendimiento general del
sistema,aunquelafunionalidaddelastarjetasgráaserabastantelimitada.
Pasado un tiempo, seinluyola posibilidad deprogramariertas partes dela
tarjeta gráa, en onreto, los proesadores de fragmentos y vérties. Esto
supuso una mejora importante, ya que entones los desarrolladores podían
explotar esta araterístia,reandonuevos efetosgráos y nuevosmodelos
de iluminaión.
Muhos deestos efetos explotaban elparalelismo delasunidades
las CPUs. Todo ello, sumado al abaratamiento de las tarjetas gráas en el
merado, permitió que los desarrolladores mas innovadores tuvieran aeso a
equipos on múltiples unidades de proesamiento enparalelo.
Además, on el paso del tiempo apareieron iertos problemas de
rendi-miento al operar sobre vetores y matries. Las CPUs proporionaron una
soluión mediante un onjuntode instruionesnuevo. Aunasí, lasCPUs
se-guíansiendodemasiadogeneralistas,yelonjuntodeinstruionesdemasiado
limitado. Seneesitaba mayorrendimiento,y mayorespeializaión.
Las GPUs pareían la soluión indiada, sin embargo, aun era neesario
una serie de ténias que permitiesen traduir los algoritmos diseñados para
CPU, enalgoritmos equivalentes que explotasen las araterístias únias de
las tarjetas gráas. Estos nuevos algoritmos enajan en el modelo de
proe-samiento deujos, uyos detalles ampliaremos enel Capítulo 4.Basta deir
que el modelo de ujospermite apliar un programa a un onjunto dedatos,
operando sobre losmismos enparalelo.
1.4.2. Perspetiva futura
LaGPUNVIDIA8800eslaprimeratarjetagráaenintroduirunmodelo
uniado de hardware totalmente programable, donde se elimina la visión
lásiadeunonjuntodemódulosprogramablesindependientes,yofreeomo
araterístia únia un lenguaje de programaión orientado al desarrollo de
software general sobre GPU,CUDA.
Teniendoestasposibilidades,noseriadeextrañarquelasompañías
1.5. Motivaión
Múltiplesapliaiones enel mundo dela mediina [MV98℄, omo el
estu-dio del desarrollo de un tumor [SMH
+
07℄, el deterioro oseo de una persona
[HBHH01℄, o el análisisdetallado de laretina del ojo [ret02℄.
También es utilizado para el estudio del efeto del paso del tiempo en
diversos ampos,omo lasonstruionesantiguas oexavaiones
arqueológi-as [JEE77℄, olas formaionesmontañosasde un paisaje [rid00℄.
Elprinipalproblemadeestaténia,eseltiempodeomputo.Alproesar
las imágenes, se estudian píxel a píxel. Para una imagen de tamaño medio
(800x600),tenemosqueproesar480000píxeles.Esunaantidadmuyelevada,
y elproesamientose hae seuenialmente,por loque es muy lento.
Porotro lado,eneste algoritmo existeunaaraterístiaque podemos
ex-plotar, y es que el estudio de ada píxel es independiente de los demás, por
lo que podríamos proesar varios píxeles en paralelo sin llegar a una
solu-ión errónea. De esta forma, disminuiría muho el tiempo de registro de las
imágenes, proporionalmenteal numerode píxeles enparaleloquepodríamos
omputar.
1.6. Objetivos
Partiendo de la idea del registro de imágenes hiperespetrales expuesto
anteriormente, y los avanes en las GPUs atuales, se propone el desarrollo
deuna apliaión paraelregistroautomátiodeimágenes, prestandoespeial
ompu-taional. Para ello,seabordaraelproblemadel registrosiguiendo elalgoritmo
expuesto enelCapítulo 2,basadoenlaEvoluiónDiferenial, yseplantea la
utilizaión de unidades de proesamiento gráo (GPUs) programables para
aelerar aquellas fases más ostosas de la apliaión suseptibles de explotar
las apaidades deeste tipo deplataformas.
1.7. Organizaión del resto de este doumento
EnelCapítulo 2desribimos elalgoritmo delquepartimospararealizar
el registro de imágenes, y su implementaión y análisis de rendimiento
en laCPU.
En el Capítulo 3, entramos en el ámbito de las GPUs, analizando la
evoluión de esta arquitetura, y desribiendo el pipeline gráo de la
misma.
EnelCapítulo4,desribimoselmodelodeproesamientodeujossobre
GPU, e implementamosel registro deimagen haiendo uso de este
mo-delo. quepartes delalgoritmoson abordablesporlosdiferentesmódulos
de laarquitetura.
En elCapítulo 5,omparamos losresultados de CPUy GPU.
EnelCapítulo 6,desarrollamoslasonlusionesalasquehemosllegado
Algoritmo para el registro de
Imágenes Hiperespetrales
Enel Capítulo 1hemos hablado sobre elregistro deimágenesy elegido la
estrategia aseguir, basada enlaMI, desritaenla seión 1.3.
A lo largo de este apítulo desarrollaremos esta estrategia y los
algorit-mos que la integran tomando omo referenia el trabajo de I. De Falo et
al. [FMS
+
07℄.
Comenzaremosanalizando elalgoritmo de búsqueda DE 1
, y la prueba de
aptitud basada en MI 2
.A ontinuaión propondremos algunas mejoras y
ter-minaremos on losresultados dela implementaiónsobre CPU.
1
DierentialEvolution
2
2.1. Algoritmo de Evoluión Diferenial
Los algoritmos evolutivosson sistemas de resoluión de problemas de
op-timizaión o búsqueda que se rigen por las leyes de la evoluión. Trabajan
variando una poblaión de soluiones, y evaluando la aptitud de los
indivi-duos, omo expresa el siguiente esquema:
Algorithm 1 AlgoritmoEvolutivo
Inicializar
_P oblacion
(
P
)
fori
= 1
togeneraciones
dofor eah
Individuo i
inP
doi
_mutado
=
M utar
(
i
)
if
es
_M ejor
(
i
_mutado, i
)
theni
=
i
_mutado
end ifendfor
end for
solucion
=
M ejor
(
P
)
Las diferentes formasde Algoritmo Evolutivo dependen de omo se
om-porten las funiones
M utar
(
Individuo
)
yes
_M ejor
(
Individuo, Individuo
)
. La funiónM utar
(
Individuo
)
atúa sobre un onjunto de individuos padre seleionados aleatoriamente, y el individuo hijo es generado en funión desus padres. Por otro lado
es
_M ejor
(
Individuo, Individuo
)
devolverátrue
si lamedidadesimilitud(Measure OfMath,MOM)dea
essuperioralaMOM deb
según el riterioque estemosestudiando.Por ejemplo, en un problema de maximizaión,
es
_M ejor
(
n1, n2
)
sería equivalente an1
> n2
.En DE, dado un problema de maximizaión on
m
parámetros reales, y eligiendountamañodepoblaiónden
individuos,adaindividuorepresentaráFigura2.1: Cómosegenera unnuevo individuoenunageneraión
una soluión potenial omo un vetor de
m
valores reales. Como se observa enlagura2.1, lafuniónM utar
(
Individuo
)
afetaaunsólo parámetroj
de un individuo ualquierai
. Para ello, primero seleiona tres individuos padre porlaposiióndelosmismosenlapoblaión(r1
,r2
yr3
),todasdistintasentre sí. A ontinuaión,genera el nuevo parámetro mediantela expresión:F
esunparámetrodelalgoritmoen[0
,
0
. . .
1
,
0]
queexpresalamagnitudon laqueladiferenia(
P
r
1
,j
−
P
r
2
,j
)
seapliaaP
r
3
,j
.LaDEdebesuaraterístiadiferenial preisamente al heho de apliar una diferenia entre dos de los
padres on una magnitud
F
.Sin embargo, lafunión
M utar
(
Individuo
)
sólo suedesi se daalguna de las siguientes ondiiones:Siunnúmerorealaleatorio
p
en[0
,
0
. . .
1
,
0]
esmenorquelatasade am-bio (Changue Rate,CR) introduidaenel algoritmo omo parámetro.Si un número aleatorio
k
en[1
, m
]
es exatamentej
, es deir, oinide on elnúmero deparámetro seleionado para mutar.Siningunodeestosrequisitosseveriaentoneselparámetrosemantiene
intato.
Este individuo mutado que designaremos andidato es omparado ontra
el individuo original. Si resulta mejor soluión según el riterio de la funión
es
_M ejor
(
Individuo, Individuo
)
reemplaza al mismo en la próxima pobla-ión.Deotraforma,eseloriginalelquesobreviveypasaalanuevapoblaión.El mismo patrónse repite un máximo de
g
generaiones. Ennuestroaso, los individuos son vetores de6 elementos(
rot1
, rot2, rot3, rot4, dx, dy
)
que representan las transformaiones anes que puedensersoluióndelproblemaderegistrodeimágenesomoseexplióenlaseión 1.1.Los uatroprimeroselementos,
(
rot1, rot2, rot3, rot4
)
,forman una rotaión bidimensional y los dos últimos,(
dx, dy
)
, un vetor desplazamiento en el planoXY
. Nuestro riterio de aptitud, es deir, la base de la funión2.2. Cálulo de la informaión mutua
Enteoría delaprobabilidad, y enteoríadelainformaión, lainformaión
mutua de dos variables aleatorias es una antidad que mide la dependenia
mutua delasvariables.
Estaserá nuestraMOM y se alulaen funión dela expresión2.1:
I
(
Y, Z
) =
X
y,z
P
Y,Z
(
y, z
)
·
log
P
Y,Z
(
y, z
)
P
Y
(
y
)
·
P
Z
(
z
)
(2.1)donde
P
Y
(
y
)
yP
Y
(
z
)
son las funiones demasa de probabilidad marginal yP
Y,Z
(
y, z
)
es lafunión de masa deprobabilidad ondiionada.La MI esta relaionada on lasentropías omo sigue:
I
(
Y, Z
) =
H
(
Y
) +
H
(
Z
)
−
H
(
Y, Z
)
(2.2)siendo
H
(
Y, Z
)
la entropía onjunta yH
(
Y
)
yH
(
Z
)
lasentropías deY
yZ
respetivamente.La deniión deestas entropías es:H
(
Y
) =
−
X
y
P
Y
(
y
)
·
log
P
Y
(
y
)
,
H
(
Z
) =
−
X
z
P
Z
(
z
)
·
log
P
Z
(
z
)
(2.3)H
(
Y, Z
) =
−
X
y,z
P
Y,Z
(
y, z
)
·
log
P
Y,Z
(
y, z
)
(2.4)Para alularlas probabilidades, debemos utilizar el histograma onjunto
del pardeimágenes
h
.EstesedeneomounafunióndedosvariablesY
yZ
on laintensidad degrises delasdos imágenesomopodemosverenlaguraFigura2.2:Elaboraióndelhistograma
2.2. Su valor en la oordenada
(
Y, Z
)
esel numero de pares orrespondientes teniendo nivel degrisesY
en la primera imagen y nivel de grisesZ
en la se-gunda. Lafuniónonjuntademasadeprobabilidad seobtienenormalizandoel histograma onjuntodel par deimágenes:
P
Y,Z
(
y, z
) =
h
(
y, z
)
P
y,z
h
(
y, z
)
(2.5)P
Y
(
y
) =
X
z
P
Y,Z
(
y, z
)
,
P
Z
(
z
) =
X
y
P
Y,Z
(
y, z
)
(2.6)ElregistrodeimágenesutilizandolaMI establee queun par deimágenes
estánalineadassegúnunatransformaióngeométria
T
uandoI
(
Y
(
x
)
, Z
(
T
(
x
)))
es máxima. Por lo tanto debemos busar la transformaiónT
que maximieI
.2.3. Optimizaiones a los algoritmos
Dos estrategias empleadas para favoreer la onvergenia propuestas por
Alberto FerreríaBlano en [Bla07℄ son:
1. Para alular la funión de masa onjunta
P
Y,Z
(
y, z
)
lo que haemos es dividir ada valorh
(
y, z
)
entre el sumatorio del histograma, omo se muestraenlaeuaión 2.5yaontinuaiónseredueparaalularP
Y
yP
Z
.P
y,z
h
(
y, z
)
eseltamañodel área solapada.Lamejora propuesta es envezdeusarestevalor,usareltamañodelasimágenesparanormalizarde maneraque laseuaión quedaría:
P
Y,Z
(
y, z
) =
h
(
y, z
)
ancho
(
Y
)
·
alto
(
Y
)
(2.7)Deestamanerauantomenorseaeláreasolapadamenoresseránlas
pro-babilidades en omparaiónon el resultado de no apliar esta mejora.
Con este ambio estamos penalizando a aquellas soluiones que tienen
un área de solapamiento pequeño on el objetivo de evitar asos
dege-nerados en los que la apariión de nubes en los bordes puede resultar
problemátia, ya que la poblaión tendería en ese aso a enajar zonas
y obtendría un valor de MI elevado.
2. El uso ada un ierto número degeneraiones deuna estrategia de
má-xima pendiente, esto es, intentar adivinar que direión debería tomar
el mejorindividuopara inrementarsuMI. El proedimiento es,ada 5
generaionestomamosalmejorindividuo. Calulamoselgradientedela
funión
I
(
Y
T
, Z
)
,dondeY
T
representa la imagen Y transformada según los valores del individuo, siendo ada omponente del gradiente laderi-vadaparialenada uno delosparámetros delatransformaión,loque
nos daladireión (teória)demayorreimientodela MI:
∇
I
(
Y
T
, Z
)
. Generamos un nuevo individuo sumándole esa antidad al mejorindi-viduo y lo evaluamos. Si es mejor, entones sustituye al que era mejor
individuo de nuestra poblaión. Si no, es desehado. De esta manera
onseguimosguiarlabúsquedahaiazonasdondedeberíaenontrarseel
máximo.
Para laimplementaióndeestas mejorasreamostres versionesdela
apli-aión, una primeraque noinluye ninguna mejora, una segundaque inluye
la mejora 1, y una últimaque inluye lasmejoras 1 y 2.
2.4. Desripión de Implementaión CPU
Enestaseiónvamosamostrardiagramas deujoy elpseudoódigo que
2.4.1. Algoritmo de Evoluión Diferenial
A ontinuaión mostramosel ujo de ejeuiónde la DE en la gura 2.3,
juntoon su pseudoódigo, algoritmo 2,según esta desrito enla seión2.1.
Algorithm 2 Algoritmode Evoluión Diferenial
for
i
= 0
totamP oblacion
doCrear
_Individuo
()
Calcular
_M I
_Individuo
()
end forfor
i
= 0
tonumGeneraciones
doCalcular
_Siguiente
_Generacion
()
{Detalladomasadelante} end forEn detalle, ada nueva generaión se alula omo se india gráamente
en lagura 2.4, aompañada desu pseudoódigo (algoritmo 3).
Algorithm 3 Nuevageneraión
for
i
= 0
totamP oblacion
do{Para ada individuo dela Poblaion}
Generar
_Individuos
_Aleatorios
()
X
=
poblacin
[
i
]
candidato
=
poblacin
[
i
]
mutar
(
candidato, individuos
_aleatorios
)
Calcular
_M I
(
candidato
)
ifcandidato.M I > X.M I
thenX
=
candidato
endif{Nosquedamos on elque tenga mejorMI}
2.4.2. Cálulo de la MI
Figura2.5:ImplementaióndelálulodelaMIenCPU
ImplementarlainformaiónmutuasobreCPUonsisteúniamenteen
apli-ar las fórmulas desritas en 2.2 omo puede omprobarse en la gura 2.5,
aompañado del algoritmo 4. Como optimizaión hemos deidido
preompu-tarendistintasmatrieslosvaloresde
P
Y
,P
Z
yP
Y,Z
asíomoH
Y
,H
Z
yH
Y,Z
on eln dereutilizar ómputos.Algorithm 4 Calulode laMI
Creacion
_Histograma
_Conjunto
()
{Detallado masadelante}N ormalizacion
_Histograma
_Conjunto
()
{Calulo deP
Y
,P
Z
yP
Y,Z
}Calculo
_Entropias
()
{Calulo deH
Y
,H
Z
yH
Y,Z
}M I
=
Entropia
_de
_Y
+
Entropia
_de
_Z
−
Entropia
_Conjunta
_Y
_Z
{Obtenemos asíla MI deun individuo}El funionamiento del alulodel Histogramase muestra enla gura 2.6,
y elpseudoódigo puedeverse en 5
Algorithm 5 Cálulodel Histograma
for
i
= 0
totamao
_imagen
doi
_transf ormada
=T
·
i
ImA
=
V alor
_De
_Gris
(
ImagenA, i
)
ImB
=
V alor
_De
_Gris
(
ImagenB, i
_transf ormada
)
Histograma
[
ImA, ImB
] + +
end for
2.5. Resultados obtenidos
EnestaseiónvamosaanalizarlosresultadosobtenidosenCPU.Primero
haremos una somera desripión de la plataforma experimental usada y los
datos de entrada. Después presentaremos tablas que muestran los resultados
de la ejeuión del programa. A ontinuaión analizaremos qué número de
generaiones y deindividuos neesita la evoluión diferenial para garantizar
que enontrará buenassoluiones.Y para terminarmostraremoslastablas de
tiemposobtenidasparavariasejeuionesdelalgoritmoondiferentesdatosde
entradaytamañosdehistograma.Másadelante,enlaseión4.4mostraremos
los tiempos obtenidos en laejeuión enGPU, y en elapítulo 5se hae una
omparativay un análisis delostiemposen ambas plataformas.
2.5.1. Plataformas de ejeuión
LasejeuionessehanllevadoaabosobreproesadoresIntel,latabla 2.1
desribelosaspetosprinipalesdelaplataformaexperimental.Las
implemen-taioneshansidoompiladasutilizandoGNU-C/C++ompiler(version4.1.2,
on los ags de optimizaión -O3 -msse). Además, la implementaión en ha
un mayorrendimiento.
Tabla 2.1:DesripiónténiadelaCPU
Caraterístias Core 2Duo
Año 2006 FSB 1066MHz ICaheL1 32KB DCaheL1 32KB L2Cahe 4Mompartida Memoria 2GB Reloj 2.4GHz 2.5.2. Imágenes de prueba
Paralaspruebashansidoutilidadasimágenessintétiasdetamaños128x128,
256x256,512x512,1024x1024y2048x2048extraídasdeunafotografíatomada
on unsatélitealtelesopioIkonosdePuertoRioeimágeneshiperespetrales
de lossensores Ali eHyperion.
2.5.3. Resultados on imágenes sintétias
Las tablas 2.2 y 2.3 reogen los resultados obtenidos de promediar 5
ejeuiones del algoritmo para distintos tamaños de poblaión y número de
generaiones deevoluión dedihas poblaiones.
Hayquetenerenuentaqueelhehodeapliarlanormalizaiónmejorada
hae que elvalor dela informaión mutua sereduza, enfunión del tamaño
del área solapada. En este aso la informaión mutua máxima es, alulada
on la normalizaión 'tradiional' 2.3619, y para la normalizaión mejorada
1.8177. Vemos omo el valor máximo se onsigue para 300 generaiones on
200 generaiones
Mejora 100individuos 150 individuos 200 individuos
Sinmejoras 2.3564 2.3603 1.9063
Normalizaion 1.8172 1.8171 1.7988
Normalizaion+Gradiente 1.6322 1.2383 1.7957
250 generaiones
Mejora 100individuos 150 individuos 200 individuos
Sinmejoras 1.4189 1.4866 2.361
Normalizaion 1.8175 1.8176 1.8174
Normalizaion+Gradiente 1.8176 1.8176 1.8176
300 generaiones
Mejora 100individuos 150 individuos 200 individuos
Sinmejoras 2.3619 2.3619 2.3619
Normalizaion 1.8176 1.8177 1.8177
Normalizaion+Gradiente 1.8177 1.8176 1.8177
Tabla2.2:Informaiónmutuamáximaobtenidatras200,250 y300 generaiones
0
0.5
1
1.5
2
2.5
0
20 40 60 80 100 120 140 160 180 200
Informacion mutua
Generaciones
valor medio
valor maximo
0.4
0.6
0.8
1
1.2
1.4
1.6
1.8
2
0
20 40 60 80 100 120 140 160 180 200
Informacion mutua
Generaciones
valor medio
valor maximo
Figura 2.7:MI media y máxima para lasversiones: sin mejoras y on la normalizaión
mejoradaon imágenessintétias.
Lasguras 2.7y 2.8muestranlasgráasdelainformaiónmutuamedia
y máximapara la onvergeniamásrápida deada una de lasversiones.
2.5.4. Número de generaiones
Elnúmerodegeneraionesdurantelasquevaaevoluionaruna poblaión
nosindiauantovamosaanarlasoluión,estoes,onunnumerodemasiado
200 generaiones
Mejora 100individuos 150 individuos 200 individuos
Sinmejoras 200 192 200
Normalizaion 180 184 200
Normalizaion+Gradiente 200 200 200
250 generaiones
Mejora 100individuos 150 individuos 200 individuos
Sinmejoras 250 250 233
Normalizaion 218 207 221
Normalizaion+Gradiente 189 207 195
300 generaiones
Mejora 100individuos 150 individuos 200 individuos
Sinmejoras 227 212 202
Normalizaion 250 191 208
Normalizaion+Gradiente 194 235 204
Tabla2.3:Generaiondeonvergeniaontope200,250 y300generaiones
aerarán losuiente.A medidaqueaumentamoselnúmero degeneraiones
losindividuossevanrenando,hastaquellegaunpuntoenelquesinimportar
uanto másaumentemos el numero degeneraiones los individuos no pueden
mejorar, y es esepunto elque debemos estimar.
Viendo los datos de la tabla 2.2, ese punto lo podemos estimar en 250
generaiones, ya que para este valor, se onsiguen resultados máximos para
lasversionesmejoradas.Enel asodelaversion sinmejoras habríaquellegar
a las 300 generaiones.
Sibajamosel numero degeneraiones de250 nos arriesgamosa no
onse-guir una soluión omo vemos que pasa en la tabla 2.2, para el aso de 200
generaiones on las dos mejoras, que on 100 y 150 individuos obtiene
re-sultados demasiado bajos o el el resultado de 250 generaiones en la versión
sin mejoras que tiene dos malos resultados. Elevarlo por enima de 350 va a
0.4
0.6
0.8
1
1.2
1.4
1.6
1.8
2
0
20 40 60 80 100 120 140 160 180 200
Informacion mutua
Generaciones
valor medio
valor maximo
Figura 2.8:MI mediay máximapara laversión on lanormalizaiónmejorada yel uso
delgradienteon imágenessintétias.
2.5.5. Tamaño de la poblaión
El tamañodepoblaión nos determina la variabilidad on la quevamos a
ontar, uantosmásindividuos tenganuestrapoblaiónmásexhaustivamente
busaremos ennuestroespaio. Sitenemosun numeropequeño deindividuos
busaremos en entornos reduidos, o repartidos de manera dispersa por el
espaio de búsqueda, si, en ambio, tenemos un numero demasiado grande,
laszonas debúsquedasesolaparán,loquequiere deirque busaremosvarias
veesenelmismositio,quedenuevoesdesperdiiarreursos.Poresodebemos
estudiar ual es elrango detamaño ideal para una poblaión.
Observandolageneraiónenlaquehaonvergidoelalgoritmo,entendiendo
omo momentodeonvergeniaaquelenelqueladistania entreelindividuo
másaptodelapoblaiónylamediaesmenordel1%,mostradaenlatabla2.3,
ya que para sólo 100 individuos se suele alanzar elmáximo de generaiones,
loqueindiaqueelindividuonohaonvergido,ohaonvergidoaunmáximo
loal.
Si usásemos menos de 150 individuos, puede que ninguno ontuviese una
buena soluión en su entorno, y por tanto se estanarían en máximos
loa-les omo podemos apreiar en la tabla 2.2-250 generaiones, en el aso de la
versión sin mejoras para 100 y 150 individuos, que apesar devivir 250
gene-raioneslosresultadosson bastantepobres. Sitenemosmásindividuosde350
las zonas se solaparán y nuestra soluión no mejorará, ya que vemos que en
los asos en los que tenemos al menos 250 generaiones, on este número de
individuos es suiente.
En el aso de elegir que una poblaión tenga una vida de 200
generaio-nes, habríaque aumentarelnúmerode individuos, pues tienen muho menos
tiempo para mezlarse, y por lo tanto hay que dotar a la poblaión de una
mayor variabilidad.
2.5.6. Mejoras a la onvergenia
Para estudiarlasventajasdelas mejorasnos jaremos enlasguras2.7y
2.8. Podemosverómolaversiónsinmejorastieneun asensomássuavizado,
esto esdebidoaquehay individuosquesebeneiandequelazonadesolape
es demasiado pequeña ysi son similareselresultado deMI es alto pero todos
sus hijostenderán atener una mala MI porlo queel progresoes máslento.
Enambio enelaso delanormalizaiónmejoradavemosomo se
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
0
100
200
300
400
500
600
Informacion mutua
Generaciones
valor medio
valor maximo
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
0
100
200
300
400
500
600
Informacion mutua
Generaciones
valor medio
valor maximo
Figura 2.9:MI mediaymáximaparalasversioneson lanormalizaiónmejorada yon
lanormalizaiónmejoradayelusodelgradiente,onimágenesreales.
quedadounindividuo,uandosegeneresuhijo,siestetieneun menorsolape,
deberá sermuhomás pareido para ser aeptado, esto hae que sedesehen
varias mutaiones antes deaeptaruna, por esose tienenvarias generaiones
sin apenas mejora, y repentinamentehay un salto.
Enelasodel usodel gradientesepuedeverómoenlasgeneraiones125,
140 y 155 podemos apreiar un salto signiativo, produido probablemente
porel uso del gradiente.
A ontinuaión mostramosun estudio simpliado realizado on las
imá-genes realesdeAlieHyperion parauna poblaiónon 400 individuosdurante
600 generaiones.
2.5.7. Resultados on imágenes reales
Habiendorealizadotres ejeuioneson adaniveldemejorallegamosala
onlusión de que no tiene sentido la ejeuión sin mejoras, pues en ninguno
de los asos dio soluión, ni siquiera aproximada, por lo que la disusión se
del gradiente(nivel2).
Lamedia delasMI obtenidaspara el aso del nivel 1es 0,921094333,y el
máximo es 0.921146. En el aso del nivel 2 de mejora, la media obtenida es,
0,921089333 y el máximoestá en0.921198.
Para estudiarlageneraión de onvergenia tomaremosdos riterios
1. Elalgoritmoonvergeuandoelvalormáximosupera almedioenmenos
de un 1%.En este asolas generaionesdeonvergeniason, enmedia,
para el nivel 1:509, nivel2: 516.667.
2. Elalgoritmoonvergeuandoelvalormáximodistadel máximonalen
menos deun 1%.Eneste aso lasgeneraiones deonvergeniason, en
media, para el nivel1: 447.333,nivel2: 442.
Adoptarestos dos riterioses neesario porque eluso del gradiente puede
verse en ierta maneraomo 'antionvergenia' porque seinrementael valor
deMIúniamentedelindividuoonMImáxima,loualareentaladistania
que va en ontra del primer riterio, en ambio vemos omo on el segundo
riteriosísenotaiertamejoría,yyaqueentodaslasejeuionesseenuentra
un valor nal aeptable el riterioes apliable.
2.5.8. Tiempos obtenidos
Las ejeuiones test han sido llevadas a abo durante 200 generaiones
para 100 individuos que son suientes para que seobtenga una soluiónon
imágenessintétias.Lostiemposdeejeuiónparaejeuionesonun tamaño
dehistogramajo,256 olores,paraimágenessintétiasde128x128,256x256,
Tamaño de imagen 128x128 256x256 512x512 1024x1024 2048x2048
Tiempo de ejeuión 27.1183 75.1726 295.887 1136.72 4617.41
Tabla2.4:Tiempos medios de 5 ejeuiones para un tamaño de histograma 256 sobre
CPU paraunapoblaiónde100 individuosdurante200generaiones
0
500
1000
1500
2000
2500
3000
3500
4000
4500
5000
2048
2
1024
2
512
2
256
2
Tiempo (s)
dimensiones de la imagen (pixels x pixels)
tiempos de CPU/GPU para dimensiones de histograma fija (256x256)
Tiempo CPU
Figura2.10:Tiemposdeejeuiónparatamañodehistograma jo
En esta tabla podemos ver omo el tiempo ree de manera
aproximada-mente uadrátia on el anho de la imagen, es deir, es lineal en el número
de píxeles de ada imagen, omo abría esperar. Esto se apreia mejor en la
gura 2.10.
Tamaño de histograma 128 256 512 1024 2048
Tiempode ejeuión 61.648 75.1726 108.872 266.878 943.524
Tabla2.5:Tiempos medios de 5 ejeuiones para un tamaño de histograma 256 sobre
CPU paraunapoblaiónde100 individuosdurante200generaiones
En la tabla 2.5 podemos ver los tiempos que han tardado las
0
100
200
300
400
500
600
700
800
900
1000
2048
2
1024
2
512
2
256
2
Tiempo (s)
dimensiones del histograma (# colores
2
)
Tiempo CPU
Figura2.11:Tiemposdeejeuiónparatamañodeimagenjo
0
500
1000
1500
2000
2500
3000
3500
4000
4500
5000
2048
2
1024
2
512
2
256
2
Tiempo (s)
dimensiones del histograma|imagen (# colores
2
/pixels
2
)
Dims imagen fijas CPU
Dims histograma fijas CPU
puedeverqueelreimientodeltiempoesmuhomáslentoqueenelaso
an-terior,esdeirqueaunqueaumentemoseltamañodelhistogramaenlamisma
proporión que el tamaño de imagen, el inremento del tiempo de ómputo
neesario es menor. Es más fail de apreiar en las guras 2.11 y 2.12 donde
podemos verlas dos urvas y ómo la que se reerea la variaión enfunión
Arquitetura de la GPU
GPUsonlassiglasdeGraphiProessingUnit oUnidad deProesamiento
Gráo [PF05℄. El término fue introduido por la ompañía NVIDIA para
designar el nuevo tipo de hardware que venía sustituyendo las tradiionales
ontroladoras demonitores VGA. Como vimos en la seión 1.4.1, estos
pro-esadores fueron diseñados para aliviar la arga detrabajo delas CPUs.
Unaprimeraaproximaiónentrelasarquiteturas GPUyCPUresultadel
estudiodelasinstruionesqueoperansobremúltiplesdatosalmismotiempo
(single instrution on multiple data, SIMD). Para poder operar
simultánea-mente neesitan ejeutarsesobre una ALU espeial que permita tratar datos
en paralelo. LasinstruionesSIMD sesoportan porelhardware
diretamen-te. Enun prinipio, naieronpara aeleraralgunosalgoritmos quepreisaban
ejeuiones sobre paquetes de datos tales omo vetores o matries y es por
ello quenoes deextrañar quelos primerosproesadoresenimplementareste
onjunto deinstruiones fuesen llamadosproesadoresvetoriales.
Figura 3.1:Comparaióndepotenia(enGIGAFLOPS)entreCPUsyGPUs
laseión3.2,losmódulosmásimportantesdeunaGPUnosonmásqueALUs
espeializadas enun onjuntodeterminadodeoperaiones que tienenque ver
on la transformaión de gráos tridimensionales. Estos módulos poseen un
onjunto de instruiones SIMD orientadas a tales propósitos. Además, para
aelerar todavía más su potenialde álulo, una GPU utiliza estos módulos
en paralelo, ompartiendouna memoria omún.
A lo largo de su evoluión, las GPUs se han aprovehado de las mejoras
téniasenfabriaióndeomponentesparaabaratarsuosteyhansido
fuer-temente inueniadas por la evoluión de dos APIs importantes, OpenGL y
Mirosoft DiretX.Comomuestralagura3.1,lapoteniabrutadelasGPUs
supera on rees la de los proesadores más modernos y ada generaión
Figura 3.2:Distintasetapasdelrenderizado
3.1. El pipeline gráo
LosingenierosdeSilion Graphis,on suAPIOpenGL,fueron los
prime-rosenestableerelonjuntodeetapasneesariasparainterpretarunonjunto
de vérties tridimensionales omo una imagen bidimensional. Como se
obser-va en la gura 3.2, el proeso general puede resumirse en: transformaión de
vérties, ensamblado de los mismos en primitivas, disretizaión en píxeles,
oloreado de adauno de ellos y mezlaarealizar on elontenidode
memo-ria,normalmentealgunaoperaióndereemplazo [PF05℄.Alaimplementaión
deestasetapasselaonoeporelnombredegraphipipelineotuberíagráa
puesto que losresultados de una etapa alimentan lasiguienteomo si deuna
serie detuberías enadena setratara.
Partiendo dela gura3.2expliaremos las distintas etapas del pipeline.
La primera informaión que reibe una GPU desde el software es la lista
de vérties que onformanlos distintos objetos tridimensionales. Estos
vérti-es son proesados enelproesadordevérties(vertex proessor).Aquí,ada
uno de ellos es transformado desde su posiión iniial hasta el espaio de
vi-sualizaión y oloreado teniendo en uenta una serie defatores omo son las
posiionesrelativas deobjeto, ámaray lues. Comoada vértiees
Figura3.3: Esquemadetrabajodeunproesadordevérties
al mismo tiempo pordistintosproesadoresenparalelo. LasAPIs OpenGL y
DiretX ofreían distintos efetos omo el onoido ojo de pez y otros. Cada
unodeellospodíaonseguirseongurandoapropiadamentelaAPIparaluego
transformar onseuentementelos vérties haiéndolos atravesar una ruta de
ejeuión distinta a la lásia. Así pues, los nitos efetos soportados por las
APIs suponíanlos nitos modos deejeuión delos proesadoresdevérties.
La gura 3.3 muestra el ujo de trabajo de los proesadores de vérties
Detalladamente, primero, el proesador opia los atributos del vértie en
una memoriade sólo letura. A ontinuaión deodia lainstruión, lee de
los registrostemporales,proyeta losregistrossobre lasentradas oportunasy
ejeuta lainstruión. Los resultados intermedios pueden esribirse enlos
re-gistrostemporalesytambiénesposibleesribirenlosregistros(sóloesritura)
de salida. Una vez nalizado el proeso, este se repite hasta onsumir todas
las instruiones.Elproesose repiteuna vezporvértiey generaun ujode
datos de salida que alimentarán laentrada de la siguiente fase. Por tanto, la
salida ontendrá losvérties transformados ademásdeotros atributos.
El proesador de vérties tiene apaidad para manipular operandos en
formadevetoresymatries,normalmenteonelementosenomaotanteon
preisión simple.Debidoaquegranpartedesulaborestransformarelespaio
deoordenadas,lasinstruionestípiasontempladassonprodutosesalares
y vetoriales; suma y multipliaión de matries y operaiones ombinadas
omo multipliaióny adiión.
Los vérties transformados de la etapa anterior pasan al ensamblador de
geometría yalrasterizador.Elprimerodeterminalasprimitivasformadaspor
los vérties dela etapa anterior onforme lo indiquenlas reglas de
ensambla-do que aompañan a los mismos. Además desarta aquellos vérties que no
podremosver debidoa quese sitúanfuera del espaiode visualizaión atual
(lipping).Porotraparte,elrasterizadordeterminaquépíxeles(susposiiones
nales en el framebuer) van a ser ubiertos por ada una de las primitivas
generadas en el ensamblador de geometría, qué aras de los mismos deben
dibujarse y uales no, para ello hade transformarlas oordenadas del maro
denomina ulling 1
.El rasterizadoremite entones una listaon lospíxeles de
pantalla que van a ser ubiertos aompañándolos de informaión extra sobre
ese punto.A la sumapíxel másinformaión se ladenomina fragmento.
Figura3.4:Esquemadetrabajodeunproesador defragmentos
Entones, ada fragmento alanza el proesador de fragmentos (fragment
proessor)queesotraunidaddeproesamientoparalelolaualtansólo
deter-minaráelolornaldeadafragmentoproyetandosobreellosalgunatextura,
lo que determinaráel olor nal del pixel.
1
Comoenelasodelosproesadoresdevérties,adaAPI ofreíaaquí
dis-tintosefetosquepodíanonseguirsemedianterutasdeejeuiónalternativas.
Elproesodeejeuiónnoesmuydiferentealdelproesadordevérties.El
onjuntodefunionesesesenialmenteelmismoonlasextensionesneesarias
para utilizar texturas. La gura 3.4 presenta el esquema de trabajo de estos
proesadores.
Paree lógio pensar que en una tarjeta haya más proesadores de
frag-mentos que de vérties, pues las primitivas omo los triángulos tienen sólo 3
vérties pero pueden llegar a generar gran antidad de fragmentos, de 100 a
1000 vees más. De heho, así ha venido ourriendo a lo largo de estos años
para ambiar radialmente ahora, on las llegada de la nueva generaión de
tarjetas.
Paraterminar,lospíxelespasaránunaseriedetestpropiosdeadaAPIque
permitirándeidirsihandedibujarseonopudiendoatualizardeestamanera
el espaio de dibujo o framebuer. Por último se apliará una operaión de
fundido(blending)quedeidiráomohademezlarseelfragmentoonelpixel
ya existente.
3.2. Evoluión tenológia de los proesadores
gráos
A lo largo de los años, pueden distinguirse ino generaiones de GPUs
desde lasprimerasontroladorasCRThastanuestrosdías.Enloquea
mantuvo esenialmente invariable hasta la quinta. Sin embargo, es la uarta
generaión la más amplia y versátil y la que sentaría las bases de una nueva
forma deentender elrenderizado degráos 3D.
3.2.1. Primera generaión
LasprimerasGPUomolaTNT2deNVIDIA,laATIRageola3dfxV
oo-doo3permitíanrealizartodaslasetapasenlaGPUexeptolatransformaión
devértiesysuensamblado.Lastransformaionessemodelanmediante
matri-es 4x4y modian losvértiesmediante suesivasmultipliaiones porestas
matries,porellogranpartedelaargamatemátiaseguíaejeutándosesobre
la CPU. Además implementaban el onjunto de araterístias de la API de
Mirosoft DiretX 6 por lo que soportaban efetos de niebla, ompresión de
texturas, estados demezla, et.
3.2.2. Segunda generaión
La segunda generaión omprende los modelos NVIDIA GeFore 256 y
GeFore2, ATI 7500 y S3Savage3. Implementaban alompleto el proeso de
renderizaiónontandoonalgunasoperaiones detransformaióndevérties
rápidas. Posteriormente, on las nuevas versiones de OpenGL y DiretX 7,
se añadieron algunos efetos omo los mapas úbios de textura (ube map
textures) olas operaiones matemátiason signo.
Como abía esperar, el hardware implementa elmente ada una de las
etapas del pipeline distinguiéndose asi losmismos bloques.
Figura3.5:Pipelineestándardesegundageneraión
son los primeros pasos haia su programaión. Sin embargo, tendremos que
esperar ala tererageneraión deGPU para advertireste ambio.
3.2.3. Terera generaión
Camino de la programaión total, la terera generaión de GPU
(mo-delos GeFore3/4, Xbox y Radeon 8500) es onsiderada transitoria puesto
que permitía úniamente la programaión de los proesadores de vérties
pero no la de los proesadores de fragmentos. DiretX 8 y las extensiones
ARB_vertex_program de OpenGL permitan ditar una serie de órdenes al
proesador de vérties pero las extensiones para píxeles de ambas APIs no
eran másqueopiones de onguraiónalgo avanzadas.
3.2.4. Cuarta generaión
Por n, la uarta generaión de CPU formada por la series GeFore FX
Figura 3.6:Pipelineprogramabledeuartageneraión
y fragmentosprogramables.Este heho favoreió laapariión delenguajes de
programaión espeíos omo GLSL, HLSL, Cg, et. En el ontexto de la
industria del videojuego, a los programas esritos bajo estos lenguajes se los
onoe omo sombreadores (shaders);al vertexproessor omo vertex shader
unit y al fragment proessor omo pixel shader unit. De la misma manera, a
los lenguajes de programaión se los llama lenguajes de sombreado (shading
languages).
3.2.5. Haia la quinta generaión
Laevoluiónmásreienteseprodujoonlallegada,enNoviembrede2006,
del hip G80 y la serie GeFore 8800 de NVIDIA. Atualmente ATI uenta
también on sus propiasGPU de nuevageneraión, la serie 2900 XT.
Probablemente,estageneraióndetarjetassuponganlasegundatransiión
evolutivaporintroduir un nuevomodelo deejeuión.Laquinta generaión,
supo-Figura 3.7:Rendimientodeunaesenasobreunaarquitetura deshadersnouniada
ne la reinvenión del pipeline gráo. Aunque oneptualmente el proeso se
mantiene invariable,lanuevatenología unialosoneptosdeproesadores
programables integrando en las mismas unidades las funionalidades de los
antiguos vertex y fragment proessors. Ahora, la salida de una etapa
reali-mentadenuevolosmismosproesadoresqueejeutaránlasiguienteetapadel
pipeline.
La gura 3.7 reeja dos modelos de distribuión de arga sobre las GPU
Figura3.8:Rendimientodeunaesenasobreunaarquiteturadeshadersuniada
poligonaióndelobjetoyenlaotra,laargasobreelproesadordefragmentos
debidoalosefetossobrelasuperieoeánia.Enamboselrendimientototal
de lasunidades deáluloes del 50% mientras que sinembargo,ada una de
ellas saturarespetivamente losproesadoresde vérties y fragmentos.
Haiendouso de latenología esposible aprovehar hasta elúltimo delos
3.3. Conlusiones
GraiasalasGPUsyasusmódulosprogramablesontamosonuna
plata-formaversátilapazdeexplotardiversasformasdeparalelismo.Elparalelismo
de tares, nos servirá en el Capítulo 4 para ejeutar programas distintos que
implementenetapasdelproblemadistintasalmismotiempo.Además,algunos
problemas omo los que estudiaremos a ontinuaión proesan grandes
an-tidades de datos independientes unos de otros y esta naturaleza enaja a la
perfeiónonelmodelodeproesamientodelosfragmentyvertexproessors.
Porúltimo,omoseindióalomienzodeesteapítulo,latenologíaSIMD
onereaestasunidadesunapoteniamuyelevadaalahoradetratarvetores
omatries.Yomoveremos,estasonstruionessepresentanmuyamenudo
en elámbitodel registrode imágenes.
Por tanto,en elpróximoapítulo trataremos deaprovehar las
araterís-tias delasGPUsparaelálulodepropósito generalintroduiendoun nuevo
Registro de imágenes en GPU
Hablamosenelapítulo1delaGPGPUomounparadigma.Sinembargo,
para lograr GPGPU son neesarias una serie de ténias que permitan
apro-vehar las araterístias de las GPUs omo proesadores de ujo. Una vez
onoidas estas ténias,el desarrolladorenapsulará lautilidad de latarjeta
gráa en un framework 1
on el que trabajar más ómodamente,
ofreien-do una visión más general del hardware, más orientada haia el modelo de
proesamiento deujos quedesribiremos enla seión4.1.
4.1. El modelo de proesamiento de ujos
En programaión de algoritmos podemos enontrar en muhas oasiones
onstruiones del tipo indiado en el algoritmo 6 que pueden reesribirse
utilizando otra onstruión más abstrata omo la del listado 7. Si además
1
En programaión,unframeworkesunaestruturabásiadóndepuedenresolverse
pro-blemasomplejos.Normalmenteaportanlaseso libreríasparaenapsularfunionalidades
sabemosqueelómputodeadaindividuoenelonjuntodedatosnodepende
deotrosindividuos delmismoonjunto,odihodeotramanera,sielordenen
el que reorramos la oleión no importa en absoluto, podríamossimpliar
más aun el algoritmo esribiendo algo omo lo mostrado en el pseudoódigo
8.
Algorithm 6 Proesamientode losdatos deuna oleión
for
i
= 1
ton
do forj
= 1
tom
dovalor
[
i
][
j
] :=
F uncionDeInteres
(
i, j
)
endfor
end for
Algorithm 7 Proesamiento de todos los datos de una oleión mediante
bule genério
for all
d
indatos
doF uncionDeInteres
(
d
)
end for
Algorithm 8 Proesamientoen paralelodelos datos deuna oleión
AplicarF uncionADatos
(
datos, F uncionDeInteres
)
La funión
AplicarF uncionADatos
(
conjuntoDatos, f
)
apliaf
a ada uno deloselementosdeconjuntoDatos
enparalelo. Presentamosdeesta ma-nera un nuevo modelo de proesamiento de datos basado en la apliaión deun programa,llamado(kernel)enla terminologíadeproesamientodeujos,
a todos loselementos dentro deuna oleión o ujo,llamado (stream).
La salida será pues otro ujo de datos que podría alimentar etapas
pos-teriores omo reeja la gura 4.1. A todo ello se lo onoe omo modelo de
ujosy launidadapaz deejeutar un programadeestas araterístiassela
4.1.1. Gathering y sattering
Por su omportamiento, los algoritmos pueden lasiarse en algoritmos
de dispersión (sattering)y aumulaión(gathering) [PF05℄.
Al sattering se le onoe también omo esritura indireta omo puede
apreiarse en laeuaión 4.1y onsisteenalular laposiión deesrituraen
funión de aquello que vamos aesribir.
i
=
f
(
x
)
a
[
i
] =
x
(4.1)El gathering, por ontra, onoido también omo letura indireta (tal y
omo vemos enlaexpresión 4.2) supone onoerlos valores origenenfunión
de laposiiónde esritura.
a
[
x
] =
f
(
v1, ..., v
n
)
dondev
i
=
f
i
(
x
)
(4.2)4.1.2. El modelo de ujos en la GPU
Reordamos del apítulo 3 que una GPU opera sobre un onjunto de
vér-ties de entrada apliando varios programas a lo largo del pipeline gráo.
Este modelodeejeuión seorresponde on modelodeujosreién desrito.
Así, tenemos dos onjuntos de stream proessors, los vertex proessors y los
fragmentproessors;un ujodedatos independientesentresiatravesandolos
mismos, los streams de vérties; y unos shaders que apliar sobre los datos,
los kernels.
Como los vertex proessors pueden variar la posiión de esritura dentro
modernaspermitenaesoalastexturasdesdelosvertexproessors,portanto
también puedenrealizaroperaiones degathering. Porotrolado,losfragment
proessors no pueden alterar la posiión de esritura, porque la posiión ya
ha sido alulada por el rasterizador, sin embargo, al poder leer de textura
también soportan operaiones de gathering.
Para elsattering pormedio del vertex proessor onsideramos
a
omo el framebuer,x
omo un valor prealulado enfunión dela entrada ei
omo una posiión dentro del framebuer,que depende dela entrada.Paraelgatheringatravésdelfragmentproessortomaremos
a
omoel fra-mebuer,i
omounaposiiónpara esatexturayx
laposiióndel framebuer alulada porel rasterizador,yv
i
serán valores leídos deuna textura.Por último,para elgathering a travésdel vertexproessor tomaremos las
mismas onsideraionesquepara elgathering porpíxelproessoron laúnia
diferenia de que
x
puede no estar determinada de antemano, ya
es el ujo de salida. El proesador de vérties nos permite pues operaiones omo laexpresión 4.3.
x
=
a
[
i
];
o
[
j
] =
x
;
j
=
f
(
i
)
(4.3)4.1.3. Lenguaje de programaión
Hemos elegidoCg (Cfor graphis) dela ompañía NVIDIA omo
lengua-je de sombreado para programar los kernel. Este lenguaje al estilo C puede
ompilarse bajo distintosperles para luego serargado enlas unidades
Losperlesson una medidadela potenia del lenguaje y portanto,de la
potenianeesaria delaGPU [FK03℄.En nuestro asofue neesario emplear
el perl VP40 para proesadores de vérties y el perl más moderno que
soporte elhardwareparalosproesadoresdefragmentos.LaeleióndeVP40
es neesaria porque es el primer perl que permite haer letura de texturas
a los vertex proessor,que es algo neesario para realizarel histograma.
4.1.4. Streams y Texturas
Losujosdedatosquelleganhastalosproesadoresdevértiesy
fragmen-tossonoleionesdevetoresde4elementosqueodianlaspropiedadesde
los vérties: posiión, olor, normal... Las texturas 2
son análogosa los arrays
de hasta3 dimensionesdelaprogramaiónlásia. Enellos podemos
almae-nar losdatos deentraday los resultados intermedios de nuestro algoritmo.
Ademásdel ujoiniial deentrada,los proesadoresde vérties y de
frag-mentos emitenotros dos ujos que alimentan las etapas posterioresdel
pipe-line.
4.1.5. El rasterizador
Sepuede pensar enel rasterizadoromo elgenerador de losthreads
para-lelos, yaqueemite muhos másfragmentosqueontendrán atributos
interpo-lados a partir de los que poseían los vérties, generando los índies para una
textura-array.
Elrasterizadorpuedeemitirunaseriedeposiionesnointerpoladassisele
2
Unatexturanoesmásqueunaregióndememoriaalaquepodemosaederpormedio
enviaron puntos omo primitivas. O también puede interpolar los límites del
rango de una matriz para obtener los índies internos de la misma mediante
el envío de una primitiva quad 3
que tenga omo oordenadas las equinas de
la matriz.Puede verse en detalleen lagura 4.2
Figura4.2:Elrasterizador omoungeneradordeíndies
4.1.6. Retroalimentaión
Los uando un fragment proessor emite su salida, el framebuer omo
se indió en el apítulo anterior, este puede ser mostrado en pantalla o bien
esribirse a una textura (render to texture) enla memoriade la tarjeta. Este
meanismo resulta muy útil pues permite la realimentaión de los datos de
3
salida haiaelomienzodelpipeline derenderizadopara unaetapadeálulo
on esosdatos.
4.1.7. Memoria de vídeo
Cadaelementodelamemoriadevídeootéxel, tantoenlastexturas,omo
enelframebuer,esunauaternadeelementos,yaqueenunprinipiohasido
diseñada para odiar la informaión delos tres anales RGB y la
transpa-renia.Hemosdeididousarestaaraterístiaparaqueadatexelempaquete
uatroelementosdeunamismala,porloqueunamatrizdedimensiones
mxn
ouparámx
n
4
texels,ylaolumnai-ésimadetexelsempaquetarálasolumnas4
∗
i
,4
∗
i
+ 1
,4
∗
i
+ 2
y4
∗
i
+ 3
.4.2. Implementaión del modelo de
proesamien-to de ujos: el framework
Para eldesarrolladordeGPGPUlatarjeta gráahadepresentarseomo
un proesadordeujosy noomo unsistemaderenderizadodegráos
tridi-mensionales.Paraeste propósitopuededesarrollarseun frameworkqueoulte
la visión de aeleradora 3D y resalte los aspetos más importantes del
pro-esamientode ujos. Así, neesitamos alguna manerade argar los kernel en
los proesadores de ujo, de enviar un stream al omienzo del pipeline, de
reuperar el stream de salida y de omuniar parámetros a los kernel. Estos
han sido losobjetivosdenuestraimplementaión.
herramientas Cg Toolkit de NVIDIA. Cg Toolkit ofreeuna primera
abstra-ión del las extensiones de OpenGL que permiten la omuniaión on los
módulos programables. Sus araterístias más importantes inluyen el
ofre-er los tipos neesarios para enlazar variables del lenguaje on parámetros o
entradas de los kernels y ontar on su propio ompilador Cg en tiempo de
ejeuión. Elompilador entiempodeejeuión libera aldesarrollador de
te-ner que ompilar explíitamentepara el último perl de fragmentos, referido
en laseión 4.1puesto quees apaz dedeidirqué araterístiasde Cgson
soportadas por la GPU usada,y elegir elperl másavanzadoen el momento
de laompilaión.
4.3. Implementaión del registro de imágenes
El problema de registro de imágenes está onstituido prinipalmente por
labúsquedadelatransformaiónyporelálulodesuaptitudomovimosen
elapítulo2.Enelasodel algoritmodeevoluióndiferenial, laexisteniade
variablesaleatoriasyladependeniadeunosindividuosonotrosnopresentan
un buen esenario para suimplementaión sobre elmodelo de ujos.
Sin embargo,lavaloraión delaaptitud, esdeir, elálulodela
informa-ión mutua resultaun problema muhomáspropiio. Veamos por qué.
Dividiremos elproblema enel álulodel histogramay laobtenión de la