Biometriska Algoritmer i Eran för Parallel Databehandling

10/05/2013
Compartir!

Traditionellt har halvledarindustrin kunnat öka klockfrekvensen för datorenheter med en fördubbling av antalet transistorer för varje ny generation. Tyvärr, på grund kraftbegränsningar, har tillväxten för klockfrekvens avstannat under det senaste årtiondet och stora mikroprocessortillverkare bytte sina produktportföljer för flerkärniga arkitekturer. Moderna grafikprocessorer klarar ännu mer och för närvarande integrerar de hundratals enkekkärniga till en rimlig effektbudget. På grund av det här har mjukvaruföretag kämpat för att anpassa och kartlägga traditionella sekventiella algoritmer som utformats för serieutföranden till dessa nya enheter. Denna parallelluppgift är inte så lätt som man kan tro. Generellt tenderar människor att naturligt tänka på sina handlingar på ett sekventiellt sätt. Är du i stånd att snabbt tänka på hundratals samtidiga handlingar (vissa av dem även beroende av varandra) parallellt? De flesta av de bästa hjärnorna och programmerarna i världen kan det inte. Och detta är rimligt. I vårt dagliga liv, tenderar vi att bli överväldigade på jobbet om vi måste ta itu med nio eller tio viktiga saker på samma gång. Det verkar helt enkelt som om vår hjärna inte är utformad för multitasking. Ju fler uppgifter vi försöker göra parallellt (till exempel svara på e-post samtidigt som vi pratar i telefon), ju mer troligt är det att vi gör fel på grund av bristande uppmärksamhet. Det är anledningen till att det är en så lång och mödosam process att  skriva optimerad och skalbar parallell kod som styr enheter såsom GPUs. När man skriver kod för dessa delar blir det ofta fel och det är svårt att felsöka. Det är inte ovanligt att man spenderar med månader att skriva en effektiv parallell kod för en viss kärnoperation vars version enkelt kan programmeras och testas på ett par dagar.

I denna nya era av parallella beräkningar, måste företag som vill släppa mjukvara som till fullo utnyttjar möjligheterna med den senaste parallella hårdvaran som finns på marknaden helt klart investera mer pengar och resurser än vad som krävts förut. Vi på Herta Security började använda parallell databehandling från början för våra produkter, och snart insåg vi att biometriska algoritmer i hög grad kan dra nytta av finkornig parallell databehandling och parallella datorvektorberäkningar. Flera stadier i den traditionella biometriska pipelinen såsom funktionen att extrahera ansiktsdrag är till sin natur parallella. Men komplexiteten i minnesåtkomstmönster för vissa funktioner gör strategier såsom återanvändning av uppgifter, cachning och prefetch utmanande. Med tillkomsten av GPU-beräkningar, har måste nu programmeraren ta itu med miljontals samtidiga trådar, synkronisera dem, och effektivt utnyttja den heterogena cachearkitekturen hos dessa enheter för att minska latensen så mycket som möjligt. Även om dessa uppgifter är tidskrävande utifrån ett forsknings- och utvecklingsperspektiv, gör de det möjligt för oss att leverera högkvalitativa produkter som skalar fint med de senaste framstegen inom hårdvara samtidigt som de har en oslagbar användarupplevelse.