Algoritmos Biométricos na Era da Computação Paralela

10/05/2013
Compartir!

Tradicionalmente, a indústria de semicondutores foi capaz de aumentar a velocidade de processamento dos dispositivos computorizados, ao dobrarem o número de transístores em cada nova geração. Infelizmente, devido a restrições de energia, o aumento da frequência de relógio tem parado na última década e os maiores fabricantes de microprocessadores trocaram os seus portfólios de produtos para arquiteturas de diversos núcleos. Os GPUs modernos vão ainda mais longe e integram atualmente centenas de núcleos individuais com um fornecimento de energia razoável. Devido a este facto, as empresas de sofwares têm feito esforços para se adaptarem e para mapear os algoritmos sequenciais tracionais para a execução em série neste novos dispositivos. Esta tarefa de paralelização não é tão fácil como pode parecer. Em geral, os seres humanos tendem a pensar, de forma natural, as suas ações de forma sequencial. Será que é capaz de visualizar rapidamente centenas de ações simultâneas (algumas delas até com interdependências) de forma paralela? A maioria das melhores mentes e dos melhores programadores do mundo não o conseguem fazer. E isso é algo absolutamente razoável. Nas nossas vidas quotidianas, temos tendência de ficar sobrecarregado no trabalho, quando temos de lidar com nove ou dez coisas importantes ao mesmo em simultâneo. De forma mais simples, parece que o nosso cérebro não foi concebido para lidar com diversas questões em simultâneo. Quanto maior for o número de tarefas que tendemos fazer em paralelo (por exemplo, responder a um e-mail enquanto se faz um telefonema), maior é a probabilidade de acontecer um erro devido a atenção insuficiente. É por este motivo que a escrita otimizado de um código paralelo escalável que tem como alvo os dispositivos como GPUs é um processo longo e entediante. Escrever um código para estas arquiteturas é um ato propenso a erros e difícil de depurar. Não é pouco frequente que se passe meses a escrever um código paralelo eficiente para uma operação de kernel particular cuja versão serializada poderia ter sido facilmente produzida e testada num par de dias.

Nesta nova era da computação paralela, se uma empresa tem a pretensão de lançar um produto de software que consiga explorar totalmente as capacidades do mais recente hardware paralelo existente no mercado, terá garantidamente que investir mais dinheiro e recursos do que era necessário no passado. Nós, na Herta Security passámos a adotar a paralelização nos nossos produtos, desde o início. E desde logo, percebemos que os algoritmos biométricos podem beneficiar muito com a paralelização refinada e com os cálculos vetoriais de dados paralelos. As várias etapas do pipeline biométrico tradicional, como o processo de extração de caraterísticas são inequivocamente paralelas. Contudo, a complexidade dos padrões de acesso de memória de algumas caraterísticas torna estratégias como a reutilização de dados, caching e pré-pesquisa desafiadores. Com o advento da computação GPU, o programador tem agora de lidar com milhões de segmentos simultâneos, fazer a sua sincronização, de forma eficiente e explorar a arquitetura destes dispositivos por forma a reduzir tanto quanto possível a latência. Embora estas tarefas sejam demoradas de perspetiva da pesquisa e desenvolvimento, permitem-nos entregar produtos de boa qualidade que podem ser escaláveis com os últimos avanços em hardware, proporcionando assim uma experiência de utilizador imbatível.