Algoritmes Biomètrics en l’Era de Computació Paral·lela

10/05/2013
Compartir!

Històricament, la indústria dels semiconductors ha estat capaç d'anar incrementant la velocitat de rellotge dels microprocessadors a mesura que s'anava doblant el nombre de transistors a cada nova generació. Malauradament, a causa de problemes relacionats amb el consum energètic, la majoria dels fabricants de microprocessadors van optar per abandonar aquesta estratègia i centrar-se en microprocessadors multinucli. Les GPU modernes van fins i tot més enllà que els microprocessadors i integren centenars de nuclis amb un consum energètic raonable. A causa d'aquest canvi en la indústria, les companyies de programari s'han vist forçades a adoptar els algoritmes tradicionals seqüencials que estaven dissenyats per ser executats en un únic nucli. Aquest treball de paral·lelització no és tan senzill com a priori pugui semblar. Per norma general, els humans estem acostumats a pensar les nostres accions de forma seqüencial. Series capaç de imaginar-te ràpidament centenars d'accions simultànies en paral·lel (algunes d'elles fins i tot amb interdependències)? La majoria de les ments més brillants del món i els programadors no són capaços d'això (i sembla raonable). En la nostra vida diària, tendim a atabalar-nos si hem de fer nou o deu coses importants al mateix temps. Sembla ser que el nostre cervell no està dissenyat per operar en mode multitasca. Com més tasques intentem fer en paral·lel (per exemple, contestar un correu electrònic mentre estiguem realitzant una trucada telefònica), més probable serà que cometem un error a causa d'haver prestat atenció insuficient. Aquesta és la raó per la qual programar codi escalable i paral·lel per a dispositius com les GPU és un procés llarg i tediós. Generalment, quan escrivim codi per a aquestes arquitectures sol ser problemàtic i complicat de depurar. No és complicat trobar-se en la situació d'haver de dedicar mesos programant codi paral·lel per a una operació particular de nucli la versió seqüencial podria programar-se i testejada en un parell de dies.

En aquesta nova era de computació paral·lela, si una empresa vol llançar al mercat un producte software que exploti al màxim totes les capacitats de l'últim software paral·lel disponible al mercat, sens dubte haurà d'invertir més diners i recursos dels que van ser requerits en el passat. Nosaltres, en Herta Security, vam començar a adoptar tècniques de paral·lelització des del principi en tots els nostres productes. A més, ràpidament ens vam adonar que els algoritmes biomètrics poden beneficiar-se de la paral·lelització de grau fi i de l'execució de computacions vectorials paral·leles. Tant és així, que múltiples etapes del pipeline biomètric tradicional com el procés d'extracció de característiques és inherentment paral·lel. No obstant això, la complexitat dels patrons d'accés a memòria d'algunes característiques biomètriques fan que les estratègies de reutilització de dades, caching i prefetching es converteixin en un autèntic repte a l'hora de implementar-les. Amb l'aparició de la computació en GPU, el programador ha de enfrontar-se a milions de fils de forma concurrent, sincronitzar, i aprofitar al màxim l'arquitectura heterogènia de les memòries cache d'aquests dispositius per reduir la latència tant com sigui possible. Encara que aquestes tasques siguin lentes i tedioses des del punt de vista de la recerca i el desenvolupament, ens permet a les companyies de software desenvolupar productes de bona qualitat que escalen correctament amb els últims avenços en maquinari. L'objectiu últim és proporcionar als clients una experiència d'usuari imbatible.